public void Setup() { // подготовить свежие котировки QuoteMaker.FillQuoteStorageWithDefaultValues(); // соединение и тестовые данные TradeSharpConnectionPersistent.RestoreCsvFilesInMoqDbFolder(); conn = TradeSharpConnectionPersistent.InitializeTradeSharpConnection(); MakeTestData(); // словари TradeSharpDictionary.Initialize(MoqTradeSharpDictionary.Mock); // тестируемый менеджер ManagerTrade.MakeTestInstance( new Dictionary <string, IDealer> { { testAccount.AccountGroup, new DemoDealer.DemoDealer(new DealerDescription(), conn.ACCOUNT_GROUP.Select(g => g.Code).ToList()) } }); managerTrade = ManagerTrade.Instance; var mockAccountRepository = new Mock <IAccountRepository>(); mockAccountRepository.Setup(s => s.GetAccount(It.IsAny <int>())).Returns( (int id) => LinqToEntity.DecorateAccount(testAccount)); managerTrade.accountRepository = mockAccountRepository.Object; managerTrade.orderRepository = OrderRepository.Instance; }
public void Setup() { // забить котировки QuoteMaker.FillQuoteStorageWithDefaultValues(); // словари TradeSharpDictionary.Initialize(MoqTradeSharpDictionary.Mock); // ордера MakeTestOrders(); // прокси var proxyAccount = ProxyBuilder.Instance.MakeImplementer <ITradeSharpAccount>(true); ((IMockableProxy)proxyAccount).MockMethods.Add( StronglyName.GetMethodName <ITradeSharpAccount>(a => a.GetClosedOrders(0, "", 0, 0)), new Func <int, string, int, int, List <MarketOrder> >((accountId, ticker, startId, maxCount) => testOrders.Where(o => o.Symbol == ticker && o.ID > startId && o.State == PositionState.Closed).Take(maxCount).ToList()) ); List <MarketOrder> opOrders; ((IMockableProxy)proxyAccount).MockMethods.Add( StronglyName.GetMethodName <ITradeSharpAccount>(a => a.GetMarketOrders(0, out opOrders)), new GetMarketOrdersDel((int accountId, out List <MarketOrder> resOrders) => { resOrders = testOrders.Where(o => o.State == PositionState.Opened).ToList(); return(RequestStatus.OK); }) ); TradeSharpAccount.Initialize(proxyAccount); // тестовый счет AccountStatus.Instance.AccountData = new Account { Currency = "USD" }; }
public void InitTest() { // забить котировки QuoteMaker.FillQuoteStorageWithDefaultValues(); // словари TradeSharpDictionary.Initialize(MoqTradeSharpDictionary.Mock); tradeManager = new TradeManager( null, null, QuoteStorage.Instance, accountId => { // ReSharper disable ConvertToLambdaExpression return(LinqToEntity.DecorateAccountGroup(conn.ACCOUNT.First(a => a.ID == accountId).ACCOUNT_GROUP)); // ReSharper restore ConvertToLambdaExpression }); // временно удалить файл начального наполнения (открытые ордера) TradeSharpConnectionPersistent.RestoreCsvFilesInMoqDbFolder(); TradeSharpConnectionPersistent.RenameCsvFilesContainingAccountDataInMoqDbFolder(); conn = TradeSharpConnectionPersistent.InitializeTradeSharpConnection(); MakeTestData(); }
public void Setup() { TradeSharpDictionary.Initialize(MoqTradeSharpDictionary.Mock); conn = TradeSharpConnectionPersistent.InitializeTradeSharpConnection(); QuoteMaker.FillQuoteStorageWithDefaultValues(); platformManager = new PlatformManager(); }
public void TestSetup() { TradeSharpDictionary.Initialize(MoqTradeSharpDictionary.Mock); ExecutablePath.InitializeFake(string.Empty); AtomCandleStorage.Instance.LoadFromFile(ExecutablePath.ExecPath + "\\quotes", Symbol); candles = AtomCandleStorage.Instance.GetAllMinuteCandles(Symbol); quotes = candles.Select(q => new QuoteData(q.close, DalSpot.Instance.GetAskPriceWithDefaultSpread(Symbol, q.close), q.timeOpen)).ToList(); }
public void TestSetup() { connectionPersistent = TradeSharpConnectionPersistent.InitializeTradeSharpConnection(); TradeSharpDictionary.Initialize(MoqTradeSharpDictionary.Mock); walletManager = new WalletManager(); DatabaseContext.InitializeFake(connectionPersistent); }
public void TestSetup() { // Инициализируем методы GetTickers, GetMetadataByCategory, GetAccountGroupsWithSessionInfo TradeSharpDictionary.Initialize(MoqTradeSharpDictionary.Mock); // Инициализируем словарь котировок dailyQuoteStorage = new DailyQuoteStorage(); dailyQuoteStorage.InitializeFake(QuoteMaker.MakeQuotesForQuoteDailyStorage(null)); // Готовим объекты, которые будем тестировать и на которых будем тестировать curveCalculator = new EquityCurveCalculator(); }
public void InitTest() { // забить котировки QuoteMaker.FillQuoteStorageWithDefaultValues(); // словари TradeSharpDictionary.Initialize(MoqTradeSharpDictionary.Mock); // временно удалить файл начального наполнения (открытые ордера) TradeSharpConnectionPersistent.RestoreCsvFilesInMoqDbFolder(); //TradeSharpConnectionPersistent.RenameCsvFilesContainingAccountDataInMoqDbFolder(); conn = TradeSharpConnectionPersistent.InitializeTradeSharpConnection(); MakeTestData(); }
public void Setup() { // Mock для словаря метаданных TradeSharpDictionary.Initialize(MoqTradeSharpDictionary.Mock); MakeGaps(); // подготовить список котировок для "клиента" и "сервера" var allCandles = new List <CandleData>(); var clientCandles = new List <CandleData>(); var index = 0; for (var time = timeHistStart; time <= timeNow; time = time.AddMinutes(1)) { // проверить попадание в дырку на сервере if (serverGaps.Any(g => g.IsIn(time))) { continue; } if (DaysOff.Instance.IsDayOff(time)) { continue; } var o = (float)Math.Sin((index++) / 15.0); var candle = new CandleData(o, o + 0.001f, o - 0.003f, o - 0.001f, time, time.AddMinutes(1)); allCandles.Add(candle); if (time > timeFileEnd) { continue; } // проверить попадание в дырку на клиенте if (clientGaps.Any(g => g.IsIn(time))) { continue; } clientCandles.Add(candle); } // поместить его в "локальное хранилище" AtomCandleStorage.Instance.RewriteCandles(Ticker, clientCandles); // инициализировать хранилище котировок moq = MoqQuoteStorage.MakeMoq(new Dictionary <string, List <CandleData> > { { Ticker, allCandles } }); QuoteStorage.Initialize(moq.Object); }
public void Setup() { conn = TradeSharpConnectionPersistent.InitializeTradeSharpConnection(); // подготовить свежие котировки QuoteMaker.FillQuoteStorageWithDefaultValues(); // словари TradeSharpDictionary.Initialize(MoqTradeSharpDictionary.Mock); ManagerTrade.MakeTestInstance(); testManager = ManagerAccount.Instance; // тестовые данные MakeTestData(); }
public void Setup() { // подготовить свежие котировки QuoteMaker.FillQuoteStorageWithDefaultValues(); // словари TradeSharpDictionary.Initialize(MoqTradeSharpDictionary.Mock); // замочить прокси MakeTradeSharpAccountProxy(); MakeTradeSharpServerTradeProxy(); tradeManager = new TradeManager( fakeServerTrade, fakeAccountManager, QuoteStorage.Instance, accountId => testGroup); }
public void Setup() { conn = TradeSharpConnectionPersistent.InitializeTradeSharpConnection(); ManagerTrade.MakeTestInstance(); subscriber = (from usr in conn.PLATFORM_USER join w in conn.WALLET on usr.ID equals w.User join pa in conn.PLATFORM_USER_ACCOUNT on usr.ID equals pa.PlatformUser where pa.RightsMask == (int)AccountRights.Управление && w.Currency == SubscriberCurx && w.Balance > 40 select usr).First(); CreateServiceWithOwner("USD", 5, out serviceOwnerUsd, out serviceUsd); CreateServiceWithOwner("RUB", 25, out serviceOwnerRub, out serviceRub); QuoteStorage.Instance.UpdateValues("USDRUB", new QuoteData(35.20f, 35.20f, DateTime.Now)); // словари TradeSharpDictionary.Initialize(MoqTradeSharpDictionary.Mock); }
public void InitContext() { TradeSharpDictionary.Initialize(MoqTradeSharpDictionary.Mock); context = TestRobotUtil.GetRobotContextBacktest(new DateTime(2013, 9, 30), new DateTime(2014, 1, 30), currency: "IND"); bot = new IchimokuRobot(); bot.Graphics.Clear(); bot.Graphics.Add(new Cortege2 <string, BarSettings>("INDUSD", new BarSettings { StartMinute = 0, Intervals = new List <int> { 30 } })); bot.Initialize(context, CurrentProtectedContext.Instance); ExecutablePath.InitializeFake(string.Empty); }
public void CalculateProfitInDepoCurx() { const int volume = 10000; var deal = new MarketOrder { Symbol = "USDRUB", Volume = volume, Side = 1, PriceEnter = 1.3290f, TimeEnter = DateTime.Now.AddMinutes(-60 * 24 * 3), State = PositionState.Opened, ExpertComment = "", MasterOrder = 10001 }; var dicQuote = new Dictionary <string, List <QuoteData> >(); var quoteArc = new QuoteArchive(dicQuote); const float profit = 1000f; var volumeUsd = curveCalculator.CalculateProfitInDepoCurx(true, profit, deal.Symbol, "USD", quoteArc, DateTime.Now); Assert.AreEqual(profit, volumeUsd, "При совпадении валюты депозита и сделки, метод не вернул правильное значение прибыли по сделке"); var volumeRub = curveCalculator.CalculateProfitInDepoCurx(true, profit, deal.Symbol + "f", "RUB", quoteArc, DateTime.Now); Assert.AreEqual(0, volumeRub, "При отсутствии тикеров валют, метод не вернул правильное значение прибыли по сделке"); TradeSharpDictionary.Initialize(MoqTradeSharpDictionary.Mock); // возвращаем обратно реализацию метода GetTickers var volumeNoQuote = curveCalculator.CalculateProfitInDepoCurx(false, profit, deal.Symbol, "RUB", quoteArc, DateTime.Now); Assert.AreEqual(profit, volumeNoQuote, "При отсутствии котировок, метод не вернул правильное значение прибыли по сделке"); foreach (var smb in DalSpot.Instance.GetTickerNames()) { dicQuote.Add(smb, dailyQuoteStorage.GetQuotes(smb).Select(q => new QuoteData(q.b, q.b, q.a)).ToList()); } var volumeQuote = curveCalculator.CalculateProfitInDepoCurx(true, profit, deal.Symbol, "RUB", new QuoteArchive(dicQuote), dicQuote["USDRUB"].First().time); //TODO значение "32369.2012" не расчитывалось в ручную, а просто скопировано, что бы тест не валился (это нужно исправить) Assert.AreEqual(32369.2012f, volumeQuote, "Метод рассчитал значение прибыли по сделке не правильно"); }
public void TestSetup() { TradeSharpDictionary.Initialize(MoqTradeSharpDictionary.Mock); context = TestRobotUtil.GetRobotContextBacktest(new DateTime(2013, 12, 25), new DateTime(2013, 12, 25).AddDays(30)); bot = new VoidRobot(); bot.Graphics.Add(new Cortege2 <string, BarSettings>("EURUSD", new BarSettings { StartMinute = 0, Intervals = new List <int> { 30 } })); bot.Initialize(context, CurrentProtectedContext.Instance); ExecutablePath.InitializeFake(string.Empty); context.SubscribeRobot(bot); context.InitiateTest(); // Инициализация дополнительных объектом, MOCK-и QuoteMaker.FillQuoteStorageWithDefaultValues(); }
public void InitContext() { TradeSharpDictionary.Initialize(MoqTradeSharpDictionary.Mock); context = TestRobotUtil.GetRobotContextBacktest(new DateTime(2013, 12, 25), new DateTime(2013, 12, 25).AddDays(30)); bot = new RobotMA { RangeFastMA = 5, RangeSlowMA = 15, DeriveSiteFromHistory = true }; bot.Graphics.Add(new Cortege2 <string, BarSettings>("EURUSD", new BarSettings { StartMinute = 0, Intervals = new List <int> { 30 } })); bot.Initialize(context, CurrentProtectedContext.Instance); ExecutablePath.InitializeFake(string.Empty); context.SubscribeRobot(bot); context.InitiateTest(); }
public void Setup() { ExecutablePath.InitializeFake(string.Empty); quoteFolder = ExecutablePath.ExecPath + "\\quotes"; TradeSharpDictionary.Initialize(MoqTradeSharpDictionary.Mock); }
public void SetupMethods() { TradeSharpDictionary.Initialize(MoqTradeSharpDictionary.Mock); }
public void Setup() { // словари TradeSharpDictionary.Initialize(MoqTradeSharpDictionary.Mock); // заглушки для диалогов - выбора пользователей UserServiceRegistrator.DialogBoxProvider = new TestDialogBoxProvider(); // серверный (торговый) прокси fakeTradeServer = ProxyBuilder.Instance.GetImplementer <ITradeSharpServerTrade>(); List <Account> accounts; var getUserOwnedAccountsWithActualBalanceMethodName = ProxyBuilder.GetMethodName <ITradeSharpServerTrade>(a => a.GetUserOwnedAccountsWithActualBalance("", null, false, out accounts)); ((IMockableProxy)fakeTradeServer).MockMethods.Add(getUserOwnedAccountsWithActualBalanceMethodName, new GetUserOwnedAccountsWithActualBalanceDel((string login, ProtectedOperationContext secCtx, bool realOnly, out List <Account> acts) => { acts = new List <Account> { new Account { Balance = 12000, Currency = "USD", ID = 51, Group = "Real" }, new Account { Balance = 2000, Currency = "USD", ID = 52, Group = "Real" } }; return(AuthenticationResponse.OK); })); MainForm.serverProxyTrade = new TradeSharpServerTrade(fakeTradeServer); // кошельковый прокси fakeWalletManager = ProxyBuilder.Instance.GetImplementer <IWalletManager>(); ((IMockableProxy)fakeWalletManager).MockMethods.Add(StronglyName.GetMethodName <IWalletManager>( w => w.GetUserWallet(null, null)), new Func <ProtectedOperationContext, string, Wallet>( (context, s) => new Wallet { Balance = 1005, Currency = "USD", User = 50 })); WalletError walletError; var registerOrUpdateServiceMethodName = ProxyBuilder.GetMethodName <IWalletManager>(w => w.RegisterOrUpdateService( null, null, out walletError)); ((IMockableProxy)fakeWalletManager).MockMethods.Add(registerOrUpdateServiceMethodName, new RegisterOrUpdateServiceDel( (ProtectedOperationContext ctx, PaidService service, out WalletError error) => { error = WalletError.OK; return(true); })); TradeSharpWalletManager.Initialize(fakeWalletManager); }
public void Setup() { // подыграть за торговый контракт SetupFakeServer(); // инициализировать словари (прежде всего - словарь тикеров) TradeSharpDictionary.Initialize(MoqTradeSharpDictionary.Mock); connection = TradeSharpConnectionPersistent.InitializeTradeSharpConnection(); // пользователь - владелец тестового сервиса var ownerUser = new PLATFORM_USER { Email = "*****@*****.**", Login = "******", Title = "Vafel", RoleMask = 0, Password = "******", RegistrationDate = DateTime.Now }; connection.PLATFORM_USER.Add(ownerUser); connection.SaveChanges(); // добавить категорию сигналов var srv = new SERVICE { FixedPrice = 0, Currency = "USD", User = ownerUser.ID }; connection.SERVICE.Add(srv); connection.SaveChanges(); serviceId = srv.ID; // добавить пользователя var user = new PLATFORM_USER { Email = "*****@*****.**", Login = "******", Password = "******", Title = "test", RegistrationDate = DateTime.Now }; connection.PLATFORM_USER.Add(user); connection.SaveChanges(); testUserId = user.ID; // добавить счет и сделок var group = connection.ACCOUNT_GROUP.First(g => !g.IsReal); var account = new ACCOUNT { AccountGroup = group.Code, Currency = AccountCurrency, Balance = 30000 }; connection.ACCOUNT.Add(account); connection.SaveChanges(); testAccountId = account.ID; // назначить пользователя владельцем счета connection.PLATFORM_USER_ACCOUNT.Add(new PLATFORM_USER_ACCOUNT { Account = testAccountId, PlatformUser = testUserId, RightsMask = (int)AccountRights.Управление }); // подписать счет на сигнал connection.SUBSCRIPTION.Add(new SUBSCRIPTION { User = testUserId, Service = serviceId, RenewAuto = true, TimeEnd = DateTime.Now.Date.AddDays(1) }); connection.SUBSCRIPTION_SIGNAL.Add(new SUBSCRIPTION_SIGNAL { User = testUserId, Service = serviceId, AutoTrade = true, PercentLeverage = 120, MinVolume = 10000, TargetAccount = testAccountId }); connection.SaveChanges(); // позиции MakeOrdersForTest(); foreach (var order in ordersForTest) { var pos = LinqToEntity.UndecorateOpenedPosition(order); connection.POSITION.Add(pos); } connection.SaveChanges(); // прописать срез котировок var nowTime = DateTime.Now; Contract.Util.BL.QuoteStorage.Instance.UpdateValues(new [] { "EURUSD", "GBPUSD", "USDJPY", "EURGBP" }, new [] { new QuoteData(1.3820f, 1.3822f, nowTime), new QuoteData(1.5350f, 1.5354f, nowTime), new QuoteData(90.81f, 90.83f, nowTime), new QuoteData(1.1107f, 1.1112f, nowTime) } ); }