Пример #1
0
        private void EventsOnOnAllTrade(AllTrade allTrade)
        {
            try
            {
                if (allTrade == null)
                {
                    return;
                }

                lock (_newTradesLoker)
                {
                    Trade trade = new Trade();
                    trade.SecurityNameCode = allTrade.SecCode;
                    trade.Id     = allTrade.TradeNum.ToString();
                    trade.Price  = Convert.ToDecimal(allTrade.Price);
                    trade.Volume = Convert.ToInt32(allTrade.Qty);
                    trade.Side   = Convert.ToInt32(allTrade.Flags) == 1 ? Side.Sell : Side.Buy;
                    trade.Time   = new DateTime(allTrade.Datetime.year, allTrade.Datetime.month, allTrade.Datetime.day,
                                                allTrade.Datetime.hour, allTrade.Datetime.min, allTrade.Datetime.sec);
                    if (NewTradesEvent != null)
                    {
                        NewTradesEvent(trade);
                    }

                    // write last tick time in server time / перегружаем последним временем тика время сервера
                    ServerTime = trade.Time;
                }
            }
            catch (Exception error)
            {
                SendLogMessage(error.ToString(), LogMessageType.Error);
            }
        }
Пример #2
0
 internal void OnAllTradeCall(AllTrade allTrade)
 {
     if (OnAllTrade != null)
     {
         OnAllTrade(allTrade);
     }
 }
Пример #3
0
 internal void OnAllTradeCall(AllTrade allTrade) => OnAllTrade?.Invoke(allTrade);
Пример #4
0
 public void OnAllTrade(AllTrade allTrade)
 {
     AllTrade?.Invoke(_quik, allTrade);
 }
Пример #5
0
        private void Events_OnAllTrade(AllTrade allTrade)
        {
            // Log(allTrade.TradeNum + " " + allTrade.SecCode + " " + allTrade.Price + "" + allTrade.Qty + " " +
            //    allTrade.Flags + " " + allTrade.OpenInterest);

            if (allTrade.SecCode == "SBER")    // SBER secCode
            {
                _sber.Name = allTrade.SecCode;
                string str = allTrade.Datetime.hour.ToString("00") + ":" + allTrade.Datetime.min.ToString("00") + ":" +
                             allTrade.Datetime.sec.ToString("00");
                _sber.Time   = str;
                _sber.Price  = (decimal)allTrade.Price;
                _sber.Volume = (int)allTrade.Qty;
                _sber.Id     = allTrade.TradeNum;
                if (allTrade.Flags == AllTradeFlags.Buy)
                {
                    _sber.Direction = "Buy";
                }
                if (allTrade.Flags == AllTradeFlags.Sell)
                {
                    _sber.Direction = "Sell";
                }

                this.Dispatcher.Invoke(() =>
                {
                    DataGrid.Items.Refresh();
                });

                if (_flagRobotTick)
                {
                    try
                    {
                        var pos = GetOpenPositions(secCode);
                        if ((decimal)allTrade.Price >= Up && Up != 0 && pos <= 0 && _flag) // лонгуем, если 0 или шорт
                        {
                            // покупаем
                            _flag = false;                                                                                       // флаг входа в позицию
                            _quik.Orders.SendMarketOrder(classCode, secCode, _tool.AccountID, Operation.Buy, Math.Abs(pos) + 1); // и сразу переворачиваемся
                            Log("Buy Price= " + allTrade.Price + " Откр. поз " + pos);
                        }

                        if ((decimal)allTrade.Price <= Low && Low != 0 && pos >= 0 && _flag) // и наоборот
                        {
                            // продаем
                            _flag = false;
                            _quik.Orders.SendMarketOrder(classCode, secCode, _tool.AccountID, Operation.Sell, Math.Abs(pos) + 1);
                            Log("Sell Price= " + allTrade.Price + " Откр. поз " + pos);
                        }
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                        // throw;
                    }
                }
            }
            if (allTrade.SecCode == "RIH0")    //  secCode
            {
                _RI.Name = allTrade.SecCode;
                string str = allTrade.Datetime.hour.ToString("00") + ":" + allTrade.Datetime.min.ToString("00") + ":" +
                             allTrade.Datetime.sec.ToString("00");
                _RI.Time   = str;
                _RI.Price  = (decimal)allTrade.Price;
                _RI.Volume = (int)allTrade.Qty;
                _RI.Id     = allTrade.TradeNum;
                if (allTrade.Flags == AllTradeFlags.Buy)
                {
                    _RI.Direction = "Buy";
                }
                if (allTrade.Flags == AllTradeFlags.Sell)
                {
                    _RI.Direction = "Sell";
                }
                _RI.OI = (int)allTrade.OpenInterest;

                this.Dispatcher.Invoke(() =>
                {
                    DataGrid.Items.Refresh();
                });
            }
        }