能不能把这个sar指标改一下?
这是很久以前论坛里某个网友写的,比较接近文华的sar,因为自己也比较习惯了文华的sar。 但这个指标有个问题,就是反转的第一根K线不显示sar值,导致取不了反转时的sar值,谁能帮改一下,或者另外写一个也行,出来效果跟这个一样就行了。 //代码如下 Params Numeric AfStep(2);//参数设为2比较接近文华 Numeric AfLimit(2); Numeric Length(20); Vars series<Numeric> Mysar; Series<Numeric> Mysar1; Series<Numeric> Mysar2; Series<Numeric> HH; Series<Numeric> LL; Series<Numeric> MaxH; Series<Numeric> MinL; Numeric Xp; Numeric Xk; Numeric J; Events onBar(ArrayRef<Integer> indexs) { HH = HighestFC(H,Length); LL = LowestFC(L,Length); If(CurrentBar< Length+1) { Mysar = 0.5*(L+H); Mysar1 = 0; Mysar2 = 88888; MaxH = HH; MinL = LL; }Else If(CurrentBar == Length+1) { If(H<MaxH) { MaxH = Max(HH,MaxH[1]); MinL = Min(LL,MinL[1]); Mysar = MaxH; Mysar1 = MaxH; Mysar2 = 88888; SetGlobalVar(0,CurrentBar); }Else { MaxH = Max(HH,MaxH[1]); MinL = Min(LL,MinL[1]); Mysar = MinL; Mysar1 = 0; Mysar2 = MinL; SetGlobalVar(0,CurrentBar); } }Else If(CurrentBar > Length+1) { J = CurrentBar - GetGlobalVar(0); If(J == 0) { If(Mysar1 > 0) { MaxH = Max(H,MaxH[1]); MinL = Min(L,MinL[1]); Mysar = MaxH; Mysar1 = MaxH; Mysar2 = 88888; }Else If(Mysar2<88888) { MaxH = Max(H,MaxH[1]); MinL = Min(L,MinL[1]); Mysar = MinL; Mysar1 = 0; Mysar2 = MinL; } }Else If( J>0 ) { If(H[1] <= Mysar1[1]) { Xp = L[1] - Mysar1[1]; If(J<11) { Mysar1 = Mysar1[1]+AfStep*j*XP/100; MaxH = Min(H,MaxH[1]); MinL = Min(L,MinL[1]); Mysar2 = 88888; If(H > Mysar1) { SetGlobalVar(0,CurrentBar); //满足条件的Bar索引号// MaxH = Max(H,MaxH[1]); MinL = Min(L,MinL[1]); Mysar1 = 0; Mysar2 = MinL; Return; } }Else { Mysar1 = Mysar1[1]+AfLimit*XP/10; MaxH = Min(H,MaxH[1]); MinL = Min(L,MinL[1]); Mysar2 = 88888; If(H > Mysar1) { SetGlobalVar(0,CurrentBar); //满足条件的Bar索引号// MaxH = Max(H,MaxH[1]); MinL = Min(L,MinL[1]); Mysar1 = 0; Mysar2 = MinL; Return; } } }Else If(Low[1] >= Mysar2[1]) { Xk =High[1] - Mysar2[1]; If(J<11) { Mysar2 = Mysar2[1]+AfStep*j*Xk/100; MaxH = Max(H,MaxH[1]); MinL = Max(L,MinL[1]); Mysar1 = 0; If(Low < Mysar2) { SetGlobalVar(0,CurrentBar); //满足条件的Bar索引号// MaxH = Max(H,MaxH[1]); MinL = Max(L,MinL[1]); Mysar1 = MaxH; Mysar2 = 88888; Return; } }Else { Mysar2 = Mysar2[1]+AfLimit*Xk/10; MinL = Max(L,MinL[1]); MaxH = Max(H,MaxH[1]); Mysar1 = 0; If(Low <= Mysar2) { SetGlobalVar(0,CurrentBar); //满足条件的Bar索引号// MaxH = Max(H,MaxH[1]); MinL = Max(L,MinL[1]); Mysar1 = MaxH; Mysar2 = 88888; Return; } } } If(Mysar1 > 0) { Mysar = Mysar1; }Else If(Mysar2<88888) { Mysar = Mysar2; } } } PlotNumeric( "1" , Mysar) ; }