/// <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); }
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; } }
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; } } }
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); }
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; } } } }
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(); }); } }
private void SetSecurityInPanel(PanelGraph panel, Securities sec) { this.SetSecurityInPanel(panel, sec.Code, sec.Class.Code); }