以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  有办法延迟几秒发平仓单吗  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=175684)

--  作者:雪球
--  发布时间:2020/4/24 8:46:09
--  有办法延迟几秒发平仓单吗
大周期如日线及以上策略,由于止损需要,当根bar允许既开又平操作。这样有时就碰到了开仓还未成交的情况下止损平仓单就紧跟着发出了,如果出现堵单等情况交易次序就乱了,容易出现无仓可平(实际持仓0),而到后一bar时又持仓同步平仓。有办法延迟几秒发出平仓单吗?
--  作者:banzhuan
--  发布时间:2020/4/24 9:01:07
--  
程序化都是触发即委托,没有延迟N秒发出委托单,你用系统自带的止损功能试试
--  作者:雪球
--  发布时间:2020/4/24 12:05:09
--  
谢谢。那按序成交是哪个函数?能起作用吗?
--  作者:banzhuan
--  发布时间:2020/4/24 13:16:54
--  
ORDERQUEUE,该函数适用于成对使用,比分说满足了条件A时先平空再开多,单独一条指令可以间隔2秒后发单,您可以试下
--  作者:雪球
--  发布时间:2020/4/24 13:38:12
--  
谢谢。针对上面的情况,这个函数放在哪里呢?
--  作者:banzhuan
--  发布时间:2020/4/24 13:43:56
--  
放在止损平仓语句中
--  作者:雪球
--  发布时间:2020/4/24 13:48:02
--  
放在希望迟2秒发单的平仓句后面试下。
--  作者:雪球
--  发布时间:2020/4/27 12:07:49
--  
以下是引用banzhuan在2020/4/24 13:16:54的发言:
ORDERQUEUE,该函数适用于成对使用,比分说满足了条件A时先平空再开多,单独一条指令可以间隔2秒后发单,您可以试下

319行代码为 : 

sellshort(1,holding,limitr,dgfkp),ORDERQUEUE;

这个ORDERQUEUE并没延迟2秒"在54秒"时刻发单而是同在"52秒"这个时刻发单!为什么不起作用呢?

日记如下:

2020-04-27 09:40:52.147    【图表】框架:zh 触发下单 BUYSHORT 品种 IC00 下单K线 2020.04.27 09:41:00 公式:0422 窗格ID:Window5 代码行:116
2020-04-27 09:40:52.147    【图表】模型下单 1
2020-04-27 09:40:52.147    【图表】下单系数调整后 手数:1
2020-04-27 09:40:52.147    【图表】直接下单
2020-04-27 09:40:52.147    【图表】框架:zh 触发下单 SELLSHORT 品种 IC00 下单K线 2020.04.27 09:41:00 公式:0422 窗格ID:Window5 代码行:319
2020-04-27 09:40:52.163    【图表】模型下单 1
2020-04-27 09:40:52.163    【图表】下单系数调整后 手数:1
2020-04-27 09:40:52.163    【图表】实际持仓 0
2020-04-27 09:40:52.163    【图表】至队列下单
2020-04-27 09:40:52.163    【图表】IC00 运行完毕
2020-04-27 09:40:52.163    【下单】IC05 价5205.200195 量1 买卖1 类型0 开平0 账户636275 Formula 1
2020-04-27 09:40:52.163    【下单】已提交,订单ID :-735537445
2020-04-27 09:40:52.163    【队列】当前队列准备处理数据:1条
2020-04-27 09:40:52.163    【队列】发送下单指令
2020-04-27 09:40:52.163    【下单】实际持仓为0下单失败
2020-04-27 09:40:52.163    【队列】下单失败了
2020-04-27 09:40:52.241    【指令】收到回报指令 ID = -735537445
2020-04-27 09:40:52.241    【回报】636275 : IC05 - 已报单 1 价格:5205.2 开 卖
2020-04-27 09:40:52.256    【指令】收到Order回报指令 ID = -735537445 Status = 3
2020-04-27 09:40:52.272    【指令】收到成交回报指令 ORDERID = -735537445
2020-04-27 09:40:52.272    【回报】636275 : IC2005 - 已成交 1 价格:5207.6 开 卖
2020-04-27 09:40:52.288    【回报】636275 : IC2005 - 全部成交 1


--  作者:wenarm
--  发布时间:2020/4/27 12:36:30
--  

这个函数的说明中有详细介绍

加上ORDERQUEUE后,可简单的描述为:触发条件时,软件会先发出平仓指令,待收到平仓指令回报后,再发出开多指令。
详细的运行机制为:SELLSHORT、BUY单子形成了下单队列,SELLSHORT在前,BUY在后,当SELLSHORT单碰到有几下情况时,才会执行BUY委托单。(1)收到成交回报;(2)下单失败;(3)撤单(一旦队列下单不成交撤单后,再次委托会将委托追单排到最后)。

 

其次,以上规则适用于ORDERQUEUE成对出现或本身只有1条交易指令的情况。
但当出现以下情况(反手)且只有一条语句添加了ORDERQUEUE时,运行机制略有不同。
SELLSHORT(CROSS(C,MA,(C5),1,MARKET);
BUY(CROSS(C,MA,(C5),1,MARKET),ORDERQUEUE;
条件触发时,软件会发出SELLSHORT指令,ORDERQUEUE所在的指令会隔2秒后(区别)再发出,此例即BUY


--  作者:雪球
--  发布时间:2020/4/27 13:26:30
--  
意思是"单独一条语句使用"的情况下, 放在SellShort句是不会迟2秒发单?