コード例 #1
0
 internal void ConnectDone()
 {
     EventHappened?.Invoke(this, XProviderEventType.ConnectDone);
     ProcessPendingCommand();
     if (MarketContinuousAfterConnectDone)
     {
         TradingStatus = InstrumentStatusType.Continous;
         EventHappened?.Invoke(this, XProviderEventType.MarketContinuous);
     }
     InitQuery();
     if (IsInstrumentProvider)
     {
         logger.Info("开始查询合约......");
         if (!qryInstrumentUseMarketApi)
         {
             trader.QueryInstrument();
         }
         else
         {
             market.QueryInstrument();
         }
     }
     else
     {
         StartTimerTask();
     }
 }
コード例 #2
0
ファイル: EventConnector.cs プロジェクト: arnab-sen/SnakeALA
 // IEvent implementation ------------------------------------
 void IEvent.Execute()
 {
     foreach (var fanout in fanoutList)
     {
         fanout.Execute();
     }
     EventHappened?.Invoke();
 }
コード例 #3
0
 // IEvent implementation
 void IEvent.Execute()
 {
     foreach (var df in fanoutList)
     {
         df.Execute();
     }
     EventHappened?.Invoke();
     last?.Execute();
 }
コード例 #4
0
 // IEvent implementation ------------------------------------
 void IEvent.Execute()
 {
     foreach (var fanout in outputs)
     {
         fanout.Execute();
     }
     EventHappened?.Invoke();
     complete?.Execute();
 }
コード例 #5
0
 private void ExecuteTrigger(object state)
 {
     _botTimer.TriggerAsync()
     .ContinueWith(continuation => EventHappened.Invoke(new BotEvent
     {
         Channel = _channel,
         Message = continuation.Result
     }));
 }
コード例 #6
0
        public void Handle(EventHappened message)
        {
            Data.Id = message.Id;
            Data.NumEvents++;

            if (Data.NumEvents > 2)
            {
                Console.WriteLine("3 event received.");
            }
        }
コード例 #7
0
 public DetectedEventViewModel(EventHappened eventHappened)
 {
     EventKind        = eventHappened.Kind.ToString();
     Description      = eventHappened.Description;
     MainActor        = eventHappened.MainActor?.ToWowParserString();
     AdditionalActors = eventHappened.AdditionalActors?.Select(s => s.ToWowParserString()).ToList();
     if (eventHappened.EventLocation != null)
     {
         Location = $"X: {eventHappened.EventLocation.X} Y: {eventHappened.EventLocation.Y} Z: {eventHappened.EventLocation.Z}";
     }
 }
コード例 #8
0
 internal void DisconnectDone()
 {
     _subscribeManager.Clear();
     _timer.Close();
     _dealProcessor.Close();
     _emitter.Close();
     ClearAccountQueue();
     market = null;
     trader = null;
     EventHappened?.Invoke(this, XProviderEventType.DisconnectDone);
 }
コード例 #9
0
 internal void OnMessage(InstrumentStatusField field)
 {
     if (field.Status != TradingStatus)
     {
         TradingStatus = field.Status;
         if (TradingStatus == InstrumentStatusType.Closed)
         {
             CancelUndoneOrder();
         }
         EventHappened?.Invoke(this, (XProviderEventType)field.Status);
     }
 }
コード例 #10
0
        public async Task HandleAsync(BotCommand command)
        {
            var response = await _responder.HandleAsync(command);

            if (response != null)
            {
                EventHappened.Invoke(new BotEvent
                {
                    Channel = command.Channel,
                    Message = response
                });
            }
        }
コード例 #11
0
 internal void OnTraderCreated()
 {
     //var server = GetPersistentServer();
     //if (server == null) {
     //    return;
     //}
     EventHappened?.Invoke(this, XProviderEventType.TraderCreated);
     //var tradingDay = server.Settings.GetAsDateTime(ProviderSettingsType.TradingDay);
     //if (tradingDay == DateTime.Today && DateTime.Now.TimeOfDay > MarketCloseTime) {
     //    //CancelUndoneOrder();
     //}
     //else {
     //    //_dealProcessor.ProcessUndone(framework, tradingDay, server.GetTrades(tradingDay));
     //}
 }
コード例 #12
0
        private static void RaiseEventHappened(EventHappenedEventArgs args)
        {
            try
            {
                EventHappened?.Invoke(null, args);
            }
            catch (OutOfMemoryException)
            {
                throw;
            }
#pragma warning disable RCS1075 // Avoid empty catch clause that catches System.Exception.
            catch (Exception)
#pragma warning restore RCS1075 // Avoid empty catch clause that catches System.Exception.
            {
                //External code throw error, simply ignore.
            }
        }
コード例 #13
0
        internal void OnTraderCreated()
        {
            var server = GetPersistentServer();

            if (server != null)
            {
                EventHappened?.Invoke(this, XProviderEventType.TraderCreated);
                var tradingDay = server.Settings.GetAsDateTime(ProviderSettingsType.TradingDay);
                if (tradingDay == DateTime.Today && DateTime.Now.TimeOfDay > MarketSettlementTime)
                {
                    //CancelUndoneOrder();
                }
                else
                {
                    _processor.LoadUndoneOrders(framework, tradingDay, server.GetTrades(tradingDay));
                }
            }
        }
コード例 #14
0
 internal void ConnectDone()
 {
     EventHappened?.Invoke(this, XProviderEventType.ConnectDone);
     if (MarketContinousAfterConnectDone)
     {
         TradingStatus = InstrumentStatusType.Continous;
         EventHappened?.Invoke(this, XProviderEventType.MarketContinous);
     }
     InitQuery();
     if (IsInstrumentProvider)
     {
         Logger.Info("开始查询合约......");
         Trader.QueryInstrument();
     }
     else
     {
         StartTimerTask();
     }
 }
コード例 #15
0
 private void OnMarketClose(DateTime dateTime, object data)
 {
     if (framework.OrderServer is DatabaseOrderServer server)
     {
         server.PositionStore.ChangeTradingDay();
     }
     if (TradingStatus != InstrumentStatusType.Closed)
     {
         TradingStatus = InstrumentStatusType.Closed;
         EventHappened?.Invoke(this, (XProviderEventType)TradingStatus);
     }
     foreach (var provider in framework.ProviderManager.Providers)
     {
         if (provider is XProvider)
         {
             CancelUndoneOrder(provider.Id);
         }
     }
     framework.StrategyManager.Global.Remove(QuantBoxConst.GlobalMarketCloseReminder);
 }
コード例 #16
0
 public ActionReasonPredictionViewModel(PacketBase action, double probability, string explain, EventHappened reason)
 {
     PacketNumber = reason.PacketNumber;
     Description  = reason.Description;
     Chance       = (int)(probability * 100);
     Explain      = explain;
     Diff         = (int)(action.Time.ToDateTime() - reason.Time).TotalMilliseconds;
 }
コード例 #17
0
 private void OnBotEventHappened(BotEvent evnt)
 {
     EventHappened?.Invoke(evnt);
 }
コード例 #18
0
 internal void AutoDisconnect()
 {
     _connectManager.Post(new OnAutoDisconnect());
     EventHappened?.Invoke(this, XProviderEventType.AutoDisconnect);
 }
コード例 #19
0
 private void OnEventHappened(string message)
 {
     EventHappened?.Invoke(message);
 }
コード例 #20
0
 public void RegisterEvent(IDeviceEvent deviceEventHappened)
 {
     EventHappened?.Invoke(deviceEventHappened);
 }