背景:
0.使用及购买的是标准版;
1.写程序的时候,选了序列不行,必须选逐K线模式;
2.信号执行选择的是固定间隔15秒。
3.下单品种另制定。
4.相关程序:
INPUT:tq(75);
K终:=(time0-timetot0(dynainfo(207))<=tq) or not(ISLASTBAR); //tq自己指定一个秒数
if K终=1 then begin
sellshort(conbpk,0,thisclose),orderqueue,ignorecheckprice;
buy(conbpk and holding=0,ss,thisclose),orderqueue,ignorecheckprice;
sell(conspk,0,thisclose),orderqueue,ignorecheckprice;
buyshort(conspk and holding=0,ss,thisclose),orderqueue,ignorecheckprice;
end
问题:
理应在10:00前75秒信号出现并执行,但没发生,于是我在9:59:09秒手动操作。
后来k线上也出信号了。
为什么,应该怎么解决?
你这是信号闪烁了吧。
你的开平仓的条件conbpk conspk
如何定义的呢?如果代码里面有闪烁和变动的情况,那就会出现你说的情况。时间条件是其一,你这个开仓条件本身也是影响因素啊。
我正想补充一点,当时信号并不闪烁,至少在9:55分之后,价格比信号临界点少3点以上。
如果写得没问题,那为安全起见,固定间隔调到1秒,tick级别刷新比较好咯?
1.信号是否闪烁,你可以直接使用debugfile输出条件定位当时的成立状态。
2.语法逻辑上没问题,至于间隔时间是你根据自己实际需求使用的,时间间隔越短对计算机的资源消耗也会不断增加。
请问怎么使用debugfile输出条件定位当时的成立状态?
我加了这一行
Sign:=conbpk or conspk;
if islastbar then
DEBUGFILE('D:\00投资投机\Weisoft Stock(x64)\Setting\TEST.TXT' ,‘信号',sign);//输出开仓条件 @@@@注意:如果是序列工作模式,请使用 CONST 函数将buycond等序列变量转化为单值数据以提高字符串操作的工作效率。@@@@@@
那以后就能在日志里看到了吧。如果有信号的话。
DEBUGFILE('D:\00投资投机\Weisoft Stock(x64)\Setting\TEST.TXT' ,'信号%.2f',sign);