Пример #1
0
        private void MainForm_Load(object sender, EventArgs ev)
        {
            Form_MessageSignal.Parent = this;
            Qlog.CatchException(() =>
            {
                dataGridPortfolios.Rows[0].Resizable     = DataGridViewTriState.False;
                dataGridPositions.Rows[0].Resizable      = DataGridViewTriState.False;
                dataGridViewStopOrders.Rows[0].Resizable = DataGridViewTriState.False;

                this.Trader.RegisterAllParamSec();

                InitTimers();

                this.InitPanelSignal();
                this.InitPanelFastGap();
                InitAutoOrders();
                InitAutoStopLoss();


                Trader.Objects.OnRun += () =>
                {
                    this.RegisterAllSecurity();
                };
                //Открытие торгового окна по найденному инструменту, по двойному щелчку
                dataGridFoundSec.DoubleClick += (s, e) =>
                {
                    foreach (DataGridViewRow row in dataGridFoundSec.SelectedRows)
                    {
                        if (row.Tag.NotIsNull())
                        {
                            var sec = (Securities)row.Tag;
                            this.ShowGraphicDepth(sec);
                        }
                    }
                };
                //Открытие торгового окна по позиции, по двойному щелчку
                dataGridPositions.DoubleClick += (s, e) =>
                {
                    foreach (DataGridViewRow row in dataGridPositions.SelectedRows)
                    {
                        if (row.Tag.NotIsNull())
                        {
                            var infoPos = ((string)row.Tag);
                            if (!infoPos.Empty())
                            {
                                var sec = GetSecCodeAndClass(infoPos);
                                if (sec.NotIsNull())
                                {
                                    ShowGraphicDepth(sec);
                                }
                            }
                        }
                    }
                };


                loadTextDescription();
                this.WindowState = FormWindowState.Maximized;
            }, "", () => { MessageBox.Show("Error load form!"); });
        }
Пример #2
0
 /// <summary>
 /// Отменяет указанную стоп-заявку.
 /// </summary>
 /// <param name="sec"></param>
 /// <param name="OrderNumber">Номер заявки</param>
 /// <returns></returns>
 public int CancelStopOrder(Securities sec, decimal OrderNumber)
 {
     if (sec.Empty())
     {
         return(-1);
     }
     if (OrderNumber <= 0)
     {
         return(-2);
     }
     Common.Ext.NewThread(() =>
     {
         Qlog.CatchException(() =>
         {
             Account acc = this.ConTerminal.Accounts.FirstOrDefault(a => !a.AccClasses.FirstOrDefault(c => c.Code == sec.Class.Code).Empty());
             if (acc.Empty())
             {
                 return;
             }
             Random rnd = new Random();
             //"|CLASSCODE|QJSIM|SECCODE|SBER|ORDER_KEY|3181375550|ACCOUNT|NL0011100043";
             string[] Params =
             {
                 "TRANS_ID",       rnd.Next(1,        1000000).ToString(),
                 "ACTION",         "KILL_STOP_ORDER",
                 "CLASSCODE",      sec.Class.Code,
                 "SECCODE",        sec.Code,
                 "ACCOUNT",        acc.AccID,
                 "STOP_ORDER_KEY", OrderNumber.ToString()
             };
             this.SendTransaction(Params);
         });
     });
     return(-1);
 }
Пример #3
0
 private void EventAllTrades(IEnumerable <Trade> trades)
 {
     Qlog.CatchException(() =>
     {
         UpdateInfoAllTrades(trades);
     });
 }
Пример #4
0
 /// <summary> Получение формы со стаканом и графиком </summary>
 /// <param name="sec"></param>
 /// <returns></returns>
 public Form_GraphicDepth ShowGraphicDepth(Securities sec)
 {
     Qlog.CatchException(() =>
     {
         var form = ListFormsDepth.FirstOrDefault(f => f.TrElement.Security == sec);
         if (form.IsNull())
         {
             var elTr = this.DataTrading.AddOrFind(sec);
             if (elTr.NotIsNull())
             {
                 form = new Form_GraphicDepth(Trader, elTr, this);
                 ListFormsDepth.Add(form);
             }
             //Инициализация закрытия
             form.FormClosed += (s, e) =>
             {
                 ListFormsDepth.Remove(form);
             };
         }
         if (form.NotIsNull())
         {
             form.Show();
             form.WindowState = FormWindowState.Maximized;
         }
         return(form);
     });
     return(null);
 }
