コード例 #1
0
ファイル: TraderApiWrapper.cs プロジェクト: quantumyang/CTP
 private void OnRtnInstrumentStatus_callback(IntPtr pTraderApi, ref CThostFtdcInstrumentStatusField pInstrumentStatus)
 {
     if (null != OnRtnInstrumentStatus)
     {
         OnRtnInstrumentStatus(this, new OnRtnInstrumentStatusArgs(pTraderApi, ref pInstrumentStatus));
     }
 }
コード例 #2
0
 private void OnRtnInstrumentStatus_callback(object sender, ref CThostFtdcInstrumentStatusField pInstrumentStatus)
 {
     if (null != OnRtnInstrumentStatus)
     {
         OnRtnInstrumentStatus(this, new OnRtnInstrumentStatusArgs(ref pInstrumentStatus));
     }
 }
コード例 #3
0
 public void FireOnRtnInstrumentStatus(CThostFtdcInstrumentStatusField pInstrumentStatus)
 {
     if (null != OnRtnInstrumentStatus)
     {
         OnRtnInstrumentStatus(pInstrumentStatus);
     }
 }
コード例 #4
0
        private void CTPOnRtnInstrumentStatus(ref CThostFtdcInstrumentStatusField pInstrumentStatus)
        {
            ExchangeStatusType status = ExchangeStatusType.BeforeTrading;

            switch (pInstrumentStatus.InstrumentStatus)
            {
            case TThostFtdcInstrumentStatusType.THOST_FTDC_IS_Continous:
                status = ExchangeStatusType.Trading;
                break;

            case TThostFtdcInstrumentStatusType.THOST_FTDC_IS_Closed:
                status = ExchangeStatusType.Closed;
                break;

            case TThostFtdcInstrumentStatusType.THOST_FTDC_IS_NoTrading:
                status = ExchangeStatusType.NoTrading;
                break;
            }
            DicExcStatus[pInstrumentStatus.InstrumentID] = status;
            if (IsLogin)
            {
                _OnRtnExchangeStatus?.Invoke(this, new StatusEventArgs {
                    Exchange = pInstrumentStatus.InstrumentID, Status = status
                });
            }
        }
コード例 #5
0
 void OnRtnInstrumentStatus(CThostFtdcInstrumentStatusField pInstrumentStatus)
 {
     // 由于只在有新消息过来时才会收到,所以可能认为不好测试,看不出效果
     // 在测试时,把插件属性的ResumeType改成THOST_TERT_RESTART,然后连接CTP就可以看到效果了。
     Console.WriteLine("==交易所状态");
     Console.WriteLine("{0},{1},{2}",
                       pInstrumentStatus.ExchangeID, pInstrumentStatus.InstrumentID,
                       pInstrumentStatus.InstrumentStatus);
 }
コード例 #6
0
        private void OnRtnInstrumentStatus(IntPtr pTraderApi, ref CThostFtdcInstrumentStatusField pInstrumentStatus)
        {
            tdlog.Info("{0},{1},{2},{3}",
                       pInstrumentStatus.ExchangeID, pInstrumentStatus.InstrumentID,
                       pInstrumentStatus.InstrumentStatus, pInstrumentStatus.EnterReason);

            //通知单例
            CTPAPI.GetInstance().FireOnRtnInstrumentStatus(pInstrumentStatus);
        }
