{/// Bemac June 2006 \\\\ / Fantail@ Variable MA's \} {Calculate Wilders Average Directional Index [ADX] } TH:= IF(Ref(Close,-1) > High,Ref(Close,-1), High); TL:= IF(Ref(Close,-1) < Low ,Ref(Close,-1), Low ); TR:= TH-TL; {--------------} PlusDM := IF(High > Ref(High,-1) AND Low >= Ref(Low,-1) , High-Ref(High,-1) , If(High > Ref(High,-1) AND Low < Ref(Low,-1) AND High - Ref(High,-1) > Ref(Low,-1) - Low , High - Ref(High,-1) ,0)); PlusDI := 100 * Wilders(PlusDM,ADXPr) / Wilders(Tr,ADXPr); MinusDM:= IF(Low < Ref(Low,-1) AND High <= Ref(High,-1) , Ref(Low,-1) - Low , If(High > Ref(High,-1) AND Low < Ref(Low,-1) AND High - Ref(High,-1) < Ref(Low,-1) - Low , Ref(Low,-1) - Low ,0)); {--------------} MinusDI := 100 * Wilders(MinusDM,ADXPr) / Wilders(Tr,ADXPr); DIDif := Abs(PlusDI - MinusDI); DISum := PlusDI + MinusDI; ADXFinal := 100 * Wilders(DIDif/DISum,ADXPr); ADXRCustom:= (ADXFinal + Ref(ADXFinal,1-ADXPr)) / 2; _ADX := IF( ADXtype = 0 ,ADXFinal ,ADXRCustom); {Calculate a Variable Moving Average using method devised by Tushar Chande} Barnum := BarCount(); EmaIndex:= IF(VarMAPr > 0 ,(2 / (1+VarMAPr)) ,0.20); Diff := HHV(_ADX, ADXPr) - LLV(_ADX, ADXPr); MyConst := IF(Diff > 0 ,(_ADX - LLV(_ADX,ADXPr)) / Diff ,EmaIndex); MyConst := IF(MyConst > EmaIndex ,EmaIndex ,MyConst); VarMA := IF(Barnum < ADXPr + (ADXPr * 1.5) , Close ,MOV((((1 - MyConst) * Ref(VarMA,-1)) + (MyConst * Close)), 2, s)); {Calculte & Plot Multiple MA's of the Variable Moving Average} MA1 :=Mov(VarMA, 2,Initial_MA_Type); MA2 :=Mov(VarMA, 4,Initial_MA_Type); MA3 :=Mov(VarMA, 6,Initial_MA_Type); MA4 :=Mov(VarMA, 8,Initial_MA_Type); MA5 :=Mov(VarMA,10,Initial_MA_Type); MA6 :=Mov(VarMA,12,Initial_MA_Type); MA7 :=Mov(VarMA,14,Initial_MA_Type); MA8 :=Mov(VarMA,16,Initial_MA_Type); MA9 :=Mov(VarMA,18,Initial_MA_Type); MA10:=Mov(VarMA,20,Initial_MA_Type); MA11:=Mov(VarMA,22,Initial_MA_Type); MA12:=Mov(VarMA,24,Initial_MA_Type); MA13:=Mov(VarMA,26,Initial_MA_Type); MA14:=Mov(VarMA,28,Initial_MA_Type); MA15:=Mov(VarMA,30,Initial_MA_Type); MA16:=Mov(VarMA,32,Initial_MA_Type); MA17:=Mov(VarMA,34,Initial_MA_Type); MA18:=Mov(VarMA,36,Initial_MA_Type); MA19:=Mov(VarMA,38,Initial_MA_Type); MA20:=Mov(VarMA,40,Initial_MA_Type); MA21:=Mov(VarMA,42,Initial_MA_Type); MA22:=Mov(VarMA,44,Initial_MA_Type); MA23:=Mov(VarMA,46,Initial_MA_Type); MA24:=Mov(VarMA,48,Initial_MA_Type); MA25:=Mov(VarMA,50,Initial_MA_Type); MA26:=Mov(VarMA,52,Initial_MA_Type); MA27:=Mov(VarMA,54,Initial_MA_Type); MA28:=Mov(VarMA,56,Initial_MA_Type); MA29:=Mov(VarMA,58,Initial_MA_Type); MA30:=Mov(VarMA,60,Initial_MA_Type); MA31:=Mov(VarMA,62,Initial_MA_Type); MA32:=Mov(VarMA,64,Initial_MA_Type); MA33:=Mov(VarMA,66,Initial_MA_Type); MA34:=Mov(VarMA,68,Initial_MA_Type); MA35:=Mov(VarMA,70,Initial_MA_Type); MA36:=Mov(VarMA,72,Initial_MA_Type); MA37:=Mov(VarMA,74,Initial_MA_Type); MA38:=Mov(VarMA,76,Initial_MA_Type); MA39:=Mov(VarMA,78,Initial_MA_Type); MA40:=Mov(VarMA,80,Initial_MA_Type); MA41:=Mov(VarMA,82,Initial_MA_Type); MA42:=Mov(VarMA,84,Initial_MA_Type); MA43:=Mov(VarMA,86,Initial_MA_Type); MA44:=Mov(VarMA,88,Initial_MA_Type); MA45:=Mov(VarMA,90,Initial_MA_Type); MA46:=Mov(VarMA,92,Initial_MA_Type); MA47:=Mov(VarMA,94,Initial_MA_Type); MA48:=Mov(VarMA,98,Initial_MA_Type); MA49:=Mov(VarMA,100,Initial_MA_Type);