Пример #5
0
 private void buttonDelSign_Click(object sender, EventArgs e)
 {
     Qlog.CatchException(() =>
     {
         //if (LastSecSignal.IsNull()) return;
         if (dataGridViewListSign.SelectedRows.NotIsNull())
         {
             if (dataGridViewListSign.SelectedRows.Count > 0)
             {
                 foreach (var row in dataGridViewListSign.SelectedRows)
                 {
                     if (row is DataGridViewRow)
                     {
                         var r = (DataGridViewRow)row;
                         if (r.Tag is SignalMarket)
                         {
                             LastIndexSelectRow = r.Index - 1;
                             SignalView.GSMSignaler.RemoveSignal((SignalMarket)r.Tag);
                         }
                     }
                 }
             }
         }
     });
 }
Пример #6
0
 void EventPositions(IEnumerable <Position> pos)
 {
     Qlog.CatchException(() =>
     {
         UpdateInfoPositions();
     });
 }
Пример #7
0
 private void buttonAddSignVolume_Click(object sender, EventArgs e)
 {
     Qlog.CatchException(() =>
     {
         //if (LastSecSignal.IsNull()) return;
         int timeFrame = 1;
         if (comboBoxSignTimeFrame.SelectedItem is SelectorTimeFrame)
         {
             timeFrame = ((SelectorTimeFrame)comboBoxSignTimeFrame.SelectedItem).TimeFrame;
         }
         DateMarket date = new DateMarket(DateTime.Now);
         var newSign     = new SignalMarket()
         {
             Type           = SignalMarket.TypeSignal.ByVolume,
             SecClass       = LastSecSignal.ToString(),
             Volume         = Convert.ToInt64(numericUpDownSignVolume.Value),
             TimeFrame      = timeFrame,
             TimeAntiRepeat = date,
             Comment        = textBoxSignComment.Text,
             Infinity       = true
         };
         SignalView.GSMSignaler.AddSignal(newSign);
         textBoxSignComment.Text = "";
     });
 }
Пример #8
0
 /// <summary>
 /// Перемещение сигнала по списку
 /// </summary>
 /// <param name="isUp"></param>
 private void MoveSignal(bool isUp = true)
 {
     Qlog.CatchException(() =>
     {
         if (dataGridViewListSign.SelectedRows.NotIsNull())
         {
             if (dataGridViewListSign.SelectedRows.Count > 0)
             {
                 foreach (var row in dataGridViewListSign.SelectedRows)
                 {
                     if (row is DataGridViewRow)
                     {
                         var r = (DataGridViewRow)row;
                         if (r.Tag is SignalMarket)
                         {
                             if (isUp)
                             {
                                 SignalView.GSMSignaler.MoveUp((SignalMarket)r.Tag);
                                 LastIndexSelectRow--;
                             }
                             else
                             {
                                 SignalView.GSMSignaler.MoveDown((SignalMarket)r.Tag);
                                 LastIndexSelectRow++;
                             }
                         }
                     }
                 }
             }
         }
         UpdateGridSignals();
     });
 }
Пример #9
0
 void EventPortfolio(IEnumerable <Portfolio> portf)
 {
     Qlog.CatchException(() =>
     {
         UpdateInfoPortfolios();
     });
 }
Пример #10
0
        /// <summary> Чтение коллекции из файла в сериализованном виде. </summary>
        /// <param name="filename"></param>
        public void ReadCollectionFromFile(string filename)
        {
            Qlog.CatchException(() =>
            {
                this.TimeLastSave = DateTime.Now;
                WFile file        = new WFile(filename);
                if (!file.Exists())
                {
                    return;
                }
                //this.WasReadHistory = true;
                Stream stream       = File.Open(filename, FileMode.Open);
                stream.Position     = 0;
                var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
                lock (syncLock)
                {
                    this.ObjCollection.Collection = (List <CandleData>)binaryFormatter.Deserialize(stream);
                }
                stream.Close();

                /*	using (Stream stream = File.Open(filename, FileMode.Open))
                 *              {
                 *                      var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
                 *                      this.Collection = (List<CandleData>)binaryFormatter.Deserialize(stream);
                 *              }*/
            }, filename, () => { return; });
        }
