BUY(C>O&&EXITBARS>0&&HOLDING=0,1,THISCLOSE);
sell(C=LLV(C,3)&&HOLDING>0,HOLDING,THISCLOSE);
BUYSHORT(C<O&&EXITBARS>0&&HOLDING=0,1,THISCLOSE);
SELLSHORT(C=HHV(C,3)&&HOLDING<0,HOLDING,THISCLOSE);
简单写了个测试策略,限定一根K线只能够出一个信号,但是加载到主图没有信,麻烦老师们帮忙看看什么问题,谢谢
variable:n=0;
if n=0 and holding=0 and c>o then begin
buy(1,1,market);
n:=1;
end
if n=0 and holding=0 and c<o then begin
buyshort(1,1,market);
n:=1;
end
if n=1 then begin
BUY(C>O&&EXITBARS>0&&HOLDING=0,1,THISCLOSE);
sell(C=LLV(C,3)&&HOLDING>0,HOLDING,THISCLOSE);
BUYSHORT(C<O&&EXITBARS>0&&HOLDING=0,1,THISCLOSE);
SELLSHORT(C=HHV(C,3)&&HOLDING<0,HOLDING,THISCLOSE);
end
先写第一次开仓,后面的是后续开仓
你那样写不觉得逻辑有问题吗?开仓条件是平仓周期,而没有开仓,那么平仓周期哪里来呢?
LLV 函数在逐K线模式下不能直接在IF控制语句之内引用。请参阅帮助公式部分的解决方案。
上边的策略出现这个问题,请问该怎么解决?
variable:n=0;
l3:=llv(c,3);
h3:=hhv(h,3);
if n=0 and holding=0 and c>o then begin
buy(1,1,market);
n:=1;
end
if n=0 and holding=0 and c<o then begin
buyshort(1,1,market);
n:=1;
end
if n=1 then begin
BUY(C>O&&EXITBARS>0&&HOLDING=0,1,THISCLOSE);
sell(C=l3 and HOLDING>0,HOLDING,THISCLOSE);
BUYSHORT(C<O&&EXITBARS>0&&HOLDING=0,1,THISCLOSE);
SELLSHORT(C=h3 and HOLDING<0,HOLDING,THISCLOSE);
end
我增加一个条件,平多后超过5个周期才能开空,平空后超过5个周期才能开多,代码如下:
variable:n=0;
l3:=llv(c,3);
h3:=hhv(h,3);
D1:=VALUEWHEN(EXITBARS=0&&HOLDING=0,REF(HOLDING,1))>0 and EXITBARS>5;//平多后超过5个周期才开空
D2:=VALUEWHEN(EXITBARS=0&&HOLDING=0,REF(HOLDING,1))<0 and EXITBARS>5;//平空后超过5个周期才开多
if n=0 and holding=0 and c>o then begin
buy(1,1,market);
n:=1;
end
if n=0 and holding=0 and c<o then begin
buyshort(1,1,market);
n:=1;
end
if n=1 then begin
BUY(C>O&&EXITBARS>0&&HOLDING=0&&D2,1,THISCLOSE);
sell(C=l3 and HOLDING>0,HOLDING,THISCLOSE);
BUYSHORT(C<O&&EXITBARS>0&&HOLDING=0&&D1,1,THISCLOSE);
SELLSHORT(C=h3 and HOLDING<0,HOLDING,THISCLOSE);
end
但是加载在主图上没有信号,是不是哪里写错了,麻烦老师检查一下,谢谢
variable:n=0;
l3:=llv(c,3);
h3:=hhv(h,3);
if n=0 and holding=0 and c>o then begin
buy(1,1,market);
n:=1;
end
if n=0 and holding=0 and c<o then begin
buyshort(1,1,market);
n:=1;
end
if n=1 then begin
SELLSHORT(C=h3 and HOLDING<0,HOLDING,THISCLOSE);
BUY(C>O and EXITBARS>5 and HOLDING=0 ,1,THISCLOSE);
sell(C=l3 and HOLDING>0,HOLDING,THISCLOSE);
BUYSHORT(C<O and EXITBARS>5 and HOLDING=0 ,1,THISCLOSE);
end
上边的这种写法,只是平仓后超过5个周期才开仓,并没有区分平多或者平空啊