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;
        }
Exemple #2
0
        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();
 }
Exemple #6
0
        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();
        }
Exemple #9
0
        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, "Метод рассчитал значение прибыли по сделке не правильно");
        }
Exemple #15
0
        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();
        }
Exemple #16
0
        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();
        }
Exemple #17
0
 public void Setup()
 {
     ExecutablePath.InitializeFake(string.Empty);
     quoteFolder = ExecutablePath.ExecPath + "\\quotes";
     TradeSharpDictionary.Initialize(MoqTradeSharpDictionary.Mock);
 }
Exemple #18
0
 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)
            }
                                                                );
        }