基于CTP的国内期货程序化交易之报单流程讲解

海外期货市开展匹敌,国际期货市的开展相当多的有趣,更多陨石坑。第第一是更多的时期,像陌生期货美国原油类似于,陆续市23小时,国际期货与上海黄金,一天到晚四小时市,辨别出从9:00到10:15、10:30至11:30、从13点30分到15点,从0230到次日。更多事务时期,聪明的里还要更多的时期。,左右,补充了很多事情逻辑。。同时,这是很多市规则,前一期的期货的股本被分为出现安置。,左右,朕就能够依据市时期举行独自的判别。,是前第一市日的列表或出现市D的列表,不同的,被单参量不正当。,该清单将指导被市系统回绝。。开拓工艺手续中应用的首要升至桅顶是:、及,静态库为:。上面是某个编码示例:

       1. 找到CTP api例子:

  1. CThostFtdcTraderApi *pTradeApi = CThostFtdcTraderApi::CreateFtdcTraderApi(dirName);  

       经过呼唤CreateFtdcTraderApi()找到api例子——pTradeApi,那时的呼唤例子来启动杂多的请求容许。,像,衔接侍者、用户登录、报单、撤单、查询仓库栈、查问钱等。

       2. 找到CTP API回调例子:

  1. CFtdcTradeSpi *pTradeSpi = new CFtdcTradeSpi(pTradeApi, this);  

       这需求为本人写信中肯的的赚得类。,朕需求继位先前TE赡养的CTHOSTFTDCTCRADSPI类。重写类正中鹄的办法,侍者处置的杂多的最高纪录。

       3. 相干在上的两个示例,启动衔接侍者请求容许:

  1. pTradeApi->RegisterSpi(pTradeSpi);  
  2. pTradeSpi->connect(serverAddr, brokerId, username,密码电文)

       衔接侍者和例子设定初值编码:

  1. void CFtdcTradeSpi::connect(string serverAddr, string brokerId, string username,字母行密码电文
  2. {  
  3.     serverAddr_ = serverAddr;  
  4.     brokerId_ = brokerId;  
  5.     username_ = username;  
  6.     password_ = password;  
  7.   
  8.     pTradeApi_->SubscribePublicTopic(THOST_TERT_QUICK);  
  9.     pTradeApi_->SubscribePrivateTopic(THOST_TERT_QUICK);  
  10.     pTradeApi_->RegisterFront((char *)());  
  11.     pTradeApi_->Init();  
  12. }  

       在发送衔接请求容许以后的,OnFruttCon()答辩请求容许,那时的在该重大聚会内可以呼唤登录重大聚会pTradeApi_->ReqUserLogin()充分发挥潜在的能力用户登录控制,对应的OnRspUserLogin()答辩请求容许。。鉴于国际期货最早在市日登录,出资者需求C,相应地,在OnrSPueLogIn()重大聚会中,可以的比较级呼唤pTradeApi_->ReqSettlementInfoConfirm()做出资者结算产生鉴定,鉴定产生将在OnRspSettlementInfoConfirm()内又来。充分发挥潜在的能力出资者结算产生的鉴定,充分发挥潜在的能力了专门侍者衔接和用户登录工艺手续。,通常可以处置单个的事务。。

  1. void CFtdcTradeSpi::OnFrontConnected()  
  2. {  
  3.     LOG_INFO << username_ << 回调:已与侍者使成为衔接, 开端登录”;  
  4. }  
  5.   
  6. void CFtdcTradeSpi::OnRspUserLogin(CThostFtdcRspUserLoginField *pRspUserLogin, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)  
  7. {  
  8.     if (pRspUserLogin == NULL || pRspInfo == NULL)  
  9.     {  
  10.         LOG_INFO << username_ << 登录回调非常,导游是空的;  
  11.         return;  
  12.     }  
  13.   
  14.     if (pRspInfo->ErrorID == Err_Succeed)  
  15.     {  
  16.         LOG_INFO << username_ <<  登录成,开端鉴定出资者结算的产生,出现市日: << pTradeApi_->GetTradingDay();  
  17.     }  
  18. }  
  19.   
  20. void CFtdcTradeSpi::OnRspSettlementInfoConfirm(CThostFtdcSettlementInfoConfirmField *pSettlementInfoConfirm, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)  
  21. {  
  22.     if (pSettlementInfoConfirm == NULL || pRspInfo == NULL)  
  23.     {  
  24.         LOG_INFO << username_ << 出资者结算产生鉴定回调非常,导游是空的;  
  25.         return;  
  26.     }  
  27.   
  28.     string errorMsg;  
  29.     getErrcodeDesc(pRspInfo->ErrorMsg, errorMsg);  
  30.     LOG_INFO << username_ << ” “  
  31.              << 经理公司编码: << pSettlementInfoConfirm->BrokerID << ” “  
  32.              << 出资者编码: << pSettlementInfoConfirm->InvestorID << ” “  
  33.              << “鉴定日期: “ << pSettlementInfoConfirm->ConfirmDate << ” “  
  34.              << “鉴定时期: “ << pSettlementInfoConfirm->ConfirmTime << ” “  
  35.              << 回调:失当报文, 失当码: “ << pRspInfo->ErrorID << ” “ << errorMsg;  
  36. }  

       4. 期货报单:

       (1)ReqOrderInsert():报单请求容许

  1. CThostFtdcInputOrderField reqField;  
  2. memset(&reqField, 0, sizeof(CThostFtdcInputOrderField));  
  3. ……  
  4. ……  
  5. pTradeApi_->ReqOrderInsert(&reqField, orderInsertReqId_);  
       与上一篇文字的解说根本划一,相差无几。 需求正当填写事情/方位、翻开/翻开仓库栈、市场价/价钱限度局限、付托接近、付托价钱等,ReqOrderInsert()预告可在充分发挥潜在的能力后呼唤。。

       (2)OnRspOrderInsert():报单请求容许应对

  1. void CFtdcTradeSpi::OnRspOrderInsert(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)  
  2. {  
  3. }  

       讨论成后,理论地,重大聚会将回调。。只是看着日记,理想化的事物逻辑的能够技术,削弱功用,说起来,重大聚会过失回调重大聚会。,自然,这也能够与所应用的SDK版本相干。。

       (3)OnRtnOrder():付托变卦圆形的

  1. void CFtdcTradeSpi::OnRtnOrder(CThostFtdcOrderField *pOrder)  
  2. {  
  3. }  

       当付托的个人财产替换时,将回调。一般而言,付托的首要个人财产首要是付托。:未知、排队中缺乏市、比例市仍在排队中。、充分发挥潜在的能力市等。一次报单,即使接近更多,通常过失所局部市都是可供使用的充分发挥潜在的能力的。,但有到什么程度成批作业的市,因而重大聚会会不竭回调。跟随不竭的回调,每回有助益付托、大量、最高纪录,如其他人员量,将不竭变异。。

       (4)OnRtnMatchInfo():市交流变卦圆形的书

  1. void CFtdcTradeSpi::OnRtnTrade(CThostFtdcTradeField *pTrade)  
  2. {  
  3. }  
       大约功用更要紧,又来的每个音讯都是事务交流。,它组编求体积法、成交价、市成本等,这些是出资者关怀的最高纪录。。总体来说,专门报单工艺手续与前言教授的海外期货报单手续根本划一。但有几分简单化,不需求写信音讯流逻辑,由于CTP缺乏信息分类频率限度局限,但有查询频率限度局限,这平面是API的对过。,缓慢地是缺乏频率限度局限的查询,讨论的频率限度局限。

       5.  期货存款方位查询:

       查询仓库栈首要呼唤pTradeApi_->ReqQryInvestorPosition(),依据文献填写拨的参量。查询仓库栈答辩重大聚会为:

  1. void CFtdcTradeSpi::OnRspQryInvestorPosition(CThostFtdcInvestorPositionField *pInvestorPosition, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)  
  2. {  
  3. }  

       大约功用需求由开拓人员本人来重写。,讨厌的人的是,最高纪录无能力的紧接地又来。,只是打扮有助益,需求依据方位辨别出举行汇总计算。。

       写信完编码,到何种地步结帐顺序?如同先前的技术缺乏推荐。,只是,你可以在SIMNE网站上留下印象市结帐理由。,不晓得SimNow与基本事实的技术有什么相干。留下印象成后账号内存在100万,这容许您结帐翻开和翻开仓库栈。。

发表评论

电子邮件地址不会被公开。 必填项已用*标注