本帖最后由 技术009 于 2024-12-17 09:40 编辑
集合竞价期间报单,首先需要了解
1.撤单,报单(仅限价)只能在申报阶段进行. 进入撮合阶段后是不能再申报和撤单的了。目前大商所、上期所和能源中心夜盘品种会有2次集合竞价阶段,需要注意的郑商所在8点55分至8点59分之间仅夜盘品种的撤销委托,不接受报单委托.
2.申报阶段是没有实际成交落地的,所以这个时候是没有K形成的,基础K数据依然停留在上次连续交易结束后的状态。 盘口的动态数据在申报期间也是不可获取的. 如调用盘口价格进行报单之类的操作,可能会导致错误.
软件需要做相应设置
1.工具-选项-交易设置:
2.后台程序化这里:
3.在后台程序化设置里,这个选项必须勾选(默认就是勾选的),请勿去掉勾选:
注意事项
1.客户端本地必须有对应周期的K线数据。如果完全没有历史数据,程序是不能执行不间断监控的,自然也不能触发申报期间的下单操作。
2.平仓信号+监控连续合约+换月得情况下,建议手工处理下旧合约仓位。集合竞价期间连续合约已经映射到新的具体合约了,此时如果你在集合竞价期间触发的信号是平仓信号,它是会操作到新合约上去的。而实际这时候你持仓的还是老合约,这时候可能需要手工处理掉老仓位或者增加自行处理换月的逻辑,但是需要留意这种情况下代码逻辑会变得更加复杂。
我们提供了一个可供参考的集合竞价申报期间进行操作的的代码模版(不包含夜盘品种的第二次集合竞价): 这个模板区将集合竞价和连续交易阶段的下单部分进行了隔离,方便进行差异化的控制和处理。另外集合竞价的时间判断上也略微做了偏移,避免因为本地时间不准确出现废单问题。
[PEL] 复制代码 cd:CLOSETIME(4)=CLOSETIME(0);//返回1表示有夜盘,否则没夜盘。仅限国内期货品种
//集合竞价判断
//注意:这里的时间判断上略偏移几防止本地时间比柜台时间略快时候导致的报单失败
tcon1:=currenttime>=85503 and currenttime<85900;//无夜盘品种
tcon2:=currenttime>=205503 and currenttime<205900;//有夜盘品种
tcon3:=currenttime>=92503 and currenttime<92900;//中金所品种
集合竞价:if(cd,tcon2,if(LOWERSTR(MARKETLABEL)='zj',tcon3,tcon2));
//连续交易判断
tcon1:=currenttime>90003;//无夜盘品种
tcon2:= TIMEZONECONVER(currenttime)>10003;//有夜盘品种,这里必须转换为金字塔时间进行判断。否则白盘北京时间是小于21000的。
tcon3:=currenttime>93003;//中金所品种
连续交易:if(cd,tcon2,if(LOWERSTR(MARKETLABEL)='zj',tcon3,tcon2));
//集合竞价期间
//注意报单价,如果不合理有可能撮合不成交
if 集合竞价 then
begin
//集合竞价期间报单代码
end
//连续交易阶段
if 连续交易 then
begin
end
|