条件:比如做空,收盘突破n日最低点就交易X单位,随后只要是阴线且收盘比上一次的enterprice低,那就加仓X单位,加仓次数限制为3次。
加仓代码:
variable:m=0;
if holding<0 and close<open and close<ref(enterprice,enterbars+1) and m<3 and enterbars>=1
then begin
buyshort(1,ss,marketr);
m:=m+1;
end
出现问题:
红箭头处的第三次开仓其实并不符合我想要的条件,因为它的收盘并没有低于上一次的enterprice 。
是不是 close<ref(enterprice,enterbars+1) 出了问题?该如何修正?
是这个地方出了问题,可以输出enterbars进行查看。因为你的开仓指令用的是marketr本周期指令,enterbars在开仓位置输出的是0,在后面那根K上输出的是1,你在enterbars再加1,等于在第三根K上等于是close和第一根出开空信号K的close做了比较的。所以你可以把marketr指令换成market指令。使用本周期指令或次周期指令会导致enterbars这类函数输出的值有差异的,需要注意下。