后台程序化中用到如下,kd=1加上别的条件时就开多
k3:=10;
p1:ref(peak(4,k3,1),1);
p2:peak(4,k3,2);
p3:peak(4,k3,3);
kd:=cross(h,p1);
交易股票,日线,运行200根bar。模拟了几周发现有如下问题:
1,每天在9:30时会错误成交一批股票。用如下输出
if islastbar then begin
debugfile('D:\test2\TEST8.TXT',NUMTOSTR(currenttime,0)+' :p1:%.2f'+stkname,p1);
end
发现用的不是p1的价格,而是错误地把p2或者p3当作p1。
2,有时盘中比如10:30也会出现这种情况。
3,有时好几天开盘交易同一只错误的票,但是每次打开该票日线,数据都是全的。
已用股票池把股票刷新范围缩到50只,并且每日盘后下载数据。
请问是什么原因,是数据下载还是zig函数?
zig函数属于未来函数,你是没法通过ref这种行为来控制闪烁的,这个闪烁与走完k线那种闪烁是不同的概念的
所以即使p1闪烁也只会闪到最近某个价,不会闪烁到p2,p3。
peak函数作为未来函数,你所使用到的该函数的变量都会存在闪的可能,
另外你怎么那么判定使用的一定是p1的值,kd:=cross(h,p1);上面代码中最后一句使用的是p1参与计算.即使计算你错误,也不会用到你说的p2变量。
你自己用bebugfile吧其他的两个变量也抓出来对比。
另外,你上面代码执行过程中,你的判断的开仓错误的依据是什么?和图表k线图中的结果对比的?
我对照了错误下单时的debugfile出来的p1值。发现要么是图表上的p2, 要么是图表上的p3。
2018-07-23 09:30:13.575 93013 :p1:3.66红豆股份
2018-07-23 09:32:15.408 93215 :p1:9.48创意信息
2018-07-23 11:12:15.174 111215 :p1:9.48创意信息
你是拿后台输出的值是和图表对比了?这个函数计算是会受到计算起点影响的。你图表上计算的起点很可能和后台输出时的情况完全不一样。