private void _OnRtnInstrumentStatus(IntPtr ptr1, int size1) { // 求快,不加 if (OnRtnInstrumentStatus_ == null) { return; } InstrumentStatusField obj = (InstrumentStatusField)Marshal.PtrToStructure(ptr1, typeof(InstrumentStatusField)); OnRtnInstrumentStatus_(this, ref obj); }
internal void OnMessage(InstrumentStatusField field) { if (field.Status != TradingStatus) { TradingStatus = field.Status; if (TradingStatus == InstrumentStatusType.Closed) { CancelUndoneOrder(); } EventHappened?.Invoke(this, (XProviderEventType)field.Status); } }
private void OnRtnInstrumentStatus_callback(object sender, ref InstrumentStatusField instrumentStatus) { if (OnRtnInstrumentStatus != null) { OnRtnInstrumentStatus(sender, ref instrumentStatus); } // 记录下来,后期可能要用到 _dictInstrumentsStatus[instrumentStatus.Symbol] = instrumentStatus; // 合约状态信息太多了,也不关心,这里屏蔽显示 if (IsLogOnRtnInstrumentStatus) { (sender as XApi).GetLog().Info("OnRtnInstrumentStatus:" + instrumentStatus.ToFormattedString()); } }
public void ProcessExpired(ref InstrumentStatusField instrumentStatus, NLog.Logger log) { // 根据当前挂单来统计 //if (workingOrders.Count == 0) // return; if (instrumentStatus.InstrumentStatus != TradingPhaseType.Closed) { return; } foreach (var order in framework.OrderManager.Orders) { // 量有点多,需要判断一下 if (order.IsDone) { continue; } var inst = order.Instrument; string altSymbol; string altExchange; string apiSymbol; string apiExchange; double apiTickSize; string apiProductID; this.provider.GetApi_Symbol_Exchange_TickSize(inst, this.provider.Id, out altSymbol, out altExchange, out apiSymbol, out apiExchange, out apiTickSize, out apiProductID); if (apiProductID != instrumentStatus.InstrumentID) { continue; } ExecutionReport report = CreateReport(order, SQ.ExecType.ExecExpired, SQ.OrderStatus.Expired); report.LeavesQty = 0; report.Text = "收盘,插件标记定单过期"; provider.EmitExecutionReport(report); } }
private void OnRtnOrder_Expired(ref InstrumentStatusField instrumentStatus) { if (_TdApi == null) { return; } lock (this) { var log = _TdApi.GetLog(); try { orderMap.ProcessExpired(ref instrumentStatus, log); } catch (Exception ex) { log.Error(ex); } } }
private void OnInstrumentStatusChanged(object sender, InstrumentStatusField status) { Provider.OnMessage(status); }