跳转至

ReqOrderInsert

报单录入请求,录入错误时对应响应OnRspOrderInsertOnErrRtnOrderInsert,正确时对应回报OnRtnOrderOnRtnTrade

可以录入限价单、市价单、条件单等交易所支持的指令,撤单时使用ReqOrderAction

不支持预埋单录入,预埋单请使用ReqParkedOrderInsert

详见报单回调规则

关于流控详见报单流控、查询流控和会话数控制

关于Tas的说明详见TAS介绍

关于条件单规则详见条件单规则

关于各个交易所的特殊指令详见各交易所特殊指令

关于接口中的重要序号说明详见接口中一些重要序号说明

1. 函数原型

virtual int ReqOrderInsert(CThostFtdcInputOrderField *pInputOrder, int nRequestID) = 0;

2. 参数

pInputOrder:输入报单

字段类型字段名称含义
TThostFtdcBrokerIDType BrokerID 经纪公司代码 必填
TThostFtdcInvestorIDType InvestorID 投资者代码 必填
TThostFtdcInstrumentIDType InstrumentID 合约代码 必填
TThostFtdcOrderRefType OrderRef 报单引用 可自定义或不填
TThostFtdcUserIDType UserID 用户代码
TThostFtdcCombOffsetFlagType CombOffsetFlag 开平标志 必填
TThostFtdcCombHedgeFlagType CombHedgeFlag 投机套保标志 必填
TThostFtdcDateType GTDDate GTD日期
TThostFtdcBusinessUnitType BusinessUnit 业务单元
TThostFtdcExchangeIDType ExchangeID 交易所代码 必填
TThostFtdcInvestUnitIDType InvestUnitID 投资单元代码
TThostFtdcAccountIDType AccountID 投资者帐号
TThostFtdcCurrencyIDType CurrencyID 币种代码
TThostFtdcClientIDType ClientID 客户代码
TThostFtdcIPAddressType IPAddress IP地址
TThostFtdcMacAddressType MacAddress Mac地址
TThostFtdcVolumeType VolumeTotalOriginal 数量 必填
TThostFtdcVolumeType MinVolume 最小成交量
TThostFtdcBoolType IsAutoSuspend 自动挂起标志 必填0
TThostFtdcRequestIDType RequestID 请求编号
TThostFtdcBoolType UserForceClose 用户强平标志
TThostFtdcBoolType IsSwapOrder 互换单标志 必填
TThostFtdcOrderPriceTypeType OrderPriceType 报单价格条件 必填
TThostFtdcDirectionType Direction 买卖方向 必填
TThostFtdcTimeConditionType TimeCondition 有效期类型 必填
TThostFtdcVolumeConditionType VolumeCondition 成交量类型 必填
TThostFtdcContingentConditionType ContingentCondition 触发条件 必填
TThostFtdcForceCloseReasonType ForceCloseReason 强平原因 必填
TThostFtdcPriceType LimitPrice 价格 必填
TThostFtdcPriceType StopPrice 止损价 必填
TThostFtdcOldInstrumentIDType reserve1 保留的无效字段
TThostFtdcOldIPAddressType reserve2 保留的无效字段
TThostFtdcOrderMemoType OrderMemo 报单回显字段
TThostFtdcSequenceNo12Type SessionReqSeq session上请求计数 api自动维护

OrderPriceType:确定输入的报单类型,比如限价单则填写THOST_FTDC_OPT_LimitPrice、市价单则填写THOST_FTDC_OPT_AnyPrice

Direction:确定买卖方向

CombOffsetFlag:确定开平标志。上期所和能源交易所支持平昨和平今指令,分别对应昨仓和今仓;如果下平仓指令,则等同于平昨指令。大商所、广期所、郑商所、中金所按交易所规则只能报入平仓指令,如果报入平昨平今指令ctp会转成平仓指令报出。

CombHedgeFlag:确定投机套保标志,注:郑商所平仓只能报入“投机”属性 例:投机 THOST_FTDC_BHF_Speculation

TimeCondition:确定报单有效期类型,目前只支持GFD和IOC,其他都不支持 例:立即完成,否则撤销 THOST_FTDC_TC_IOC,为支持大商所GIS属性交易指令,新增THOST_FTDC_TC_GFS枚举值

VolumeCondition:确定成交量类型

ContingentCondition:确定触发条件

StopPrice:止损价,用于条件单的触发价格

ForceCloseReason:普通用户下单填写THOST_FTDC_FCC_NotForceClose 非强平

IsSwapOrder:互换单填1

