HOLT EMA

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #19251 quote
    supertiti
    Participant
    Master

    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.

    ///////////////////////////////////////////////////////////

    // HOLT EMA V1
    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 begin
        value1 = price;
        b = 0.0;
    end else begin
        value1 = (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);
    

    ///////////////////////////////////////////////////////////

    // HOLT EMA V2
    
    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 begin
        value1 = price;
        b = 0.0;
    end else begin
        value1 = (1-myalpha)*(value1[1] + b[1]) + myalpha*price;
        b = (1-mygamma)*b[1] + mygamma*(value1 - value1[1]);
    end;
    
    HoltEMA = value1;
    

    /////////////////////////////////////////////////////////////

    // HOLT EMA V3
    
    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
        #beginCmtryOrAlert
            CommentaryCL("  slope: ", slope);
        #End;
    end;
    
    Plot6( value1, "HoltEMA", iff(value1 > value1[1], value2, value3));
    NoPlot(1);
    NoPlot(2);
    NoPlot(3); 
    NoPlot(4);
    NoPlot(5);
    

    ///////////////////////////////////////////////////////////

    #19292 quote
    Nicolas
    Keymaster
    Master

    Sauf 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:

    //PRC_Holt EMA | indicator
    //28.12.2016
    //Nicolas @ www.prorealcode.com
    //Sharing ProRealTime knowledge
    //Converted from EasyLanguage version
    
    // --- parameters
    //gmma = 40
    //alpha = 20
    // ---
    
    price = customclose
    
    if alpha > 1 then 
    myalpha = 2.0/(alpha+1.0) 
    else 
    myalpha = alpha
    endif
    if gmma > 1 then 
    mygamma = 2.0/(gmma+1) 
    else 
    mygamma = gmma
    endif
    
    If barindex = 1 then 
    value1 = price
    b = 0.0
    else 
    value1 = (1-myalpha)*(value1[1] + b[1]) + myalpha*price
    b = (1-mygamma)*b[1] + mygamma*(value1 - value1[1])
    endif
    
    HoltEMA = value1
    
    return HoltEMA

    Concernant 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.

    holt-EMA.png holt-EMA.png
    #19299 quote
    supertiti
    Participant
    Master

    Super Nicolas !

    j ai bien essaye de faire qqchose mais sans grande reussite, quand le chef s’ y met ca va nettement mieux

    passes de bonnes fetes et ne fait pas trop chauffer le clavier

    #19347 quote
    Nicolas
    Keymaster
    Master

    En 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.

    holt-ema-slope.png holt-ema-slope.png
    #19365 quote
    supertiti
    Participant
    Master

    merci Nicolas, c’est déjà installé pour voir ! la pente dans la moyenne reflété par les couleurs me semble intéressant.

    Bons trades à tous.

Viewing 5 posts - 1 through 5 (of 5 total)
  • You must be logged in to reply to this topic.

HOLT EMA


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
supertiti @supertiti Participant
Summary

This topic contains 4 replies,
has 2 voices, and was last updated by supertiti
9 years, 2 months ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 12/28/2016
Status: Active
Attachments: No files
Logo Logo
Loading...