private void AddTimeEventTask(ETradingTimeEventType eventType, int startTimeDelaySec = 0) { var tradingTimeEvent = new TradingTimeEvent(eventType); switch (eventType) { case ETradingTimeEventType.StartTrading: tradingTimeEvent.EventTime = startTimeDelaySec == 0 ? StartTradingTimeLocal : DateTime.Now.AddSeconds(startTimeDelaySec); break; case ETradingTimeEventType.EndTradingIn60Seconds: tradingTimeEvent.EventTime = EndTradingTimeLocal.AddSeconds(-60); break; case ETradingTimeEventType.EndTradingIn30Seconds: tradingTimeEvent.EventTime = EndTradingTimeLocal.AddSeconds(-30); break; case ETradingTimeEventType.EndTrading: tradingTimeEvent.EventTime = EndTradingTimeLocal; break; default: return; } //Verify task time is logical if (DateTime.Now >= tradingTimeEvent.EventTime) { return; } AddTradingTimeEvent(tradingTimeEvent); Logger.InfoFormat("{0}: Event Registration: ***** {1} ", Symbol, tradingTimeEvent); }
private void TradingManager_SendTradingTimeEvent(TradingTimeEvent tradingTimeEvent) { OnSendTradingTimeEvent(tradingTimeEvent); if (tradingTimeEvent.TradingTimeEventType != ETradingTimeEventType.EndTrading) { return; } }
private void AddTradingTimeEvent(TradingTimeEvent tradingTimeEvent) { lock (TradingTimeEventDic) { if (TradingTimeEventDic.ContainsKey(tradingTimeEvent.TradingTimeEventType)) { RemoveScheduledTask(tradingTimeEvent.TaskUniqueIdentifier); Logger.InfoFormat("{0}: RemoveScheduledTask: ----- {1}", Symbol, TradingTimeEventDic[tradingTimeEvent.TradingTimeEventType]); } tradingTimeEvent.TaskUniqueIdentifier = AddScheduledTask(tradingTimeEvent.EventTime.Subtract(DateTime.Now), () => { Logger.InfoFormat("{0}: Event invocation: !!!!! {1}", Symbol, tradingTimeEvent); SendMessageToAllComponents(tradingTimeEvent); }); TradingTimeEventDic[tradingTimeEvent.TradingTimeEventType] = tradingTimeEvent; } }
private void TradingManager_SendTradingTimeEvent(TradingTimeEvent tradingTimeEvent) { var eventType = tradingTimeEvent.TradingTimeEventType; switch (eventType) { case ETradingTimeEventType.StartTrading: break; case ETradingTimeEventType.EndTradingIn30Seconds: break; case ETradingTimeEventType.EndTradingIn60Seconds: break; case ETradingTimeEventType.EndTrading: //Don't save if it's not an operational account: if (AccountManager.MainAccount == Configurations.Application.MainAccount) { DoWorkAfterTradingEnding(); } break; } }
public virtual void OnSendTradingTimeEvent(TradingTimeEvent tradingTimeEvent) { Action <TradingTimeEvent> handler = SendTradingTimeEvent; handler?.Invoke(tradingTimeEvent); }