4MACD from AFL

Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
    Posts
  • #122743 quote
    carlvan
    Participant
    Average

    Cher Nicolas,
    J’essaie sans succès de convertir une formule AFL-Amibroker en PRT, mais je bloque sur une fonction AFL apparemment non présente en PRT:
    “LastValue” et “Highest”, “highest” est différent de “HHV” en ce sens que c’est la valeur la plus élevée de toute la série disponible.
    Voici le code en AFL:

    _SECTION_BEGIN(“4MACD”);

    width=Param(“Width”,4,1,9,1);

    //=Red===================

    Gr1 = MACD(17,8);
    Gr2 = Signal(17,8,5);
    Diffr = Gr1-Gr2;
    rouge= (LastValue(Highest(diffr))/LastValue(Highest(diffr))) *Diffr;
    Plot((LastValue(Highest(diffr))/LastValue(Highest(diffr))) *Diffr,”Rouge”,colorRed,2+4,0,0,0,0,width);

    //=Green===================
    gGr1 = MACD(5,10);
    gGr2 = Signal(5,10,5);
    Diffg = gGr1-gGr2;
    vert= (LastValue(Highest(diffr))/LastValue(Highest(diffg))) *Diffg;
    Plot((LastValue(Highest(diffr))/LastValue(Highest(diffg))) *Diffg,”Vert”,colorGreen,2+4,0,0,0,0,width);

    //=Blue===================
    bGr1 = MACD(17,14);
    bGr2 = Signal(17,14,7);
    Diffb = gGr1-gGr2;
    Bleu= (LastValue(Highest(diffr))/LastValue(Highest(diffb))) *Diffb;
    Plot((LastValue(Highest(diffr))/LastValue(Highest(diffb))) *Diffb,”BleuCiel”,colorskyBlue,2+4,0,0,0,0,width);

    //=Yellow===================
    yGr1 = MACD(10,16);
    yGr2 = Signal(10,16,5);
    Diffy = yGr1-yGr2;
    Jaune= (LastValue(Highest(diffr))/LastValue(Highest(diffy)))*Diffy;
    Plot((LastValue(Highest(diffr))/LastValue(Highest(diffy)))*Diffy,”Jaune”,colorYellow,2+4,0,0,0,0,width);

    Plot(0,””,7,4);
    _SECTION_END();

    D’avance un très grand merci, et j’ai attaché un chart.

    Carl

    4MACD.jpg 4MACD.jpg
    #122746 quote
    Nicolas
    Keymaster
    Master

    LastValue renvoie la dernière valeur calculée de la série de données spécifié, ici c’est à appliquer à Highest et qui n’a pas de période, donc comme tu le stipules, c’est bien la valeur la plus haute jamais atteinte par chacune des variables nommées Diff.

    Donc c’est finalement assez simple, il faut créer une variable du style :

    MAXdiffr = max(MAXdiffr,diffr)
    

    ce qui donnerait

     // à la place de rouge= (LastValue(Highest(diffr))/LastValue(Highest(diffr))) *Diffr
    rouge = (MAXdiffr/MAXdiffr) *Diffr
    #122761 quote
    carlvan
    Participant
    Average

    Merci beaucoup pour la réponse rapide.

    J’ai converti de la façon suivante, mais le graph est absolument vide – sûrement une petite erreur quelque part de ma part:

    //=Red===================
    
    Gr1 = MACD[17,8,5](close)
    Gr2 = ExponentialAverage[5](Gr1)
    Diffr = Gr1-Gr2
    MAXdiffr = max(MAXdiffr,diffr)
    rouge= (MAXdiffr/MAXdiffr) *Diffr
    
    //=Green===================
    gGr1 = MACD[5,10,5](close)
    gGr2 = ExponentialAverage[5](gGr1)
    Diffg = gGr1-gGr2
    MAXdiffg = max(MAXdiffg,diffg)
    vert= (MAXdiffr/MAXdiffg) *Diffg
    
    //=Blue===================
    bGr1 = MACD[17,14,7](close)
    bGr2 = ExponentialAverage[7](bGr1)
    Diffb = bGr1-bGr2
    MAXdiffb = max(MAXdiffb,diffb)
    bleu= (MAXdiffr/MAXdiffb) *Diffb
    
    //=Yellow===================
    yGr1 = MACD[10,16,5](close)
    yGr2 = ExponentialAverage[5](yGr1)
    Diffy = yGr1-yGr2
    MAXdiffy = max(MAXdiffy,diffy)
    jaune= (MAXdiffr/MAXdiffy) *Diffy
    
    return jaune as “jaune”, bleu as “bleu”, vert as “vert”, rouge as “rouge”
    #122765 quote
    robertogozzi
    Moderator
    Master

    >> Pour la clarté des messages sur les forums de ProRealCode, merci d’utiliser le bouton “insert PRT code” pour séparer la partie texte de la partie code, merci ! <<
    🙂

    #122766 quote
    carlvan
    Participant
    Average

    Merci de me l’avoir signalé, et désolé, je ferai attention la prochaine fois!

    Carl

    #122796 quote
    Nicolas
    Keymaster
    Master

    Il doit y avoir suffisamment d’unités sur le graphique pour permettre le calcul de l’indicateur :

    //=Red===================
    
    if barindex>20 then 
    Gr1 = MACD[17,8,5](close)
    Gr2 = ExponentialAverage[5](Gr1)
    Diffr = Gr1-Gr2
    MAXdiffr = max(MAXdiffr,diffr)
    rouge= (MAXdiffr/MAXdiffr) *Diffr
    
    //=Green===================
    gGr1 = MACD[5,10,5](close)
    gGr2 = ExponentialAverage[5](gGr1)
    Diffg = gGr1-gGr2
    MAXdiffg = max(MAXdiffg,diffg)
    vert= (MAXdiffr/MAXdiffg) *Diffg
    
    //=Blue===================
    bGr1 = MACD[17,14,7](close)
    bGr2 = ExponentialAverage[7](bGr1)
    Diffb = bGr1-bGr2
    MAXdiffb = max(MAXdiffb,diffb)
    bleu= (MAXdiffr/MAXdiffb) *Diffb
    
    //=Yellow===================
    yGr1 = MACD[10,16,5](close)
    yGr2 = ExponentialAverage[5](yGr1)
    Diffy = yGr1-yGr2
    MAXdiffy = max(MAXdiffy,diffy)
    jaune= (MAXdiffr/MAXdiffy) *Diffy
    endif 
    
    return jaune as "jaune", bleu as "bleu", vert as "vert", rouge as "rouge"
    #122828 quote
    carlvan
    Participant
    Average

    L’indicateur fonctionne parfaitement maintenant, merci Nicolas, et bon weekend!

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

4MACD from AFL


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
carlvan @carlvan Participant
Summary

This topic contains 6 replies,
has 3 voices, and was last updated by carlvan
5 years, 11 months ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 03/20/2020
Status: Active
Attachments: 1 files
Logo Logo
Loading...