CurrencyID:不填写默认为CNY

OrderRef:OrderRef是本地会话全局唯一编号,必须保持递增;可由用户维护,也可由系统自动填写。一定为数字。

IPAddress:手工填写本机IP地址,不自动获取。填写规则如下:ipv4原样填写,ipv6要转成非零压缩地址,即原始地址,同时要去掉冒号,eg:AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH

MacAddress:手工填写本机Mac地址,不自动获取。

BusinessUnit:保留字段。

LimitPrice:郑商所报单的价格会被交易所按照最小变动价位截取。(eg:报入1500.9,最小变动价位是1,会被交易所截取为1500。)其他交易所则直接返回错误。

OrderMemo:报单回显字段,OrderMemo字段可供终端厂商标记订单使用,CTP不做处理,即终端填写什么CTP就返回什么

nRequestID:请求ID,对应响应里的nRequestID,无递增规则,由用户自行维护。

SessionReqSeq:一个session中,一笔业务流程周期中唯一序号,此序号由API自动填写,客户维护无效。

OrderMemo:该字段CTP不做任何处理,即终端填写什么CTP就返回什么。可以用来给多账户系统做标记用。

3. 返回

0,代表成功。

-1,表示网络连接失败;

-2,表示未处理请求超过许可数;

-3,表示每秒发送请求数超过许可数。

4. 调用示例

//限价单:
CThostFtdcInputOrderField ord = { 0 };
strcpy_s(ord.BrokerID, 0000);
strcpy_s(ord.InvestorID, 00001); 
strcpy_s(ord.ExchangeID, SHFE);
strcpy_s(ord.InstrumentID, ag1801);
strcpy_s(ord.UserID, 00001);
ord.OrderPriceType = THOST_FTDC_OPT_LimitPrice;//限价
ord.Direction = THOST_FTDC_D_Buy;//买
ord.CombOffsetFlag[0] = THOST_FTDC_OF_Open;//开
ord.CombHedgeFlag[0] = THOST_FTDC_HF_Speculation;//投机
ord.LimitPrice = 100;
ord.VolumeTotalOriginal = 1;
ord.TimeCondition = THOST_FTDC_TC_GFD;///当日有效
ord.VolumeCondition = THOST_FTDC_VC_AV;///任意数量
ord.MinVolume = 1;
ord.ContingentCondition = THOST_FTDC_CC_Immediately;
ord.StopPrice = 0;
ord.ForceCloseReason = THOST_FTDC_FCC_NotForceClose;
ord.IsAutoSuspend = 0;
m_pUserApi->ReqOrderInsert(&ord, nRequestID++);

5. FAQ

郑商所白糖期权的跨式和宽跨式套利指令,在ctp里如何实现?

和普通的限价单类似,不同的地方是在填写InstrumentID的时候

郑商所跨式组合(STD): STD SR703C5300&SR703P5300

郑商所宽跨式组合(STG): STG SR703C5300&SR703P5200

支持FAK和FOK

“已撤单报单被拒绝CZCE:出错:不支持无限制期权组合订单”是什么原因?

郑商所的组合合约下单,TimeCondition应该用THOST_FTDC_TC_IOC(1)。

如果下单后遇到报错“ctp:每秒报单数超过许可数”,是什么原因?

这是由于报单频率太快被前置流控所致。投资者可询问期货公司具体的流控设置;期货公司可以自行查看FLEX"程序化交易频繁报撤单管理"中的设置,以及Front的流控配置。注意:Front的流控会放到下一秒,不会报错;FLEX"程序化交易频繁报撤单管理"中的流控会报错。

“CTP:报单错误:不允许重复报单”,是什么原因?

这是表示OrderRef没有递增。

“CTP:无此权限”,是什么原因?

这可能InvestorID填写错误,或者该InvestorID不属于UserID的组织架构下。

“CTP:交易所未处理请求超过许可数”,是什么原因?

表示报单频率过快,超过了交易所的流控。

“CTP:交易所每秒发送请求数超过许可数”,是什么原因?

表示报单频率过快,超过了交易所的流控。

投机套保标志能够用来判断报单所使用的交易编码类型?

ctp支持,但是有些交易所不支持多交易编码。除中金所有投机、套保、套利三个交易编码外,其他交易所只有投机交易编码。并且交易编码还有做市商类型,但是投机套保中没有做市商这种类型。

req请求返回值为0,可能出现回报收不到的情况吗?

可能的,Req返回为0,代表socket.write成功,并不表示柜台那边已经收到了请求。不保证一定有OnRsp和OnErrRtn的情况。