以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- 关于重复开单的问题 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=163828) |
-- 作者:infocell -- 发布时间:2018/6/4 15:22:33 -- 关于重复开单的问题 我们的公式已经运行两年多了,原来采用等HIGH>buypoint或LOW<buypoint等方式,一直没有重复开单,最近加了一个全局变量限制开单时间间隔的语句,结果变成会重复发单了。
而且前后发单的消息是在不同K线上的,而重复发单后,在第二次发单时输出的公式中的参数居然没有变化,比如买手数和持仓数居然是完全一样的。
图表交易,选项:走完K线,等间隔扫描,高频,1秒。
代码如下:
MAX_GOT:=1; FOR I_tmp=1 TO 2 DO BEGIN IF LOW<=Buy_point[I_tmp] AND (EXITBARS>2 OR EXITBARS<0) THEN BEGIN
U_GOT:=ABS(TIMETOT0(CURRENTTIME)-EXTGBDATA(STR_GOT));//全局防撞单,初始设置为大于1秒
开多:buy(1,1,MARKETR),NOAXIS;
END
开单后,会把CURRENTTIME写入全局变量STR_GOT中。 t_tmp:=TIMETOT0(CURRENTTIME);
试过用TIME,也同样会重复开单,而且更严重。用CURRENTTIME只有在橡胶这种交易活跃的品种会出现重复发单,像MA就不会。
公式中输出的消息如下:
2018-06-04 13:59:00.741 7B20橡胶1809序列位置:3908,开多数:1,成交价:11705,持仓:1,浮动盈亏:-10,总买单数:1,资产:999990,实时:1,触发价格:11705
实盘中,只有第一个价格符合条件,原来也会从同一根K线中出来两个成交消息,但只会成交一单。但这次,在K线3909又出来同样的消息,又成交了一单。这种现象似乎不是信号闪烁,居然前一单成交后,第二单成交后,持仓还是不变,总买单数也不变。 不知是何原因,如何修改避免?请帮忙指导。
日志如下:
2018-06-04 13:59:00.835 【图表】L09 运行完毕
2018-06-04 13:59:04.267 【图表】PP01 运行完毕 |
-- 作者:FireScript -- 发布时间:2018/6/4 16:03:47 -- K线是什么周期的?从日志和输出记录来看,序列位置3908K和3809K 时间上已经超过1s了。也就是满足你设置的间隔了。并且下单也没限制在holding=0时才允许下单。 看上去有问题的是输出的持仓,盈亏等数据似乎有点问题,你上面给的日志是完整的?还是说中间去掉了一部分?02-03秒 中间这部分日志呢? |
-- 作者:infocell -- 发布时间:2018/6/4 16:10:31 -- 是在1秒线上,就是会重复开单,中间的日志都是一些没有用的,就删掉了。
|
-- 作者:infocell -- 发布时间:2018/6/4 16:12:29 -- 一个单子开出来后,我会通过设定标志位,避免二次开仓,原来都不会重复开仓的,但现在连续在两根K线开出相同的单子,由于前后持仓是一样的,用holding来限制后面的重复开仓,感觉也没有用啊。 |