Example #1
0
        public void TestSubscribeThenUpdateSettingsThenUnsubscribe()
        {
            // проверить наличие отсутствия подписки
            RemoveSubscriptionIfAny(serviceUsd.ID);
            var tradeManager = ManagerTrade.Instance;

            WalletError error;
            var         tradeSets = AutoTradeSettingsSampler.MakeSampleTradeSettings();

            tradeSets.TargetAccount = conn.PLATFORM_USER_ACCOUNT.First(pa => pa.PlatformUser == subscriber.ID).Account;

            tradeManager.SubscribeOnService(ProtectedOperationContext.MakeServerSideContext(),
                                            subscriber.Login, serviceUsd.ID, true, false, tradeSets,
                                            out error);
            Assert.AreEqual(WalletError.OK, error, "Тест подписки/модификации/отписки: подписка прошла");
            var signalSubSets = conn.SUBSCRIPTION_SIGNAL.FirstOrDefault(v => v.User == subscriber.ID);

            Assert.IsNotNull(signalSubSets, "Тест подписки/модификации/отписки: настройки созданы");
            var wrongFields = AutoTradeSettingsSampler.TradeSignalSetsAreCorrect(tradeSets, signalSubSets);

            if (!string.IsNullOrEmpty(wrongFields))
            {
                Assert.Fail("Тест подписки/модификации/отписки: настройки не сохранены: " + wrongFields);
            }

            tradeSets.MinVolume   = 10000;
            tradeSets.MaxLeverage = 8;
            tradeSets.StepVolume  = 10000;
            // модифицировать настройки авто-торговли
            tradeManager.SubscribeOnService(ProtectedOperationContext.MakeServerSideContext(),
                                            subscriber.Login, serviceUsd.ID, true, false, tradeSets,
                                            out error);
            Assert.AreEqual(WalletError.OK, error, "Тест подписки/модификации/отписки: обновление прошло");

            signalSubSets = conn.SUBSCRIPTION_SIGNAL.FirstOrDefault(v => v.User == subscriber.ID);
            wrongFields   = AutoTradeSettingsSampler.TradeSignalSetsAreCorrect(tradeSets, signalSubSets);
            if (!string.IsNullOrEmpty(wrongFields))
            {
                Assert.Fail("Тест подписки/модификации/отписки: настройки не обновлены: " + wrongFields);
            }

            // отписаться
            tradeManager.SubscribeOnService(ProtectedOperationContext.MakeServerSideContext(),
                                            subscriber.Login, serviceUsd.ID, true, true, tradeSets,
                                            out error);
            Assert.AreEqual(WalletError.OK, error, "Тест подписки/модификации/отписки: удаление подписки прошло");
            Assert.IsFalse(conn.SUBSCRIPTION_SIGNAL.Any(ss => ss.User == subscriber.ID && ss.Service == serviceUsd.ID), "Тест отписки: SUBSCRIPTION_SIGNAL удалена");
            Assert.IsFalse(conn.SUBSCRIPTION.Any(ss => ss.User == subscriber.ID && ss.Service == serviceUsd.ID), "Тест отписки: SUBSCRIPTION удалена");
        }
        public void TestSubscribeOnCustomPortfolio()
        {
            var managerTrade = ManagerTrade.Instance;
            var portfolio    = new TopPortfolio
            {
                Criteria         = "P",
                DescendingOrder  = true,
                ParticipantCount = 6,
                Name             = "UserGeniusExclusiveTop",
            };
            var tradeSets = AutoTradeSettingsSampler.MakeSampleTradeSettings();

            tradeSets.TargetAccount = conn.PLATFORM_USER_ACCOUNT.First(pa => pa.PlatformUser == subscriber.ID).Account;
            var status = managerTrade.SubscribeOnPortfolio(ProtectedOperationContext.MakeServerSideContext(),
                                                           subscriber.Login, portfolio, null, tradeSets);

            Assert.AreEqual(RequestStatus.OK, status, "SubscribeOnPortfolio - удалось подписаться");
            // проверить количество подписок
            var userSubsCount = conn.SUBSCRIPTION.Count(s => s.User == subscriber.ID);

            Assert.AreEqual(portfolio.ParticipantCount, userSubsCount, "SubscribeOnPortfolio - подписался на всех в портфеле");

            // проверить настройки авто-торговли
            var subSettings = conn.SUBSCRIPTION_SIGNAL.First(ss => ss.User == subscriber.ID);
            var wrongFields = AutoTradeSettingsSampler.TradeSignalSetsAreCorrect(tradeSets, subSettings);

            if (!string.IsNullOrEmpty(wrongFields))
            {
                Assert.Fail("SubscribeOnPortfolio - настройки авто-торговли не сохранены в подписке: " + wrongFields);
            }

            // настройки авто-торговли для самого портфеля
            var portfolioTradeSets = (from upf in conn.USER_TOP_PORTFOLIO
                                      join pf in conn.TOP_PORTFOLIO on upf.Portfolio equals pf.Id
                                      where upf.User == subscriber.ID
                                      select upf).FirstOrDefault();

            Assert.IsNotNull(portfolioTradeSets, "SubscribeOnPortfolio - портфель создан");
            var portfolioSignalSets = new SUBSCRIPTION_SIGNAL
            {
                AutoTrade            = portfolioTradeSets.AutoTrade,
                MaxLeverage          = portfolioTradeSets.MaxLeverage,
                PercentLeverage      = portfolioTradeSets.PercentLeverage,
                HedgingOrdersEnabled = portfolioTradeSets.HedgingOrdersEnabled,
                FixedVolume          = portfolioTradeSets.FixedVolume,
                MinVolume            = portfolioTradeSets.MinVolume,
                MaxVolume            = portfolioTradeSets.MaxVolume,
                VolumeRound          = portfolioTradeSets.VolumeRound,
                StepVolume           = portfolioTradeSets.StepVolume,
                TargetAccount        = portfolioTradeSets.TargetAccount
            };

            wrongFields = AutoTradeSettingsSampler.TradeSignalSetsAreCorrect(tradeSets, portfolioSignalSets);
            if (!string.IsNullOrEmpty(wrongFields))
            {
                Assert.Fail("SubscribeOnPortfolio - настройки авто-торговли не сохранены в портфеле: " + wrongFields);
            }

            // отписаться от портфеля
            status = managerTrade.UnsubscribePortfolio(ProtectedOperationContext.MakeServerSideContext(),
                                                       subscriber.Login, true, true);
            Assert.AreEqual(RequestStatus.OK, status, "SubscribeOnPortfolio - удалось отписаться");
            userSubsCount = conn.SUBSCRIPTION.Count(s => s.User == subscriber.ID);
            Assert.AreEqual(0, userSubsCount, "SubscribeOnPortfolio - отписался ото всех в портфеле");
        }