コード例 #1
0
        void _client_OnPortfolioItemUpdated(entity.PortfolioItem obj)
        {
            string info = string.Format("Porf: {0}\t{1}\t{2}", obj.ID, obj.Quantity, obj.Diff);

            Debug.WriteLine(info);
            OutputMessage(info);
        }
コード例 #2
0
        public entity.PortfolioItem GetEntity()
        {
            entity.PortfolioItem portfolioItem = new entity.PortfolioItem();
            portfolioItem.ID              = Id;
            portfolioItem.AutoOpen        = AutoOpen;
            portfolioItem.AutoStopGain    = AutoStopGain;
            portfolioItem.AutoStopLoss    = AutoStopLoss;
            portfolioItem.AutoTrack       = AutoTracking;
            portfolioItem.EnablePrefer    = EnablePrefer;
            portfolioItem.Quantity        = Quantity;
            portfolioItem.MaxPosition     = MaxPosition;
            portfolioItem.OpenTimes       = OpenTimes;
            portfolioItem.CloseTimes      = 0;
            portfolioItem.CurrentPosition = Position;
            portfolioItem.AvgCost         = AvgCost;

            foreach (var legVm in _legs)
            {
                entity.LegItem leg = new entity.LegItem();
                leg.Symbol      = legVm.Symbol;
                leg.Side        = legVm.Side;
                leg.Ratio       = legVm.Ratio;
                leg.IsPreferred = legVm.IsPreferred;
                portfolioItem.Legs.Add(leg);
            }

            portfolioItem.StrategyName = StrategySetting.Name;
            portfolioItem.StrategyData = StrategySetting.Serialize();

            return(portfolioItem);
        }
コード例 #3
0
        private void SyncToHost()
        {
            List <entity.PortfolioItem> portfItems = new List <entity.PortfolioItem>();

            foreach (var portf in _acctPortfolios)
            {
                entity.PortfolioItem portfolioItem = portf.GetEntity();
                portfItems.Add(portfolioItem);
            }
            _client.AddPortfCollection(portfItems);
        }
コード例 #4
0
        void _client_OnPortfolioItemUpdated(entity.PortfolioItem obj)
        {
            string info = string.Format("Porf: {0}\t{1}\t{2}", obj.ID, obj.Quantity, obj.Diff);

            Debug.WriteLine(info);
            var portf = Get(obj.ID);

            if (portf != null)
            {
                DispatcherHelper.Current.BeginInvoke(new Action(() => portf.Update(obj)));
            }
        }
コード例 #5
0
        private void btnAddPortf_Click(object sender, RoutedEventArgs e)
        {
            portfolioItem          = new entity.PortfolioItem();
            portfolioItem.ID       = Guid.NewGuid().ToString();
            portfolioItem.Diff     = 2;
            portfolioItem.Quantity = 1;

            entity.LegItem leg1 = new entity.LegItem();
            leg1.Symbol = "cu1212";
            leg1.Side   = entity.PosiDirectionType.LONG;
            leg1.Ratio  = 1;
            portfolioItem.Legs.Add(leg1);

            entity.LegItem leg2 = new entity.LegItem();
            leg2.Symbol = "cu1301";
            leg2.Side   = entity.PosiDirectionType.SHORT;
            leg2.Ratio  = 1;
            portfolioItem.Legs.Add(leg2);

            _client.AddPortf(portfolioItem);
        }
コード例 #6
0
        public void Update(entity.PortfolioItem item)
        {
            Diff        = ToDecimal(item.Diff);
            LongDiff    = ToDecimal(item.LongDiff);
            ShortDiff   = ToDecimal(item.ShortDiff);
            LongSize    = item.LongSize;
            ShortSize   = item.ShortSize;
            OpenTimes   = item.OpenTimes;
            DoneTimes   = item.CloseTimes;
            Position    = item.CurrentPosition;
            Gain        = item.Profit;
            Quantity    = item.Quantity;
            MaxPosition = item.MaxPosition;
            AvgCost     = item.AvgCost;

            IsRunning = item.StrategyRunning;

            for (int i = 0; i < item.Legs.Count; ++i)
            {
                _legs[i].Update(item.Legs[i]);
            }
        }
コード例 #7
0
        private void OnAddPortfolio(AccountVM acct)
        {
            PortfolioVM portf = new PortfolioVM(this);

            portf.Id = NextPortfId();

            EditPortfolioDlg dlg = new EditPortfolioDlg();

            dlg.Owner     = System.Windows.Application.Current.MainWindow;
            dlg.Portfolio = portf;
            bool?res = dlg.ShowDialog();

            if (res ?? false)
            {
                entity.PortfolioItem portfolioItem = dlg.Portfolio.GetEntity();
                AddPorfolio(portf);
                if (_client.IsConnected)
                {
                    _client.AddPortf(portfolioItem);
                }

                PublishChanged();
            }
        }