private static Task LoadOrderTrade(XProvider provider, CancellationTokenSource cts) { return new Task(state => { var ct = ((CancellationTokenSource)state).Token; var spi = new XSpi(); { var client = provider.CreateTrader(spi); var complete = new AutoResetEvent(false); var orders = new List<OrderField>(); var trades = new List<TradeField>(); spi.ErrorHappened += (s, error) => { Console.WriteLine(error.Text); complete.Set(); }; spi.StatusChanged += (s, status, field) => { Console.WriteLine(status); if (field != null && status == ConnectionStatus.Logined) { Console.WriteLine(field.RawErrorID != 0 ? field.RawErrorMsg() : field.DebugInfo()); } if (status == ConnectionStatus.Done) { client.TradingDay = field.TradingDay(); client.QueryOrders(); } }; spi.OrderReceived += (s, order, isLast) => { if (order != null) { orders.Add(order); } if (isLast) { client.QueryTrades(); } }; spi.TradeReceived += (s, trade, isLast) => { if (trade != null) { trades.Add(trade); } if (isLast) { complete.Set(); } }; client.Connect(); while (!ct.IsCancellationRequested) { if (complete.WaitOne(0)) { break; } Skyline.Utility.Sleep(100, ct); } client.Disconnect(); var global = provider.Framework.StrategyManager; orders.Sort((x, y) => x.UpdateTime().CompareTo(y.UpdateTime())); trades.Sort((x, y) => x.UpdateTime().CompareTo(y.UpdateTime())); global.SetExOrders(orders, provider.Id); global.SetExTrades(trades, provider.Id); global.SetExTradingDay(client.TradingDay); } }, cts, cts.Token, TaskCreationOptions.LongRunning); }
protected XApiClient(XProvider provider, ConnectionInfo info, IXSpi spi = null) { Info = info; Provider = provider; User = provider.GetUserInfo(info.User); Server = provider.GetServerInfo(info.Server, info.UseType); Logger = LogManager.GetLogger($"{provider.Name}.{info.LogPrefix}.{User.UserID}"); Api = provider.CreateXApi(info); if (spi != null) { Api.RegisterSpi(spi); } Api.ErrorHappened += OnErrorHappened; Api.StatusChanged += OnStatusChanged; Api.InvestorReceived += OnInvestorReceived; Api.AccountReceived += OnRspQryAccount; Api.PositionReceived += OnRspQryPositions; Api.OrderReturn += OnRtnOrder; Api.TradeReturn += OnRtnTrade; Api.InstrumentReceived += OnInstrumentReceived; Api.MarketDataReceived += OnMarketDataReceived; Api.OrderReceived += OnOrderReceived; Api.TradeReceived += OnTradeReceived; Api.InstrumentStatusChanged += OnInstrumentStatusChanged; }
private void ProviderEventHappened(XProvider s, XProviderEventType type) { switch (type) { case XProviderEventType.TraderCreated: LoadPositions(); break; case XProviderEventType.ConnectDone: break; case XProviderEventType.DisconnectDone: break; case XProviderEventType.AutoDisconnect: break; default: _logger.Debug($"{AgentId}, status={type}"); TradingStatus = type; var reminder = new Reminder(OnMarketStatusEvent, DateTime.Now, type); reminder.SetClock(_eventClock); _eventQueue.Enqueue(reminder); break; } }
public EventDebugEmitter(XProvider provider) { _provider = provider; _dataPipe = new EventPipe(provider.framework); _dataQueue = new EventQueue(1, 0, 2, 25000, provider.framework.EventBus); _dataPipe.Add(_dataQueue); _executionPipe = new EventPipe(provider.framework); _executionQueue = new EventQueue(2, 0, 2, 25000, provider.framework.EventBus); _executionPipe.Add(_executionQueue); _accountQueue = new EventQueue(2, 0, 2, 100, provider.framework.EventBus); _executionPipe.Add(_accountQueue); }
private void ProviderEventHappened(XProvider s, XProviderEventType type) { switch (type) { case XProviderEventType.ConnectDone: InitProcessor(); break; case XProviderEventType.DisconnectDone: break; case XProviderEventType.AutoDisconnect: break; case XProviderEventType.TraderCreated: break; default: AddProviderEventReminder(type); break; } }
public ConnectManager(XProvider provider) { _provider = provider; _block = new ActionBlock <Event>((Action <Event>)Process); }
public DealProcessor(XProvider provider) { _provider = provider; InitHandler(); }
public Convertor(XProvider provider) { _provider = provider; Init(); }
public TraderClient(XProvider provider, ConnectionInfo info, IXSpi spi = null) : base(provider, info, spi) { }
public TimedTask(XProvider provider) { _provider = provider; _timer = new Timer(1000); _timer.Elapsed += TimerOnElapsed; }
public SubscribeManager(XProvider provider) { _provider = provider; _action = new ActionBlock <Event>(SubscribeAction, DataflowHelper.SpscBlockOptions); }
public EventEmitter(XProvider provider) { _provider = provider; }
public ConnectManager(XProvider provider) { _provider = provider; _block = new ActionBlock <Event>(Process, DataflowHelper.SpscBlockOptions); }
public MarketDataClient(XProvider provider, ConnectionInfo info) : base(provider, info) { }
public SubscribeManager(XProvider provider) { _provider = provider; _action = new ActionBlock <Event>((Action <Event>)SubscribeAction); }
public TraderClient(XProvider provider, ConnectionInfo info) : base(provider, info) { }