持仓风控是程序化交易的必备风控之一,而持仓风控准确的前提是自己的交易系统要有准确的初始持仓及准确的后续更新持仓更新规则。
一般启动交易系统会做一系列初始化的操作,其中重要的一步便是获取该账号的当前持仓状况,这只能通过查询CTP得到。而后续的交易过程中如果有报单或者成交,就会有相应的持仓冻结及仓位变化,由于CTP的查询流控及为了确保仓位更新的实时性,我们一般会自己根据相应回报去更新仓位状态(当然如果是趋势性策略不在乎一丁点延时,直接去查询CTP而省去麻烦的更新也可以),这就涉及到一定的更新规则。
- 持仓函数与报文
1.1. 持仓查询请求
查询所有持仓
CThostFtdcQryInvestorPositionField qrypositionfield = {0};
m_pTradeApi->ReqQryInvestorPosition(&qrypositionfield, 0);
1.2. 持仓查询返回
对应的查询结果返回函数为:
///请求查询投资者持仓响应
virtual void OnRspQryInvestorPosition(CThostFtdcInvestorPositionField *pInvestorPosition, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
1.2.1. pInvestorPosition
返回结果在第一个参数中pInvestorPosition中,参数类型为CThostFtdcInvestorPositionField,
1.持仓记录键值
///合约代码
InstrumentID;
///经纪公司代码
BrokerID;
///投资者代码
InvestorID;