Пример #1
0
 /// <summary> Получает текущий тайм-фрем в панеле </summary>
 /// <param name="panel"></param>
 /// <returns></returns>
 private int GetCurrentTimeFrame(PanelGraph panel)
 {
     if (panel.ComboBoxTimeFrame.IsNull())
     {
         return(SelectorTimeFrame.TimeFrameMinute[0]);
     }
     if (panel.ComboBoxTimeFrame.SelectedItem.IsNull())
     {
         return(SelectorTimeFrame.TimeFrameMinute[0]);
     }
     return(((SelectorTimeFrame)panel.ComboBoxTimeFrame.SelectedItem).TimeFrame);
 }
Пример #2
0
        private void SetSecurityInPanel(PanelGraph panel, string secCode, string secClass)
        {
            if (panel.IsNull())
            {
                return;
            }

            var TrEl = this.Parent.GetTradeElement(secCode, secClass);

            if (TrEl.IsNull())
            {
                return;
            }
            panel.TrElement = TrEl;
            //Уровни

            panel.Graphic = new Graphic();
            panel.Graphic.InitEvents();
            panel.Graphic.Init(TrEl.Security);
            panel.LabelTop.Text = TrEl.Security.ToString();
            panel.Price.InitSecurity(TrEl.Security);
            panel.Price.Value = 0;
            var pos = this.Parent.GetPosition(panel.TrElement.Security);

            panel.Position.Text = pos.NotIsNull() ? pos.Data.CurrentNet.ToString() : "0";

            this.UpdateGraphic(panel);

            if (panel.TrElement.IsNull())
            {
                return;
            }
            if (panel.TrElement.Security.IsNull())
            {
                return;
            }
        }
Пример #3
0
        public void UpdatePanel(PanelGraph panel)
        {
            if (panel.IsNull())
            {
                return;
            }
            if (panel.TrElement.IsNull())
            {
                return;
            }
            var pos = this.Parent.GetPosition(panel.TrElement.Security);

            panel.Position.Text    = pos.NotIsNull() ? pos.Data.CurrentNet.ToString() : "0";
            panel.LabelOrders.Text = (pos.NotIsNull() ? pos.Data.OrdersBuy.ToString() : "0") + " / " +
                                     (pos.NotIsNull() ? pos.Data.OrdersSell.ToString() : "0");

            if (this.Parent.LastMarketReply.NotIsNull())
            {
                if (this.Text != this.Parent.LastMarketReply.ResultMsg)
                {
                    this.Text = this.Parent.LastMarketReply.ResultMsg;
                }
            }
        }
Пример #4
0
        private void CreateOrder(PanelGraph panel, bool IsBuy)
        {
            if (panel.TrElement.IsNull())
            {
                return;
            }
            if (panel.Price.Value == 0)
            {
                return;
            }
            if (panel.Volume.Value == 0)
            {
                return;
            }
            var ord = new Order()
            {
                Price     = panel.Price.Value,
                Volume    = Convert.ToInt32(panel.Volume.Value),
                Sec       = panel.TrElement.Security,
                Direction = IsBuy ? OrderDirection.Buy : OrderDirection.Sell
            };

            this.Trader.CreateOrder(ord);
        }
