protected override void RecalcBotStructs(CBotEventStruct botEvent) { base.RecalcBotStructs(botEvent); EnmBotEventCode evCode = botEvent.EventCode; if (EnmBotEventCode.OnTraderConnected == evCode) { OnTraderConnected(); if (_tradersDispatcher != null) { _tradersDispatcher.EnqueueUpdateDealsLog(BotId); } } else if (EnmBotEventCode.OnTimeDisableTradeLoaded == evCode) { CDisableTradeData dtl = (CDisableTradeData)botEvent.Data; string instrument = botEvent.Isin; if (_subBots.ContainsKey(instrument)) { _subBots[instrument].UpdateBotsDisableTrading(dtl); } } //2018-04-25 else if (EnmBotEventCode.OnForceUpdTotalVM == evCode) { //note recalc of VM was already done in CBotBase if (_tradersDispatcher != null) { _tradersDispatcher.EnqueueUpdateVm(BotId); } } }
public CBotEventStruct(string isin, EnmBotEventCode evCode, object data) { DtTmEvent = DateTime.Now; EventCode = evCode; Isin = isin; Data = data; }
public CTradeTimer(string name, CBotBase bot, EnmBotEventCode evCode, double expTimeMS) { m_timer = new Timer(expTimeMS); m_bot = bot; m_name = name; m_timer.Elapsed += new ElapsedEventHandler(OnTimerExpired); m_evBot = evCode; }
public COnlineDetector(Action <EnmBotEventCode, object> onTimeExpired, EnmBotEventCode botEventCode, int parTimeAfterUpdateMs = 500, int parTimeAfterObjectCreated = 9000) { _parTimeAfterUpdateMs = parTimeAfterUpdateMs; _parTimeAfterObjectCreated = parTimeAfterObjectCreated; _botEventCode = botEventCode; OnTimeExpired = onTimeExpired; CUtil.TaskStart(TaskCheckOrdersOnline); }
public void Process(CTableRecrd record) { //TODO normal // if (!_client.IsOnlineUserOrderLog) // _client.IsOnlineUserOrderLog = true; _onlineDetector.Update(); //TODO check partial acception! CRawOrdersLogStruct userOrdLogStruct = new CRawOrdersLogStruct() { Id_ord = Convert.ToInt64(record.values["ORDERNO"]), Ext_id = Convert.ToInt16(record.values["EXTREF"]), Dir = Convert.ToChar(record.values["BUYSELL"]) == 'B' ? (sbyte)EnmOrderDir.Buy : (sbyte)EnmOrderDir.Sell, Price = Convert.ToDecimal(record.values["PRICE"]), Amount = Convert.ToInt16(record.values["QUANTITY"]), Instrument = Convert.ToString(record.values["SECCODE"]), Action = (sbyte)CASTSConv.ASTSActionToEnmOrderAction(Convert.ToChar(record.values["STATUS"])), Moment = CASTSConv.ASTSTimeToDateTime(record.values["ORDERTIME"].ToString()) }; EnmBotEventCode evnt = EnmBotEventCode.OnEmptyEvent; if (userOrdLogStruct.Action == (sbyte)EnmOrderAction.Added) { evnt = EnmBotEventCode.OnOrderAccepted; } else if (userOrdLogStruct.Action == (sbyte)EnmOrderAction.Deleted) { evnt = EnmBotEventCode.OnOrderCancel; } else if (userOrdLogStruct.Action == (sbyte)EnmOrderAction.Deal) { evnt = EnmBotEventCode.OnOrderDeal; } _client.TriggerRecalculateBot(userOrdLogStruct.Ext_id, userOrdLogStruct.Instrument, evnt, userOrdLogStruct); //foreach(CBotBase bb in }
/*protected override void OnUserDealsLogics(string instrument) * { * base.OnUserDealsLogics(instrument); * * if (_subBots.ContainsKey(instrument)) * _subBots[instrument].OnUserDealsLogics(); * * } */ protected override void RecalcBotLogics(CBotEventStruct botEvent) { base.RecalcBotLogics(botEvent); //CheckNeedSendStopLossTakeProfit(); EnmBotEventCode evCode = botEvent.EventCode; string instrument = botEvent.Isin; if (EnmBotEventCode.OnTraderDisconnected == evCode) { CancellAllBotOrders(); } /* if (EnmBotEventCode.OnStockUpdate == evCode) * { * if (_subBots.ContainsKey(instrument)) * _subBots[instrument].OnStockUpdate(); * * } */ }
public void TriggerRecalcAllBots(EnmBotEventCode evnt, object data) { }
public void TriggerRecalculateBot(int botId, string isin, EnmBotEventCode code, object data) { }
public void Update(FUTTRADE.orders_log ol) { int i; UpdateDictUserOpenedOrders((FUTTRADE.orders_log)ol.Copy()); mxListRawOrders.WaitOne(); { try { //Here we fill "Raw Orders struct list based on replRev/replId for (i = 0; i < m_listRawOrdersStruct.Count; i++) { if (m_listRawOrdersStruct[i].ReplId == ol.replID) { //Seems like this will never happened m_listRawOrdersStruct[i] = new CRawOrdersLogStruct(ol); } } if (i == m_listRawOrdersStruct.Count) { m_listRawOrdersStruct.Add(new CRawOrdersLogStruct(ol)); if (ol.action == (sbyte)EnmOrderAction.Deal) { } //TO DO put trigger new log here ? { foreach (CBotBase bt in m_plaza2Connector.ListBots) { if (bt.BotId == ol.ext_id) { EnmBotEventCode evCode = EnmBotEventCode.OnEmptyEvent; if (ol.action == (sbyte)EnmOrderAction.Added) { evCode = EnmBotEventCode.OnOrderAccepted; //TEMPO ! comment it /* CRawOrdersLogStruct rlstr = new CRawOrdersLogStruct(ol); * string instr = m_plaza2Connector.Instruments.GetInstrumentByIsinId(ol.isin_id); * bt.Recalc(instr, EnmBotEventCode.OnOrderAccepted, rlstr); */ } else if (ol.action == (sbyte)EnmOrderAction.Deleted) { /* CRawOrdersLogStruct rls = new CRawOrdersLogStruct(ol); * string isin = m_plaza2Connector.Instruments.GetInstrumentByIsinId(ol.isin_id); * bt.Recalc(isin, EnmBotEventCode.OnOrderCancel, rls);*/ evCode = EnmBotEventCode.OnOrderCancel; } else if (ol.action == (sbyte)EnmOrderAction.Deal) { /* CRawOrdersLogStruct rls = new CRawOrdersLogStruct(ol); * string isin = m_plaza2Connector.Instruments.GetInstrumentByIsinId(ol.isin_id); * bt.Recalc(isin, EnmBotEventCode.OnOrderDeal, rls); */ evCode = EnmBotEventCode.OnOrderDeal; } CRawOrdersLogStruct rls = new CRawOrdersLogStruct(ol); string isin = m_plaza2Connector.Instruments.GetInstrumentByIsinId(ol.isin_id); bt.Recalc(isin, evCode, rls); } } } } mxListRawOrders.ReleaseMutex(); } catch (Exception e) { Error("CUserOrderBox.Update", e); } } // // TODO gen here orderslist for each obot // }