SLOPE DIRECTION LINE

Viewing 3 posts - 1 through 3 (of 3 total)
  • Author
    Posts
  • #250236 quote
    ARLEQUIN49ARLEQUIN49
    Participant
    Veteran

    Bonjour,

    J’aurais besoin de convertir cet indicateur de MT4, Slope Direction Line  qui est une moyenne mobile. Vous remerciant par avance.

    Voici le code:

    //| HMA.mq4
    //| Copyright © 2006 WizardSerg <wizardserg@mail.ru>, ?? ??????? ForexMagazine #104
    //| wizardserg@mail.ru
    //| Revised by IgorAD,igorad2003@yahoo.co.uk |
    //| Personalized by iGoR AKA FXiGoR for the Trend Slope Trading method (T_S_T)
    //| Link:
    //| contact: thefuturemaster@hotmail.com
    //+——————————————————————+
    #property copyright “MT4 release WizardSerg <wizardserg@mail.ru>, ?? ??????? ForexMagazine #104”
    #property link “wizardserg@mail.ru”

    #property indicator_chart_window
    #property indicator_buffers 2
    #property indicator_color1 LightBlue
    #property indicator_color2 Tomato
    //—- input parameters
    extern int period=80;
    extern int method=3; // MODE_SMA
    extern int price=0; // PRICE_CLOSE
    //—- buffers
    double Uptrend[];
    double Dntrend[];
    double ExtMapBuffer[];

    //+——————————————————————+
    //| Custom indicator initialization function |
    //+——————————————————————+
    int init()
    {
    IndicatorBuffers(3);
    SetIndexBuffer(0, Uptrend);
    //ArraySetAsSeries(Uptrend, true);
    SetIndexBuffer(1, Dntrend);
    //ArraySetAsSeries(Dntrend, true);
    SetIndexBuffer(2, ExtMapBuffer);
    ArraySetAsSeries(ExtMapBuffer, true);

    SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
    SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);

    IndicatorShortName(“Slope Direction Line(“+period+”)”);
    return(0);
    }

    //+——————————————————————+
    //| Custor indicator deinitialization function |
    //+——————————————————————+
    int deinit()
    {
    // ???? ????? ?????? ??????
    return(0);
    }

    //+——————————————————————+
    //| ?????????? ??????? |
    //+——————————————————————+
    double WMA(int x, int p)
    {
    return(iMA(NULL, 0, p, 0, method, price, x));
    }

    //+——————————————————————+
    //| Custom indicator iteration function |
    //+——————————————————————+
    int start()
    {
    int counted_bars = IndicatorCounted();

    if(counted_bars < 0)
    return(-1);

    int x = 0;
    int p = MathSqrt(period);
    int e = Bars – counted_bars + period + 1;

    double vect[], trend[];

    if(e > Bars)
    e = Bars;

    ArrayResize(vect, e);
    ArraySetAsSeries(vect, true);
    ArrayResize(trend, e);
    ArraySetAsSeries(trend, true);

    for(x = 0; x < e; x++)
    {
    vect[x] = 2*WMA(x, period/2) – WMA(x, period);
    // Print(“Bar date/time: “, TimeToStr(Time[x]), ” close: “, Close[x], ” vect[“, x, “] = “, vect[x], ” 2*WMA(p/2) = “, 2*WMA(x, period/2), ” WMA(p) = “, WMA(x, period));
    }

    for(x = 0; x < e-period; x++)

    ExtMapBuffer[x] = iMAOnArray(vect, 0, p, 0, method, x);

    for(x = e-period; x >= 0; x–)
    {
    trend[x] = trend[x+1];
    if (ExtMapBuffer[x]> ExtMapBuffer[x+1]) trend[x] =1;
    if (ExtMapBuffer[x]< ExtMapBuffer[x+1]) trend[x] =-1;

    if (trend[x]>0)
    { Uptrend[x] = ExtMapBuffer[x];
    if (trend[x+1]<0) Uptrend[x+1]=ExtMapBuffer[x+1];
    Dntrend[x] = EMPTY_VALUE;
    }
    else
    if (trend[x]<0)
    {
    Dntrend[x] = ExtMapBuffer[x];
    if (trend[x+1]>0) Dntrend[x+1]=ExtMapBuffer[x+1];
    Uptrend[x] = EMPTY_VALUE;
    }

    //Print( ” trend=”,trend[x]);
    }

    return(0);

    Sans-titre.png Sans-titre.png
    #250274 quote
    Iván GonzálezIván González
    Moderator
    Legend

    Bonjour. En fait, c'est un bas de Hull. Je vous passe l'indicateur pour calculer la moyenne de Hull, même si, avec hullaverage[p](close) cela suffirait presque :

    //---------------------------------------------//
    //PRC_hull average
    //version = 0
    //02.09.2025
    //Iván González @ www.prorealcode.com
    //Sharing ProRealTime knowledge
    //---------------------------------------------//
    // --- Parámetros de Configuración ---
    HMAperiod = 80
    HMAprice = close
    
    // --- Lógica del Cálculo de la HMA ---
    p = ROUND(SQRT(HMAperiod))
    vect = 2 * WeightedAverage[ROUND(HMAperiod / 2)](HMAprice) - WeightedAverage[HMAperiod](HMAprice)
    HMA = WeightedAverage[p](vect)
    
    // --- Lógica color de la línea ---
    
    IF HMA > HMA[1] THEN
    r=0
    g=0
    b=255
    ELSIF HMA < HMA[1] THEN
    r=255
    g=0
    b=0
    ENDIF
    
    RETURN hma as "Hull" coloured(r,g,b)
    robertogozzi thanked this post
    #250354 quote
    ARLEQUIN49ARLEQUIN49
    Participant
    Veteran

    Merci Ivan, c’est exactement cela

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

Stuck on this ProBuilder code?

Describe what this topic is trying to build, in plain English, and ProRealAI writes the ProRealTime™ indicator, screener or system for you.

Available in 7 languages
Try ProRealAI

SLOPE DIRECTION LINE


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
ARLEQUIN49 @arlequin49 Participant
Summary

This topic contains 2 replies,
has 2 voices, and was last updated by ARLEQUIN49ARLEQUIN49
1 year ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 09/01/2025
Status: Active
Attachments: 1 files
ProRealCode ProRealCode
Loading...