如何定义在信号出现后N个周期内如果价格波动不超过M的范围,则即使出现开平仓条件也不执行。
请老师帮忙写下,谢谢!
如上图在很小周期内价格波动也很小,但满足了开平仓条件,想屏蔽掉这些信号。
嗯,还有个条件是在出现信号后个N个周期内,例如当开仓信号出现后的10个周期内满足h-l>=m则平仓
nn:=barslast(开仓条件)+1;
if nn<=10 and h-l>m then 开仓语句;
老师,由于是新手,上面的语句还是不明白。
此主题相关图片如下:123.jpg
上图最左边出现一个“开空”信号,随后出现一个平仓信号,但是平仓信号之后价格波动又没超过m,又没超过平仓信号后nn个周期在次出现开仓信号,怎样写假如平仓信号出现后在nn周期内价格波动没有超过m,不发出前一个相同的信号,如果出现反向开仓信号的话则继续发出。
runmode:0;
input:n1(4,1,100,1);
input:n2(9,1,100,1);
input:n3(18,1,100,1);
ma1:=ma(close,n1);
ma2:=ma(close,n2);
ma3:=ma(close,n3);
if holding=0 then begin
if close>ma1 and ma1>ma2 and ma2>ma3 then
buy(1,1,limitr,close);
end
if holding=0 then begin
if close<ma1 and ma1<ma2 and ma2<ma3 then
buyshort(1,1,limitr,close);
end
if holding>0 then begin
if ma1<ma2 then
sell(1,holding,limitr,close);
end
if holding<0 then begin
if ma1>ma2 then
sellshort(1,holding,limitr,close);
end
以上是克罗均线代码,麻烦老师在上述代码中完成以上提成的思路,谢谢。
runmode:0;
input:m(10,1,100,1);
input:n1(4,1,100,1);
input:n2(9,1,100,1);
input:n3(18,1,100,1);
ma1:=ma(close,n1);
ma2:=ma(close,n2);
ma3:=ma(close,n3);
开多:=CLOSE>ma1 and ma1>ma2 and ma2>ma3;
开空:=close<ma1 and ma1<ma2 and ma2<ma3;
nn1:=BARSLAST(开多)+1;
nn2:=BARSLAST(开多)+1;
tj1 := nn1<=10 and h-l>m;
tj2 := nn2<=10 and h-l>m;
if holding=0 then tj1 begin
if 开多 then
buy(1,1,limitr,close);
end
if holding=0 then tj2 begin
if 开空 then
buyshort(1,1,limitr,close);
end
if holding>0 then begin
if ma1<ma2 then
sell(1,holding,limitr,close);
end
if holding<0 then begin
if ma1>ma2 then
sellshort(1,holding,limitr,close);
end
是这样把条件加进去吗?但看没变化,跟预期的不一样