Пример #11
0
 /// <summary>
 /// Создает стоп-заявки по кнопке
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void buttonCreateStopOrder_Click(object sender, EventArgs e)
 {
     Qlog.CatchException(() =>
     {
         decimal Price = numericUpDownStopPrice.Value;
         this.SetStopOrder(Price, Position.Data.CurrentNet);
     });
 }
Пример #12
0
 private void pictureBoxGraphic_Paint(object sender, PaintEventArgs e)
 {
     Qlog.CatchException(() =>
     {
         var g = e.Graphics;
         g.CompositingQuality = CompositingQuality.GammaCorrected;
         GraphicStock.AllToCanvas(g);
     });
 }
Пример #13
0
 void ResetTableStopOrders()
 {
     Qlog.CatchException(() =>
     {
         listRowsStopOrders.Clear();
         dataGridViewStopOrders.Rows.Clear();
         this.FilteringStopOrders(Trader.Objects.tStopOrders.ToArray());
     });
 }
Пример #14
0
 public Securities SearchSecurity(string secCode, string secClassCode)
 {
     Qlog.CatchException(() =>
     {
         var sec = Trader.Objects.tSecurities.ToArray().FirstOrDefault(s => s.Code.Contains(secCode) &&
                                                                       s.Class.Code.Contains(secClassCode) && !s.Class.Code.Contains("EMU"));
         return(sec);
     });
     return(null);
 }
Пример #15
0
        /// <summary> Получает список хранящих в стеке данных </summary>

        /*public IEnumerable<string> DataStack
         * {
         *  get
         *  {
         *      return this.Stack;
         *  }
         * }*/
        /// <summary> Добавить сообщение в стек. </summary>
        public void Add(string msg)
        {
            Qlog.CatchException(() =>
            {
                mutexLock.WaitOne();
                this.Stack.Add(msg);
                this.Last = msg;
                mutexLock.ReleaseMutex();
            });
        }
Пример #16
0
 private void EventOrders(IEnumerable <Order> orders)
 {
     Qlog.CatchException(() =>
     {
         this.ForEachWinDepth((formDepth) =>
         {
             formDepth.EventAnyOrder(orders.Where(o => o.Sec == formDepth.TrElement.Security));
         });
         UpdateInfoOrders(orders);
     });
 }
Пример #17
0
        private void ConnectToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ((ToolStripMenuItem)sender).Enabled = false;

            ChangeTextMainStatusBar("Загрузка базовых данных...");

            Trader.Connect();
            Trader.Objects.tTrades.OnNew += new MarketEvents <Trade> .eventElement(EventAllTrades);

            Trader.Objects.tSecurities.OnNew += new MarketEvents <Securities> .eventElement(EventNewSec);

            Trader.Objects.tMyTrades.OnNew += new MarketEvents <MyTrade> .eventElement(EventMyTrades);

            Trader.Objects.tOrders.OnNew += new MarketEvents <Order> .eventElement(EventOrders);

            Trader.Objects.tOrders.OnChange += new MarketEvents <Order> .eventElement(EventOrders);

            Trader.Objects.tStopOrders.OnNew += new MarketEvents <StopOrder> .eventElement(EventStopOrders);

            Trader.Objects.tStopOrders.OnChange += new MarketEvents <StopOrder> .eventElement(EventStopOrders);

            Trader.Objects.tPortfolios.OnNew += new MarketEvents <Portfolio> .eventElement(EventPortfolio);

            Trader.Objects.tPortfolios.OnChange += new MarketEvents <Portfolio> .eventElement(EventPortfolio);

            Trader.Objects.tPositions.OnNew += new MarketEvents <Position> .eventElement(EventPositions);

            Trader.Objects.tPositions.OnChange += new MarketEvents <Position> .eventElement(EventPositions);

            Trader.Objects.tQuote.OnChange += new MarketEvents <Quote> .eventElement(EventDepth);//ToolsQuote.eventQuote

            Trader.Objects.tTransaction.OnTransReply += new ToolsTrans.eventTrans((listReply) =>
            {
                Qlog.CatchException(() => {
                    if (listReply.Count() > 0)
                    {
                        TransReply r = listReply.Last();
                        //foreach (TransReply r in listReply)
                        if (r != null)
                        {
                            statusStrip1.GuiAsync(() =>
                            {
                                toolStripStatusLabel1.Text = r.ResultMsg;
                            });

                            ForEachWinDepth((f) =>
                            {
                                f.UpdateTransReply(r.ResultMsg);
                            });
                        }
                    }
                });
            });
        }
