HOLT EMA
Forums › ProRealTime forum Français › Support ProBuilder › HOLT EMA
- This topic has 4 replies, 2 voices, and was last updated 7 years ago by supertiti.
-
-
12/28/2016 at 3:24 PM #19251
Bonjour à tous,
Au fil de mes périgrinations sur la toile je suis tombé sur cette moyenne mobile exponentielle qui apparemment serait assez utilisée sur le forex.
Si une bonne âme veut bien convertir ces codes que j’ai trouvé et baptisé V1-V2-V3. afin de vérifier sa pertinence.
Bonnes fêtes de fin d’année.
///////////////////////////////////////////////////////////
12345678910111213141516171819202122<strong>// HOLT EMA V1</strong>input: price(close), gmma(40), alpha(20);vars: mygamma(gmma), myalpha(alpha), b(0);if alpha > 1 then myalpha = 2.0/(alpha+1.0) else myalpha = alpha;if gmma > 1 then mygamma = 2.0/(gmma+1) else mygamma = gmma;If CurrentBar = 1 then beginvalue1 = price;b = 0.0;end else beginvalue1 = (1-myalpha)*(value1[1] + b[1]) + myalpha*price;b = (1-mygamma)*b[1] + mygamma*(value1 - value1[1]);end;Plot1( value1, "Rising" );Plot2( value1, "Falling" );Plot3( value1, "Neutral" );Plot4( value1, "HoltEMA", iff(value1=value1[1], GetPlotColor(3), iff(value1>value1[1], GetPlotColor(1), GetPlotColor(2))));NoPlot(1);NoPlot(2);NoPlot(3);///////////////////////////////////////////////////////////
1234567891011121314151617<strong>// HOLT EMA V2</strong>input: price(NumericSeries), gmma(NumericSimple), alpha(NumericSimple);vars: mygamma(gmma), myalpha(alpha), b(0);if alpha > 1 then myalpha = 2.0/(alpha+1.0) else myalpha = alpha;if gmma > 1 then mygamma = 2.0/(gmma+1) else mygamma = gmma;If CurrentBar = 1 then beginvalue1 = price;b = 0.0;end else beginvalue1 = (1-myalpha)*(value1[1] + b[1]) + myalpha*price;b = (1-mygamma)*b[1] + mygamma*(value1 - value1[1]);end;HoltEMA = value1;/////////////////////////////////////////////////////////////
123456789101112131415161718192021222324252627282930313233343536<strong>// HOLT EMA V3</strong>input: price(close), gmma(40), alpha(20), angle1(30), angle2(60);vars: mygamma(gmma), myalpha(alpha), b(0), slope(0), debug(1);value1 = HoltEMA(price, gmma, alpha);slope = (arctangent((value1-(value1[1]+value1[2])/2)/1.5/(minmove/pricescale)));condition1 = value1 > value1[1];condition2 = slope >= angle2;condition3 = slope >= angle1;condition4 = slope <= -1*angle2;condition5 = slope <= -1*angle1;Plot1( value1, "FastRising" );Plot2( value1, "Rising" );Plot3( value1, "Neutral" );Plot4( value1, "Falling" );Plot5( value1, "FastFalling" );value2 = iff(condition2, GetPlotColor(1), iff(condition3, GetPlotColor(2), GetPlotColor(3)));value3 = iff(condition4, GetPlotColor(5), iff(condition5, GetPlotColor(4), GetPlotColor(3)));if debug = 1 then begin#beginCmtryOrAlertCommentaryCL(" slope: ", slope);#End;end;Plot6( value1, "HoltEMA", iff(value1 > value1[1], value2, value3));NoPlot(1);NoPlot(2);NoPlot(3);NoPlot(4);NoPlot(5);///////////////////////////////////////////////////////////
12/28/2016 at 8:02 PM #19292Sauf erreur de ma part les codes des versions 1 et 2 sont identiques, ci-dessous le code de la HOLT EMA pour PRT que je posterai dans la bibliothèque de codes prorealtime plus tard:
1234567891011121314151617181920212223242526272829303132333435//PRC_Holt EMA | indicator//28.12.2016//Nicolas @ www.prorealcode.com//Sharing ProRealTime knowledge//Converted from EasyLanguage version// --- parameters//gmma = 40//alpha = 20// ---price = customcloseif alpha > 1 thenmyalpha = 2.0/(alpha+1.0)elsemyalpha = alphaendifif gmma > 1 thenmygamma = 2.0/(gmma+1)elsemygamma = gmmaendifIf barindex = 1 thenvalue1 = priceb = 0.0elsevalue1 = (1-myalpha)*(value1[1] + b[1]) + myalpha*priceb = (1-mygamma)*b[1] + mygamma*(value1 - value1[1])endifHoltEMA = value1return HoltEMAConcernant le “v3” dont tu as posté le code, il s’agirait en fait d’un oscillateur de la slope (pente) de cette moyenne mobile de Holt, je vais y regarder également.
12/28/2016 at 8:40 PM #1929912/29/2016 at 1:07 PM #19347En fait, l’indicateur n°3 dont tu as posté le code utilise la Holt EMA comme une fonction, mesure sa pente en degré et retourne la moyenne mobile de différentes couleurs selon son degré d’inclinaison.
Ci-joint attaché le code de l’indicateur en question et un exemple sur le graphique.
La formule du mesure de la pente en degré est plutôt sympa je dois avouer. Je pourrai l’utiliser pour en faire plutôt une variation dynamique de la couleur en RGB type “arc-en-ciel”, car ici on n’utilise que 5 couleurs différentes selon l’inclinaison de la pente et des conditions testées sur “angle1” et “angle2” qui sont 2 variables paramétrables cependant. Bref, un bon exercice et un nouvel ajout à la bibliothèque de codes pour le bonheur de tous. Je te laisse regarder de quoi il en retourne, je n’ai pas bien cerné si la Holt EMA a un quelconque intérêt de mon côté..
Attention cet indicateur avec variation de couleur n’est compatible qu’à partir de la version 10.3.
12/29/2016 at 3:57 PM #19365 -
AuthorPosts