示例代码如下,仅供参考,建议你理解代码后,自行尝试修改。拐点的定义中有许多震荡的情况出现,如果要处理,必须给出明确的定义
[PEL] 复制代码 VARIABLE:KD_FALG=0,KK_FALG=0;
EMA100:EMA(C,100);
EMA13:EMA(C,13);
EMA8:EMA(C,8);
//成立时为多头趋势否者为空头趋势
KTXS:EMA100>REF(EMA100,1) AND REF(EMA100,1)>REF(EMA100,2);
KD_COND:KTXS=1 and ref(KTXS=1,1) and ref(low>EMA100,1) and low<EMA100;//开多条件
KK_COND:KTXS=0 and ref(KTXS=0,1) and ref(high<EMA100,1) and high>EMA100;//开空条件
DTZS:CROSS(EMA13,EMA8);//多头止盈
KTZS:CROSS(EMA8,EMA13);//空头止盈
if KD_COND=1 then begin
BUY(HOLDING=0 AND KD_FALG<2,1,MARKET);
KK_FALG:=0;//在多头趋势下,将空头的平仓标志置0
END
if KK_COND=1 then begin
BUYSHORT(HOLDING=0 AND KK_FALG<2,1,MARKET);
KD_FALG:=0;
END
if KTXS=0 then begin
SELL(HOLDING>0,HOLDING,MARKET); //当多头趋势转换为空头趋势时,平多头仓位
KD_FALG:=0;
end
if KTXS=1 then begin
SELLSHORT(HOLDING<0,HOLDING,MARKET);//当空头趋势转换为多头趋势时,平空头仓位
KK_FALG:=0;
end
if DTZS=1 and HOLDING>0 then begin
多头止盈:SELL(1,HOLDING,MARKET);
KD_FALG:=KD_FALG+1;//记录多头平仓次数,
END
if KTZS=1 and HOLDING<0 then begin
空头止盈:SELLSHORT(HOLDING<0,HOLDING,MARKET);
KK_FALG:=KK_FALG+1;//记录空头平仓次数
END
|