コード例 #7
0
        private void OnRtnInstrumentStatus(IntPtr pTraderApi, ref CThostFtdcInstrumentStatusField pInstrumentStatus)
        {
            tdlog.Info("{0},{1},{2},{3},{4},{5},{6},{7}",
                       pInstrumentStatus.ExchangeID, pInstrumentStatus.InstrumentID,
                       pInstrumentStatus.InstrumentStatus, pInstrumentStatus.EnterReason,
                       pInstrumentStatus.EnterTime, pInstrumentStatus.TradingSegmentSN,
                       pInstrumentStatus.ExchangeInstID, pInstrumentStatus.SettlementGroupID);

            //通知单例
            CTPAPI.GetInstance().FireOnRtnInstrumentStatus(pInstrumentStatus);

            // 到IF的交割日,是否会收到两个有关IF的记录?如果在此进行清理是否会有问题?
            // 只会收到一条
            // 遍历是否过期
            if (pInstrumentStatus.InstrumentStatus == TThostFtdcInstrumentStatusType.Closed)
            {
                Dictionary <GenericOrderItem, CThostFtdcOrderField> tmp = new Dictionary <GenericOrderItem, CThostFtdcOrderField>();
                foreach (var pair in orderMap.OrderItem_OrderField)
                {
                    if (pair.Value.ExchangeID == pInstrumentStatus.ExchangeID)
                    {
                        int cnt = pair.Key.GetLegNum();
                        foreach (var pair2 in orderMap.Order_OrderItem)
                        {
                            // 得找到OpenQuant层的单子
                            if (pair.Key == pair2.Value)
                            {
                                --cnt;
                                EmitExpired(pair2.Key);
                                if (cnt <= 0)
                                {
                                    break;
                                }
                            }
                        }
                        tmp[pair.Key] = pair.Value;
                    }
                }

                foreach (var pair in tmp)
                {
                    OnLastStatus(pair.Key, pair.Value.OrderSysID, pair.Value.OrderRef);
                }
                tmp.Clear();
            }
        }
コード例 #8
0
ファイル: TraderApiWrapper.cs プロジェクト: vcfriend/CTP
 private void OnRtnInstrumentStatus_callback(IntPtr pTraderApi, ref CThostFtdcInstrumentStatusField pInstrumentStatus)
 {
     if (null != OnRtnInstrumentStatus)
     {
         OnRtnInstrumentStatus(this, new OnRtnInstrumentStatusArgs(pTraderApi, ref pInstrumentStatus));
     }
 }
コード例 #9
0
 public OnRtnInstrumentStatusArgs(IntPtr pTraderApi, ref CThostFtdcInstrumentStatusField pInstrumentStatus)
 {
     this.pTraderApi        = pTraderApi;
     this.pInstrumentStatus = pInstrumentStatus;
 }
コード例 #10
0
 ///合约交易状态通知
 public void OnRtnInstrumentStatus(CThostFtdcInstrumentStatusField pInstrumentStatus)
 {
     Console.WriteLine("OnRtnInstrumentStatus");
 }
コード例 #11
0
ファイル: TradeApi.cs プロジェクト: zhuzhenping/CTP-MATLAB
 private void OnRtnInstrumentStatus_3(ref CThostFtdcInstrumentStatusField pInstrumentStatus)
 {
     OnRtnInstrumentStatus_1(this, ref pInstrumentStatus);
 }
コード例 #12
0
 private void OnRtnInstrumentStatus(ref CThostFtdcInstrumentStatusField pInstrumentStatus)
 {
     Log($"{pInstrumentStatus.InstrumentID}:{pInstrumentStatus.InstrumentStatus}");
 }
コード例 #13
0
ファイル: EventArgs.cs プロジェクト: vcfriend/CTP
 public OnRtnInstrumentStatusArgs(IntPtr pTraderApi, ref CThostFtdcInstrumentStatusField pInstrumentStatus)
 {
     this.pTraderApi = pTraderApi;
     this.pInstrumentStatus = pInstrumentStatus;
 }
コード例 #14
0
 private void OnRtnInstrumentStatus_3(IntPtr pTraderApi, ref CThostFtdcInstrumentStatusField pInstrumentStatus)
 {
     OnRtnInstrumentStatus_1(this, pTraderApi, ref pInstrumentStatus);
 }
コード例 #15
0
ファイル: TradeApi.cs プロジェクト: kaotul/autotrade
 private void OnRtnInstrumentStatus_3(IntPtr pTraderApi, ref CThostFtdcInstrumentStatusField pInstrumentStatus)
 {
     OnRtnInstrumentStatus_1(this, pTraderApi, ref pInstrumentStatus);
 }
コード例 #16
0
ファイル: EventArgs.cs プロジェクト: zhuzhenping/CTP-MATLAB
 public OnRtnInstrumentStatusArgs(ref CThostFtdcInstrumentStatusField pInstrumentStatus)
 {
     this.pInstrumentStatus = pInstrumentStatus;
 }
コード例 #17
0
 public override void OnRtnInstrumentStatus(CThostFtdcInstrumentStatusField pInstrumentStatus)
 {
     _callbackApi.OnRtnInstrumentStatus(pInstrumentStatus);
 }
コード例 #18
0
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(CThostFtdcInstrumentStatusField obj)
 {
     return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr);
 }