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); } }
internal void OnAllTradeCall(AllTrade allTrade) { if (OnAllTrade != null) { OnAllTrade(allTrade); } }
internal void OnAllTradeCall(AllTrade allTrade) => OnAllTrade?.Invoke(allTrade);
public void OnAllTrade(AllTrade allTrade) { AllTrade?.Invoke(_quik, allTrade); }
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(); }); } }