Exemplo n.º 1
0
        private void ShowSignallerStat(Contract.Entity.Subscription cat)
        {
            // получить счет перформера по кат. сигнала
            PerformerStat stat = null;

            try
            {
                stat = TradeSharpAccountStatistics.Instance.proxy.GetPerformerStatBySignalCatId(cat.Service);
            }
            catch (Exception ex)
            {
                MessageBox.Show(Localizer.GetString("MessageCannotGetSubscribersInfo"));
                Logger.Info("ShowSignallerStat", ex);
                return;
            }

            if (stat == null)
            {
                return;
            }
            var form = new SubscriberStatisticsForm(stat);

            //form.EnterRoomRequested += OnEnterRoomRequested;
            form.Show(this);
        }
Exemplo n.º 2
0
        private void GridUserHitCell(object sender, MouseEventArgs e, int rowIndex, FastColumn col)
        {
            if (e.Button != MouseButtons.Left)
            {
                return;
            }

            var sets = (Contract.Entity.Subscription)grid.rows[rowIndex].ValueObject;

            selectedCategory = sets;

            // действие со счетом
            if (col.Tag == contextMenu || col.PropertyName == emptySubs.Property(s => s.Title))
            {
                var pointTop = grid.GetCellCoords(col, rowIndex);
                contextMenu.Show(grid, pointTop);
                return;
            }

            // настроить торговлю
            if (col.PropertyName == emptySubs.Property(s => s.TradeAuto))
            {
                EditTradeSettings();
            }
        }
