Let me say Hello to the MT4 comunity... My name is Walter and I am doing some research on forex... my homebase Forum is
Traders Laboratory I just started there a thread about a new powerfull method I am developing that you can access it here
Walter`s Forex "Trend Trades" - Traders Laboratory - Active Traders Forum so far I am using an indicator created by Bemac from VT right here
Fantail Variable MA's - Visual TRading Charts Forum the indicator is called Fantail VMA`s... (thanks Bemac กก ) its a very simple indicator wich uses a VMA as the base average and from there he creates a rainbow of emas from the vma... Now this VMA is constructed with an ADX to determine volatility wich makes it a very peculiar indicator... I come here to ask some collaboration from you programmers at here TSD as I know that programming this simple indicator for MT4 will seriously benefit the MT4 comunity... its a simple one and I might say also a powerfull one...
Here I attach the VT formula:
{/// 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);
So this is my request... I will really aprecciate this... thanks in advance, Walter.