variable:lossnum=0;// 全局变量,平仓时判断一下是盈利/亏损,若亏损lossnum就加1
cs:=5;//限定一天最多亏损5次
ma5:=ma(5,close);
ma20:=ma(20,close);
cond1:=cross(ma5,ma20);
cond2:=cross(ma20,ma5);
if cond2 and holding>0 then
begin
sell(1,1,thisclose);
if c<enterprice then lossnum:=lossnum+1;
end
if cond1 and holding=0 and lossnum<cs then buy(1,1,thisclose);
if time=closetime(0) then lossnum:=0;// 商品期货,收盘的同时,lossnum赋值为0
//收盘lossnum不赋值为0,第二天就不再开仓了
计算亏损需要有平仓动作,那么你的平仓是每天也只平1次,还是没有限制,如果是前者,那中间如果其中一天没有平仓动作。要从新记连亏?
if time=closetime(0) and lossnum=5 then lossnum:=0;//lossnum=5时作为第六天的一个条件,在第六天最后时刻将其初始化为0即可
看下这个逻辑
variable:flag_num=0;//作为记录亏损5次后经过的天数。
if date<>ref(date,1) and lossnum=5 then flag_num:=flag_num+1;//开盘第一根并且lossnum=5时,开始启动记录flag_num
if date<>ref(date,1) and flag_num=2 then begin
lossnum:=0;
flag_num:=0;
end