Exemplo n.º 3
0
        private void UpdateOrRemoveSubscription(Contract.Entity.Subscription sub, bool remove)
        {
            var isOk  = false;
            var error = WalletError.CommonError;

            try
            {
                isOk = MainForm.serverProxyTrade.proxy.SubscribeOnService(
                    CurrentProtectedContext.Instance.MakeProtectedContext(),
                    AccountStatus.Instance.Login,
                    sub.Service, sub.RenewAuto, remove, sub.AutoTradeSettings, out error);
            }
            catch (Exception ex)
            {
                Logger.ErrorFormat("GridSubscriptionOnUserHitCell - ошибка в GridSubscriptionOnUserHitCell({0}): {1}",
                                   sub.Service, ex);
            }
            if (!isOk)
            {
                MessageBox.Show((remove ? "Ошибка при отключении подписки: " : "Ошибка обновления подписки: ")
                                + EnumFriendlyName <WalletError> .GetString(error), "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                // обновить состояние подписки и кошелька
                SubscriptionModel.Instance.LoadSubscribedCategories();
                InitiateAsynchLoad();
            }
        }
Exemplo n.º 4
0
        public void TestModifyingSubscriptions()
        {
            var modelIsLoadedCalledCount = 0;

            SubscriptionModel.Instance.ModelIsLoaded += list =>
            {
                modelIsLoadedCalledCount++;
            };
            var modelStateChangedCalledCount = 0;

            SubscriptionModel.Instance.ModelStateChanged += b =>
            {
                modelStateChangedCalledCount++;
            };

            // прочитать подписку
            try
            {
                SubscriptionModel.Instance.LoadSubscribedCategories();
            }
            catch (Exception ex)
            {
                Assert.Fail("LoadSubscribedCategories() failed: " + ex.Message);
            }

            var cats = SubscriptionModel.Instance.SubscribedCategories;

            Assert.IsNotNull(cats, "cats from server are not null");
            Assert.AreEqual(1, cats.Count, "cats from server are not empty");
            Assert.AreEqual(1, modelIsLoadedCalledCount, "model loaded just once");
            Assert.AreEqual(0, modelStateChangedCalledCount, "model state is not changed");

            // обновить подписку
            var newCat = new Contract.Entity.Subscription
            {
                Service     = 2,
                PaidService = new PaidService
                {
                    Id      = 2,
                    Comment = "+100500 profit"
                }
            };

            SubscriptionModel.Instance.AddSubscription(newCat);
            var firstCat = SubscriptionModel.Instance.SubscribedCategories[0];

            firstCat.AutoTradeSettings.PercentLeverage = 66;
            SubscriptionModel.Instance.ModifySubscription(firstCat);
            Assert.AreEqual(SubscriptionModel.Instance.WasModified, true, "state changed to Modified");
            // сохранить изменения
            SubscriptionModel.Instance.SaveSubscribedCategories();

            // проверить, сохранились ли изменения
            var updatedSubs = SubscriptionModel.Instance.SubscribedCategories;

            Assert.AreEqual(2, updatedSubs.Count, "2 subscriptions after update");
            var updatedFirstCat  = updatedSubs[0];
            var updatedSecondCat = updatedSubs[1];

            Assert.AreEqual(firstCat.AutoTradeSettings.PercentLeverage, updatedFirstCat.AutoTradeSettings.PercentLeverage, "modifications are saved");
            Assert.AreEqual(newCat.Title, updatedSecondCat.Title, "new sub is unchanged");
            Assert.AreEqual(SubscriptionModel.Instance.WasModified, false, "state changed to Unmodified");
        }
Exemplo n.º 5
0
        private void MakeMoq()
        {
            serverCats = new List <Contract.Entity.Subscription>
            {
                new Contract.Entity.Subscription
                {
                    Service     = 1,
                    PaidService = new PaidService
                    {
                        Comment = "Test signals",
                    },
                    AutoTradeSettings = new AutoTradeSettings
                    {
                        PercentLeverage = 50,
                        MaxLeverage     = 10,
                        MinVolume       = 10000,
                        StepVolume      = 5000,
                        TradeAuto       = true,
                    }
                }
            };

            fakeTradeServer  = ProxyBuilder.Instance.GetImplementer <ITradeSharpServerTrade>();
            fakeTradeAccount = ProxyBuilder.Instance.GetImplementer <ITradeSharpAccount>();


            WalletError walletError;
            var         bindToTradeSignal = ProxyBuilder.GetMethodName <ITradeSharpServerTrade>(a => a.SubscribeOnService(
                                                                                                    null, "", 0, false, false, null, out walletError));

            ((IMockableProxy)fakeTradeServer).MockMethods.Add(bindToTradeSignal,
                                                              new GetAccountInfoDel((ProtectedOperationContext secCtx, string userLogin, int serviceId, bool renewAuto,
                                                                                     bool unsb, AutoTradeSettings sets, out WalletError error) =>
            {
                error = WalletError.OK;
                // модифицировать подписки
                var indexExists = serverCats.FindIndex(c => c.Service == serviceId);
                if (indexExists >= 0)
                {
                    if (unsb)
                    {
                        serverCats.RemoveAt(indexExists);
                    }
                    else
                    {
                        var subs = new Contract.Entity.Subscription
                        {
                            Service           = serviceId,
                            AutoTradeSettings = sets,
                            RenewAuto         = renewAuto,
                            PaidService       = new PaidService
                            {
                                Id = serviceId
                            }
                        };
                        serverCats[indexExists] = subs;
                        serverCats.Add(subs);
                    }
                    return(true);
                }

                return(true);
            }));


            var getTradeSignalsSubscribed = ProxyBuilder.GetMethodName <ITradeSharpAccount>(a => a.GetSubscriptions(""));

            ((IMockableProxy)fakeTradeAccount).MockMethods.Add(getTradeSignalsSubscribed, new Func <string, List <Contract.Entity.Subscription> >(userLogin =>
            {
                return(userLogin == "Demo"
                   ? serverCats
                   : new List <Contract.Entity.Subscription>());
            }));
        }
Exemplo n.º 6
0
        private void SetupGrids()
        {
            var fontBold     = new Font(Font, FontStyle.Bold);
            var dataSpeciman = new AccountShared(new Account(), true);

            // счета
            gridAccount.Columns.Add(new FastColumn(dataSpeciman.Property(s => s.AccountId), "#")
            {
                SortOrder   = FastColumnSort.Ascending,
                ColumnWidth = 60
            });
            gridAccount.Columns.Add(new FastColumn(dataSpeciman.Property(s => s.IsOwnAccount), Localizer.GetString("TitleOwner"))
            {
                ColumnMinWidth = 60,
                formatter      = value => (bool)value ? Localizer.GetString("TitleYes") : ""
            });
            gridAccount.Columns.Add(new FastColumn(dataSpeciman.Property(s => s.SharePercent), Localizer.GetString("TitlePercent"))
            {
                ColumnMinWidth = 75,
                formatter      = value =>
                {
                    var percent = ((decimal)value);
                    return(percent == 100 ? "100 %" : percent.ToString("f5") + "%");
                }
            });
            gridAccount.Columns.Add(new FastColumn(dataSpeciman.Property(s => s.ShareMoneyWallet), Localizer.GetString("TitleSum"))
            {
                ColumnMinWidth = 75,
                formatter      = value => ((decimal)value).ToStringUniformMoneyFormat()
            });

            gridAccount.Columns.Add(new FastColumn(dataSpeciman.Property(s => s.IsOwnAccount), Localizer.GetString("TitleChart"))
            {
                Tag                    = ColumnTagChart,
                ColumnMinWidth         = 60,
                ImageList              = imageListGridChart,
                IsHyperlinkStyleColumn = true,
                HyperlinkActiveCursor  = Cursors.Hand,
            });

            gridAccount.Columns.Add(new FastColumn(dataSpeciman.Property(s => s.IsOwnAccount), Localizer.GetString("TitleDeposit"))
            {
                Tag                      = ColumnTagDeposit,
                SortOrder                = FastColumnSort.Ascending,
                ColumnWidth              = 70,
                IsHyperlinkStyleColumn   = true,
                HyperlinkActiveCursor    = Cursors.Hand,
                ColorHyperlinkTextActive = Color.Blue,
                HyperlinkFontActive      = fontBold,
                formatter                = valueObject => Localizer.GetString("TitleDeposit")
            });
            gridAccount.Columns.Add(new FastColumn(dataSpeciman.Property(s => s.IsOwnAccount), Localizer.GetString("TitleWithdraw"))
            {
                Tag                      = ColumnTagWithdraw,
                SortOrder                = FastColumnSort.Ascending,
                ColumnWidth              = 63,
                IsHyperlinkStyleColumn   = true,
                HyperlinkActiveCursor    = Cursors.Hand,
                ColorHyperlinkTextActive = Color.Blue,
                HyperlinkFontActive      = fontBold,
                formatter                = valueObject => Localizer.GetString("TitleWithdraw")
            });
            gridAccount.UserHitCell += GridAccountOnUserHitCell;
            gridAccount.CheckSize();

            // подписки
            var blank = new Contract.Entity.Subscription();

            gridSubscription.Columns.Add(new FastColumn(blank.Property(p => p.PaidService), Localizer.GetString("TitleService"))
            {
                Tag                      = PaidServiceType.Signals,
                SortOrder                = FastColumnSort.Ascending,
                ColumnMinWidth           = 65,
                IsHyperlinkStyleColumn   = true,
                HyperlinkActiveCursor    = Cursors.Hand,
                ColorHyperlinkTextActive = Color.Blue,
                HyperlinkFontActive      = fontBold,
                formatter                = valueObject =>
                {
                    var srv = (PaidService)valueObject;
                    return(EnumFriendlyName <PaidServiceType> .GetString(srv.ServiceType) +
                           (string.IsNullOrEmpty(srv.Comment) ? "" : " (" + srv.Comment + ")"));
                }
            });
            gridSubscription.Columns.Add(new FastColumn(blank.Property(p => p.TimeStarted), Localizer.GetString("TitleBeginning"))
            {
                ColumnMinWidth = 75
            });
            gridSubscription.Columns.Add(new FastColumn(blank.Property(p => p.TimeEnd), Localizer.GetString("TitleEnd"))
            {
                ColumnMinWidth = 75
            });
            gridSubscription.Columns.Add(new FastColumn(blank.Property(p => p.PaidService), Localizer.GetString("TitleCost"))
            {
                ColumnMinWidth = 70,
                formatter      = valueObject =>
                {
                    var srv = (PaidService)valueObject;
                    if (srv.ServiceType == PaidServiceType.Signals)
                    {
                        return(srv.FixedPrice == 0
                                   ? "-"
                                   : srv.FixedPrice.ToStringUniformMoneyFormat(true) + " / " +
                               PaidService.GetMonthFeeFromDailyFee(srv.FixedPrice) + " " +
                               srv.Currency);
                    }
                    if (srv.ServiceType == PaidServiceType.PAMM)
                    {
                        if (srv.serviceRates.Count == 0)
                        {
                            return("-");
                        }
                        if (srv.serviceRates.Count == 1)
                        {
                            return(srv.serviceRates[0].Amount.ToStringUniformMoneyFormat(true) + "%");
                        }
                        return
                        (srv.serviceRates[srv.serviceRates.IndexOfMin(r =>
                                                                      r.Amount)].Amount.ToStringUniformMoneyFormat(true) + "% ... " +
                         srv.serviceRates[srv.serviceRates.IndexOfMin(r =>
                                                                      - r.Amount)].Amount.ToStringUniformMoneyFormat(true) + "%");
                    }
                    return("");
                }
            });
            gridSubscription.Columns.Add(new FastColumn(blank.Property(p => p.RenewAuto), Localizer.GetString("TitleProlong"))
            {
                ColumnWidth            = 61,
                formatter              = v => (bool)v ? Localizer.GetString("TitleProlong") : Localizer.GetString("TitleNo"),
                IsHyperlinkStyleColumn = true,
                HyperlinkActiveCursor  = Cursors.Hand,
                HyperlinkFontActive    = fontBold,
                Tag = true
            });
            gridSubscription.Columns.Add(new FastColumn(blank.Property(p => p.RenewAuto), Localizer.GetString("TitleTurnOff"))
            {
                ColumnWidth            = 57,
                ImageList              = imageListGrid,
                IsHyperlinkStyleColumn = true,
                HyperlinkActiveCursor  = Cursors.Hand
            });
            gridSubscription.UserHitCell += GridSubscriptionOnUserHitCell;
            gridSubscription.CheckSize();

            summaryTransfersFastGrid.Columns.Add(new FastColumn("a", " "));
            summaryTransfersFastGrid.Columns.Add(new FastColumn("b", Localizer.GetString("TitleTransactions")));
            summaryTransfersFastGrid.Columns.Add(new FastColumn("c", Localizer.GetString("TitleSum")));
        }
Exemplo n.º 7
0
        private void SetupGrids()
        {
            var fontBold = new Font(Font, FontStyle.Bold);
            var dataSpeciman = new AccountShared(new Account(), true);

            // счета
            gridAccount.Columns.Add(new FastColumn(dataSpeciman.Property(s => s.AccountId), "#")
            {
                SortOrder = FastColumnSort.Ascending,
                ColumnWidth = 60
            });
            gridAccount.Columns.Add(new FastColumn(dataSpeciman.Property(s => s.IsOwnAccount), Localizer.GetString("TitleOwner"))
            {
                ColumnMinWidth = 60,
                formatter = value => (bool) value ? Localizer.GetString("TitleYes") : ""
            });
            gridAccount.Columns.Add(new FastColumn(dataSpeciman.Property(s => s.SharePercent), Localizer.GetString("TitlePercent"))
            {
                ColumnMinWidth = 75,
                formatter = value =>
                    {
                        var percent = ((decimal) value);
                        return percent == 100 ? "100 %" : percent.ToString("f5") + "%";
                    }
            });
            gridAccount.Columns.Add(new FastColumn(dataSpeciman.Property(s => s.ShareMoneyWallet), Localizer.GetString("TitleSum"))
            {
                ColumnMinWidth = 75,
                formatter = value => ((decimal) value).ToStringUniformMoneyFormat()
            });

            gridAccount.Columns.Add(new FastColumn(dataSpeciman.Property(s => s.IsOwnAccount), Localizer.GetString("TitleChart"))
            {
                Tag = ColumnTagChart,
                ColumnMinWidth = 60,
                ImageList = imageListGridChart,
                IsHyperlinkStyleColumn = true,
                HyperlinkActiveCursor = Cursors.Hand,
            });

            gridAccount.Columns.Add(new FastColumn(dataSpeciman.Property(s => s.IsOwnAccount), Localizer.GetString("TitleDeposit"))
            {
                Tag = ColumnTagDeposit,
                SortOrder = FastColumnSort.Ascending,
                ColumnWidth = 70,
                IsHyperlinkStyleColumn = true,
                HyperlinkActiveCursor = Cursors.Hand,
                ColorHyperlinkTextActive = Color.Blue,
                HyperlinkFontActive = fontBold,
                formatter = valueObject => Localizer.GetString("TitleDeposit")
            });
            gridAccount.Columns.Add(new FastColumn(dataSpeciman.Property(s => s.IsOwnAccount), Localizer.GetString("TitleWithdraw"))
            {
                Tag = ColumnTagWithdraw,
                SortOrder = FastColumnSort.Ascending,
                ColumnWidth = 63,
                IsHyperlinkStyleColumn = true,
                HyperlinkActiveCursor = Cursors.Hand,
                ColorHyperlinkTextActive = Color.Blue,
                HyperlinkFontActive = fontBold,
                formatter = valueObject => Localizer.GetString("TitleWithdraw")
            });
            gridAccount.UserHitCell += GridAccountOnUserHitCell;
            gridAccount.CheckSize();

            // подписки
            var blank = new Contract.Entity.Subscription();
            gridSubscription.Columns.Add(new FastColumn(blank.Property(p => p.PaidService), Localizer.GetString("TitleService"))
            {
                Tag = PaidServiceType.Signals,
                SortOrder = FastColumnSort.Ascending,
                ColumnMinWidth = 65,
                IsHyperlinkStyleColumn = true,
                HyperlinkActiveCursor = Cursors.Hand,
                ColorHyperlinkTextActive = Color.Blue,
                HyperlinkFontActive = fontBold,
                formatter = valueObject =>
                {
                    var srv = (PaidService) valueObject;
                    return EnumFriendlyName<PaidServiceType>.GetString(srv.ServiceType) +
                           (string.IsNullOrEmpty(srv.Comment) ? "" : " (" + srv.Comment + ")");
                }
            });
            gridSubscription.Columns.Add(new FastColumn(blank.Property(p => p.TimeStarted), Localizer.GetString("TitleBeginning")) { ColumnMinWidth = 75 });
            gridSubscription.Columns.Add(new FastColumn(blank.Property(p => p.TimeEnd), Localizer.GetString("TitleEnd")) { ColumnMinWidth = 75 });
            gridSubscription.Columns.Add(new FastColumn(blank.Property(p => p.PaidService), Localizer.GetString("TitleCost"))
            {
                ColumnMinWidth = 70,
                formatter = valueObject =>
                {
                    var srv = (PaidService) valueObject;
                    if (srv.ServiceType == PaidServiceType.Signals)
                        return srv.FixedPrice == 0
                                   ? "-"
                                   : srv.FixedPrice.ToStringUniformMoneyFormat(true) + " / " +
                                     PaidService.GetMonthFeeFromDailyFee(srv.FixedPrice) + " " +
                                     srv.Currency;
                    if (srv.ServiceType == PaidServiceType.PAMM)
                    {
                        if (srv.serviceRates.Count == 0) return "-";
                        if (srv.serviceRates.Count == 1)
                            return srv.serviceRates[0].Amount.ToStringUniformMoneyFormat(true) + "%";
                        return
                            srv.serviceRates[srv.serviceRates.IndexOfMin(r =>
                                r.Amount)].Amount.ToStringUniformMoneyFormat(true) + "% ... " +
                            srv.serviceRates[srv.serviceRates.IndexOfMin(r =>
                                -r.Amount)].Amount.ToStringUniformMoneyFormat(true) + "%";
                    }
                    return "";
                }
            });
            gridSubscription.Columns.Add(new FastColumn(blank.Property(p => p.RenewAuto), Localizer.GetString("TitleProlong"))
            {
                ColumnWidth = 61,
                formatter = v => (bool)v ? Localizer.GetString("TitleProlong") : Localizer.GetString("TitleNo"),
                IsHyperlinkStyleColumn = true,
                HyperlinkActiveCursor = Cursors.Hand,
                HyperlinkFontActive = fontBold,
                Tag = true
            });
            gridSubscription.Columns.Add(new FastColumn(blank.Property(p => p.RenewAuto), Localizer.GetString("TitleTurnOff"))
            {
                ColumnWidth = 57,
                ImageList = imageListGrid,
                IsHyperlinkStyleColumn = true,
                HyperlinkActiveCursor = Cursors.Hand
            });
            gridSubscription.UserHitCell += GridSubscriptionOnUserHitCell;
            gridSubscription.CheckSize();

            summaryTransfersFastGrid.Columns.Add(new FastColumn("a", " "));
            summaryTransfersFastGrid.Columns.Add(new FastColumn("b", Localizer.GetString("TitleTransactions")));
            summaryTransfersFastGrid.Columns.Add(new FastColumn("c", Localizer.GetString("TitleSum")));
        }
Exemplo n.º 8
0
        private void GridUserHitCell(object sender, MouseEventArgs e, int rowIndex, FastColumn col)
        {
            if (e.Button != MouseButtons.Left) return;

            var sets = (Contract.Entity.Subscription) grid.rows[rowIndex].ValueObject;
            selectedCategory = sets;

            // действие со счетом
            if (col.Tag == contextMenu || col.PropertyName == emptySubs.Property(s => s.Title))
            {
                var pointTop = grid.GetCellCoords(col, rowIndex);
                contextMenu.Show(grid, pointTop);
                return;
            }

            // настроить торговлю
            if (col.PropertyName == emptySubs.Property(s => s.TradeAuto))
            {
                EditTradeSettings();
            }
        }