Пример #18
0
 /// <summary> Событие новой заявки </summary>
 public void EventNewOrder(IEnumerable <Order> orders)
 {
     Qlog.CatchException(() =>
     {
         if (TrElement.IsNull())
         {
             return;
         }
         //Обновялем панель заявок
         UpdatePanelOrder(orders);
     });
 }
Пример #19
0
 private void buttonRestartSignalPort_Click(object sender, EventArgs e)
 {
     Qlog.CatchException(() =>
     {
         if (comboBoxPorts.SelectedItem.NotIsNull())
         {
             string port = (string)comboBoxPorts.SelectedItem;
             SetPort(port);
         }
         SetCurrentPorts();
     });
 }
Пример #20
0
        void EventStopOrders(IEnumerable <StopOrder> stOrders)
        {
            Qlog.CatchException(() =>
            {
                this.ForEachWinDepth((formDepth) =>
                {
                    formDepth.EventAnyOrder(stOrders.Where(o => o.Sec == formDepth.TrElement.Security));
                });

                this.FilteringStopOrders(stOrders);
                this.KilledSignalsByStopOrders(stOrders.ToArray());
            });
        }
Пример #21
0
 /// <summary> Обновляет список уровней </summary>
 private void UpdatePanelLevels(bool isNew = false)
 {
     Qlog.CatchException(() =>
     {
         if (this.Levels.IsNull() || isNew)
         {
             numericUpDownPriceLevel.InitSecurity(Securities, -1000000);
             numericUpDownPriceLevel2.InitSecurity(Securities, -1000000);
         }
         RefrashLGridList();
         UpdateGraphic();
     });
 }
Пример #22
0
        private void ConnectToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ((ToolStripMenuItem)sender).Enabled = false;

            ChangeTextMainStatusBar("Синхронизация с терминалом...");

            Trader.Connect();
            Trader.Objects.tTrades.OnNew += new Events.EventsBase <Trade> .eventElement(EventAllTrades);

            Trader.Objects.tOldTrades.OnNew += new Events.EventsBase <Trade> .eventElement(EventOldTrades);

            //Trader.Objects.tSecurities.OnNew += new Events.EventsBase<Securities>.eventElement(EventNewSec);

            Trader.Objects.tMyTrades.OnNew += new Events.EventsBase <MyTrade> .eventElement(EventMyTrades);

            Trader.Objects.tOrders.OnNew += new Events.EventsBase <Order> .eventElement(EventOrders);

            Trader.Objects.tOrders.OnChange += new Events.EventsBase <Order> .eventElement(EventOrders);

            Trader.Objects.tStopOrders.OnNew += new Events.EventsBase <StopOrder> .eventElement(EventStopOrders);

            Trader.Objects.tStopOrders.OnChange += new Events.EventsBase <StopOrder> .eventElement(EventStopOrders);

            Trader.Objects.tPortfolios.OnNew += new Events.EventsBase <Portfolio> .eventElement(EventPortfolio);

            //Trader.Objects.tPortfolios.OnChange += new Events.EventsBase<Portfolio>.eventElement(EventPortfolio);

            Trader.Objects.tPositions.OnNew += new Events.EventsBase <Position> .eventElement(EventPositions);

            Trader.Objects.tPositions.OnChange += new Events.EventsBase <Position> .eventElement(EventPositions);

            Trader.Objects.tTransaction.OnTransReply += new ToolsTrans.eventTrans((listReply) =>
            {
                Qlog.CatchException(() =>
                {
                    if (listReply.Count() > 0)
                    {
                        if (OnNewReply.NotIsNull())
                        {
                            OnNewReply(listReply);
                        }
                        Reply r = listReply.Last();
                        if (r.NotIsNull())
                        {
                            this.LastMarketReply = r;
                            ChangeTextMainStatusBar(r.ResultMsg);
                        }
                    }
                });
            });
        }
