Example #1
0
 public void FireOnRspQryInstrument(CZQThostFtdcInstrumentField pInstrument)
 {
     if (null != OnRspQryInstrument)
     {
         OnRspQryInstrument(pInstrument);
     }
 }
 /*
  * 上海证券交易所证券代码分配规则
  * http://www.docin.com/p-417422186.html
  * 
  * http://wenku.baidu.com/view/f2e9ddf77c1cfad6195fa706.html
  */
 private string GetSecurityType(CZQThostFtdcInstrumentField inst)
 {
     string securityType = FIXSecurityType.NoSecurityType;
     switch (inst.ProductClass)
     {
         case TZQThostFtdcProductClassType.Futures:
             securityType = FIXSecurityType.Future;
             break;
         case TZQThostFtdcProductClassType.Combination:
             securityType = FIXSecurityType.MultiLegInstrument;//此处是否理解上有不同
             break;
         case TZQThostFtdcProductClassType.Options:
             securityType = FIXSecurityType.Option;
             break;
         case TZQThostFtdcProductClassType.StockA:
         case TZQThostFtdcProductClassType.StockB:
             securityType = GetSecurityTypeStock(inst.ProductID,inst.InstrumentID);
             break;
         case TZQThostFtdcProductClassType.ETF:
         case TZQThostFtdcProductClassType.ETFPurRed:
             securityType = GetSecurityTypeETF(inst.ProductID, inst.InstrumentID);
             break;
         default:
             securityType = FIXSecurityType.NoSecurityType;
             break;
     }
     return securityType;
 }
 private static int SortCZQThostFtdcInstrumentField(CZQThostFtdcInstrumentField a1, CZQThostFtdcInstrumentField a2)
 {
     return a1.InstrumentID.CompareTo(a2.InstrumentID);
 }
Example #4
0
 public OnRspQryInstrumentArgs(IntPtr pTraderApi, ref CZQThostFtdcInstrumentField pInstrument, ref CZQThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     this.pTraderApi = pTraderApi;
     this.pInstrument = pInstrument;
     this.pRspInfo = pRspInfo;
     this.nRequestID = nRequestID;
     this.bIsLast = bIsLast;
 }
        private void OnRspQryInstrument(IntPtr pTraderApi, ref CZQThostFtdcInstrumentField pInstrument, ref CZQThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
        {
            if (0 == pRspInfo.ErrorID)
            {
                //比较无语,测试平台上会显示很多无效数据,有关期货的还会把正确的数据给覆盖,所以临时这样处理
                if (pInstrument.ProductClass != TZQThostFtdcProductClassType.Futures)
                {
                    _dictInstruments[pInstrument.InstrumentID] = pInstrument;
                }

                if (bIsLast)
                {
                    Console.WriteLine("TdApi:{0},合约列表已经接收完成",
                        Clock.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
                }
            }
            else
                EmitError(nRequestID, pRspInfo.ErrorID, "OnRspQryInstrument:" + pRspInfo.ErrorMsg);
        }
Example #6
0
 private void OnRspQryInstrument_callback(IntPtr pTraderApi, ref CZQThostFtdcInstrumentField pInstrument, ref CZQThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
 {
     if (null != OnRspQryInstrument)
     {
         OnRspQryInstrument(this, new OnRspQryInstrumentArgs(pTraderApi, ref pInstrument, ref pRspInfo, nRequestID, bIsLast));
     }
 }
        private void OnRspQryInstrument(IntPtr pTraderApi, ref CZQThostFtdcInstrumentField pInstrument, ref CZQThostFtdcRspInfoField pRspInfo, int nRequestID, bool bIsLast)
        {
            if (0 == pRspInfo.ErrorID)
            {
                //比较无语,测试平台上会显示很多无效数据,有关期货的还会把正确的数据给覆盖,所以临时这样处理
                if (pInstrument.ProductClass != TZQThostFtdcProductClassType.Futures)
                {
                    string symbol = GetYahooSymbol(pInstrument.InstrumentID, pInstrument.ExchangeID);
                    _dictInstruments[symbol] = pInstrument;

                    // 行情中可能没有交易所信息,这个容器用于容错处理
                    _dictInstruments2[pInstrument.InstrumentID] = symbol;
                }

                if (bIsLast)
                {
                    tdlog.Info("合约列表已经接收完成,共{0}条", _dictInstruments.Count);
                }
            }
            else
            {
                tdlog.Error("nRequestID:{0},ErrorID:{1},OnRspQryInstrument:{2}", nRequestID, pRspInfo.ErrorID, pRspInfo.ErrorMsg);
                EmitError(nRequestID, pRspInfo.ErrorID, "OnRspQryInstrument:" + pRspInfo.ErrorMsg);
            }
        }