在最前面 m1d赋值为5,也就是每次都会为5
如果你的本意是下单后减1手,第二天又从5开始,改为这样
if date<>ref(date,1) then m1d:=5;
m1d 每次都减少,最后会为0 ,为0 代表满仓。
开仓时还要加一个mid>0的限定
就这段代码,每次一执行策略,
一开始就会把M1D变为5,所以如果你的钱够,那么每次日内图上显示的开多,都应该是5手,一直到你的资金不够不再开仓为止(最后一个开多手数,小于等于5大于等于1)
总共开多的手数超过5,是正常的.
你再领会领会自己写的代码的意思,或者把你对自己代码的领悟写出来,看看可能是你哪里理解的有误
VARIABLE:m1d=0;
if date<>ref(date,1) then m1d:=5;//开仓手数
AA:=MA(C,5)>MA(C,20);
IF time>=092100 AND time<=145700 then begin
if AA then begin
sellshort(holding<0, holding,limitr,c);
buy(1,m1d,limitr,c);
m1d:=m1d-1;
end
end
if time>=151200 then begin
sell(1,0,limitr,c);
m1d:=0;
end
这样就可以了