Пример #23
0
 private bool SaveSignals()
 {
     return((bool)Qlog.CatchException(() =>
     {
         lock (syncObj)
         {
             Stream stream = File.Open(this.GetFilename(), FileMode.Create);
             var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
             binaryFormatter.Serialize(stream, this.Signals);
             stream.Close();
             return true;
         }
     }));
 }
Пример #24
0
 private void EventOldTrades(IEnumerable <Trade> trades)
 {
     Qlog.CatchException(() =>
     {
         foreach (var t in trades)
         {
             var el = DataTrading.AddOrFind(t.Sec);
             if (el.NotIsNull())
             {
                 el.NewTrade(t);
             }
         }
     });
 }
Пример #25
0
 private void DataGridPositions_CellContentClick(object sender, DataGridViewCellEventArgs e)
 {
     Qlog.CatchException(() =>
     {
         var senderGrid = (DataGridView)sender;
         if (senderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn && e.RowIndex >= 0)
         {
             var sec = senderGrid.Rows[e.RowIndex].Tag != null ? (Securities)senderGrid.Rows[e.RowIndex].Tag : null;
             if (sec != null)
             {
                 ShowGraphicDepth(sec);
             }
         }
     });
 }
Пример #26
0
 /// <summary> Очищает стек сообщений </summary>
 public void Clear()
 {
     Qlog.CatchException(() =>
     {
         mutexLock.WaitOne();
         if (this.Stack.Count > 0)
         {
             this.Stack.Clear();
         }
         if (this.Count <= 0)
         {
             this.Last = null;
         }
         mutexLock.ReleaseMutex();
     });
 }
Пример #27
0
 /// <summary>
 /// Выполняет какое либо действие для открытых окон
 /// </summary>
 /// <param name="action"></param>
 private void ForEachWinDepth(Action <Form_GraphicDepth> action)
 {
     Qlog.CatchException(() =>
     {
         if (ListFormsDepth.NotIsNull() && ListFormsDepth.Count > 0)
         {
             foreach (var f in ListFormsDepth.ToArray())
             {
                 if (f.TrElement.NotIsNull())
                 {
                     action(f);
                 }
             }
         }
     });
 }
Пример #28
0
 private void EventNewSec(IEnumerable <Securities> listSec)
 {
     Qlog.CatchException(() =>
     {
         Securities last = null;
         foreach (var s in listSec)
         {
             var el = DataTrading.AddOrFind(s);
             last   = s;
         }
         if (last.NotIsNull())
         {
             ChangeTextMainStatusBar(Trader.Objects.tSecurities.Count + " " + last.ToString());
         }
     });
 }
Пример #29
0
        /// <summary>  События в стакане </summary>
        /// <param name="listQuote"></param>

        /*void EventDepth(IEnumerable<Quote> listQuote)
         * {
         *  Qlog.CatchException(() =>
         *  {
         *      MThread.InitThread(() =>
         *      {
         *          foreach (var q in listQuote)
         *          {
         *              var el = DataTrading.AddOrFind(q.Sec);
         *              if (el.NotIsNull())
         *              {
         *                  el.LastQuote.Object = q;
         *              }
         *          }
         *      });
         *  });
         * }*/


        private void EventMyTrades(IEnumerable <MyTrade> myTrades)
        {
            Qlog.CatchException(() =>
            {
                foreach (var mTrade in myTrades)
                {
                    this.ForEachWinDepth((formDepth) =>
                    {
                        if (mTrade.Trade.Sec == formDepth.TrElement.Security)
                        {
                            formDepth.LoopControl(true);
                        }
                    });
                }
            });
        }
Пример #30
0
 /// <summary>
 /// Проводит регистрацию всех активных инструментов
 /// </summary>
 public void RegisterAllSecurity()
 {
     var res = Qlog.CatchException(() =>
     {
         var list = Global.GetWorkingListSec();
         foreach (var el in list.ToArray())
         {
             var sec = this.GetSecCodeAndClass(el);
             if (sec.NotIsNull())
             {
                 Trader.RegisterSecurities(sec);
             }
         }
         return(false);
     });
 }