[PEL] 复制代码 VARIABLE:KP1:=0,KP2:=0,KP3:=0;
macd1:="macd.macd1";
//开多1,平多1
kd1:macd1>0 and ref(macd1,1)<0;
pd1:macd1<0 and ref(macd1,1)>0;
k:="KDJ.k";
d:="KDJ.d";
//开多2,平多2
kd2:k>d and ref(k<d,1);
pd2:k<d and ref(k>d,1);
ma5:=ma(c,5);
ma10:=ma(c,10);
//开多3,平多3
kd3:cross(ma5,ma10);
pd3:cross(ma10,ma5);
//平仓时候根据记录的开仓价进行判断
if (c-kp1)>=10*MINDIFF and kp1<>0 then
begin
平多1:sell(1,1,market);
kp1:=0;//平仓重置全局变量
end
if (c-kp2)>=10*MINDIFF and kp2<>0 then
begin
平多2:sell(1,1,market);
kp2:=0;
end
if (c-kp3)>=10*MINDIFF and kp3<>0 then
begin
平多3:sell(1,1,market);
kp3:=0;
end
//单个条件每次开仓时候记录一个开仓价,后续平仓 会根据全局变量值判断是否盈利10个点,然后进行平仓
if kd1 and KP1=0 then
begin
开多1:buy(1,1,market);
KP1:=ENTERPRICE;//给全局变量赋值
end
if kd2 and KP2=0 then
begin
开多2:buy(1,1,market);
KP2:=ENTERPRICE;
end
if kd3 and KP3=0 then
begin
开多3:buy(1,1,market);
KP3:=ENTERPRICE;
end
你参考这个范例吧。这个范例里面 不同条件的开仓价,都执行10个盈利的平仓条件。
需要注意的是这里是一个开仓条件开仓一次的,平仓之前不会再开仓。核心就是定义和开仓对应的全局变量,三个条件(每个条件不重复开仓情况下)就设置三个全局变量。 每次开仓把开仓均价记录到全局变量值里去,每次平仓都必须重置对应全局变量,否则逻辑会紊乱。 如果你有一个全局的平仓条件,比如收盘全平,那么这时候就必须重置你所有的全局变量的值。
|