Пример #5
0
        private void FindElemPanels(object control)
        {
            if (control.IsNull())
            {
                return;
            }
            var obj = (Control)control;

            if (obj.Controls.Count > 0)
            {
                foreach (var c in obj.Controls)
                {
                    this.FindElemPanels(c);
                }
            }
            if (obj.Tag.NotIsNull())
            {
                string strTag = obj.Tag.ToString();
                Regex  rgx    = new Regex(@"[a-zA-Z]*");
                int    index  = rgx.Replace(strTag, "").ToInt32();
                var    el     = this.ListGraph.FirstOrDefault(p => p.Index == index);
                if (el.IsNull())
                {
                    el = new PanelGraph();
                    this.ListGraph.Add(el);
                    el.Index = index;
                }
                if (control is ComboBox)
                {
                    el.ComboBoxTimeFrame = (ComboBox)control;
                }
                if (control is PictureBox)
                {
                    el.Canvas = (PictureBox)control;
                }
                if (control is Label)
                {
                    if (strTag.Contains("Ord"))
                    {
                        el.LabelOrders = (Label)control;
                    }
                    if (strTag.Contains("LT"))
                    {
                        el.LabelTop = (Label)control;
                    }
                    if (strTag.Contains("Pos"))
                    {
                        el.Position = (Label)control;
                    }
                }
                if (control is Button)
                {
                    var b = (Button)control;
                    if (strTag.Contains("CL"))
                    {
                        el.ButCloseOrder = b;
                    }
                    if (b.Text == "+")
                    {
                        el.ButtonMore = b;
                    }
                    if (b.Text == "-")
                    {
                        el.ButtonLess = b;
                    }
                    if (b.Text == "sell")
                    {
                        el.ButSell = b;
                    }
                    if (b.Text == "buy")
                    {
                        el.ButBuy = b;
                    }
                    if (strTag.Contains("Depth"))
                    {
                        el.OpenDepth = b;
                    }
                }
                if (control is NumericUpDown)
                {
                    if (strTag.Contains("V"))
                    {
                        el.Volume = (NumericUpDown)control;
                        el.Volume.InitWheelDecimal();
                    }
                    if (strTag.Contains("P"))
                    {
                        el.Price = (NumericUpDown)control;
                        el.Price.InitWheelDecimal();
                        el.Price.Maximum = 100000000;
                    }
                }
            }
        }
Пример #6
0
        public void UpdateGraphic(PanelGraph panelGraph, bool updateAll = false)
        {
            if (panelGraph.TrElement.IsNull())
            {
                return;
            }
            if (panelGraph.Graphic.IsNull())
            {
                return;
            }
            //try
            var valTF     = this.GetCurrentTimeFrame(panelGraph);
            var timeFrame = panelGraph.TrElement.StorageTF.GetTimeFrame(valTF);

            if (!timeFrame.IsNull())
            {
                int index = 0;                // GetIndexFirstCandle(timeFrame);

                //Orders
                List <Chart> orders = new List <Chart>();
                var          allOrd = this.Trader.Objects.tOrders.SearchAll(o => o.Sec.Code == panelGraph.TrElement.Security.Code && o.IsActive());
                foreach (var o in allOrd)
                {
                    var ch  = orders.FirstOrDefault(c => c.Price == o.Price);
                    var vol = o.IsSell() ? o.Volume * -1 : o.Volume;
                    if (ch != null)
                    {
                        ch.Volume += vol;
                    }
                    else
                    {
                        orders.Add(new Chart()
                        {
                            Price = o.Price, Volume = vol
                        });
                    }
                }
                var allStOrd = this.Trader.Objects.tStopOrders.SearchAll(o => o.Sec.Code == panelGraph.TrElement.Security.Code && o.IsActive());
                foreach (var o in allStOrd)
                {
                    var ch  = orders.FirstOrDefault(c => c.Price == o.Price);
                    var vol = o.IsSell() ? o.Volume * -1 : o.Volume;
                    if (ch != null)
                    {
                        ch.Volume += vol;
                    }
                    else
                    {
                        orders.Add(new Chart()
                        {
                            Price = o.ConditionPrice, Volume = vol
                        });
                    }
                }
                //panelGraph.Graphic.SetOrders(orders);
                //panelGraph.Graphic.SetLevels(panelGraph.Levels.Collection);

                panelGraph.Canvas.GuiAsync(() =>
                {
                    int countCandles = panelGraph.CountCandleVisible;

                    panelGraph.Graphic.IndexFirstCandle    = index;
                    panelGraph.Graphic.CountVisibleCandles = countCandles;
                    //panelGraph.Graphic.PanelCandels.CollectionCandle = timeFrame.MainCollection.ToArray().Skip(index).Take(countCandles).ToArray();

                    panelGraph.Canvas.Refresh();
                });
            }
        }
Пример #7
0
 private void SetSecurityInPanel(PanelGraph panel, Securities sec)
 {
     this.SetSecurityInPanel(panel, sec.Code, sec.Class.Code);
 }