此主题相关图片如下:sbu4oxz_0vkmjcvctlo%h.jpg
1,ZIG原理本身就是包含未来,实时状态不好给出
2,看下您求的是那个价格,看看实际条件历史后有没满足
zig函数的定义是从一个已知的高点或者低点算起,下跌n%后,价格穿越这个n%成立时,zig转折成立。
因此,zig函数应该自动测算从第一个数据以来,最高点下跌或者最低点上涨对应前面的一个绝对高点或者低点的位置,然后做出n%是否越过的逻辑判断。
一旦成立,则前面的转折就变成历史,不再发生任何变化。所以,zig函数对于前面的已经成立的数据不是未来函数。
本贴的意思也是因为这样的理解才发现如图上的问题的。如图问题的出现,个人认为不符合zig的数据逻辑筛选的原理。或者筛选数据时的前期逻辑有漏洞。
//最小变动价位:
zx:DYNAINFO(208),LINETHICK0;
//zx是最小变动价位,实际中为2个,除以2再乘以y,则可以实现y为最小一个变动价位。
n:=(zx/2)*y;
DK:=ZIG(4,n/10),LINETHICK2;
hk:=VALUEWHEN(dk<=ref(dk,1) and ref(DK,1)>REF(DK,2),REF(DK,1)*(1-N/1000)-0.0001);
Lk:=VALUEWHEN(dk>=ref(dk,1) and ref(DK,1)<REF(DK,2),REF(DK,1)*(1+N/1000)+0.0001);
HD:IF(DK<=ref(DK,1) AND DK>HK,HK,DK),LINETHICK2,COLORGREEN;
LD:iF(DK>=REF(DK,1) AND DK<LK,LK,DK),LINETHICK2,COLORRED;
{买开,卖开条件}
MC1:=IF(DK>=REF(DK,1) AND REF(DK,1)<REF(DK,2) AND l>LK,1,0);
MC2:=IF(DK>=REF(DK,1) AND CROSS(l,LK),1,0);
MR1:=IF(DK<=REF(DK,1) AND REF(DK,1)>REF(DK,2) AND h<HK,1,0);
MR2:=IF(DK<=REF(DK,1) AND CROSS(HK,h),1,0);
{买入卖出条件}
Mc:=if(MC1=1 OR MC2=1,1,0);
Mr:=IF(MR1=1 OR MR2=1,1,0);
pd:=MR;//平多条件
kd:=MC;//开多条件
PK:=Mc;//开空条件
KK:=Mr;//平空条件
//以下为平仓反手时的语法,先开多,后平空;
//注意,用 LIMITR语句仍未下一个开盘成交,用limit怎么样?
if kd then
begin
sellshort(holding<0,0,MARKET);
buy(holding=0 and kd ,1,MARKET);
end
if kk then
begin
sell(holding>0,0,MARKET);
buyshort(holding=0 and kk,1,MARKET);
end