debeuguer mon code “echec MACD”

Viewing 12 posts - 1 through 12 (of 12 total)
  • Author
    Posts
  • #233873 quote
    bertrandpinoy
    Participant
    Veteran

    Bonsoir, pouvez-vous aidez a debeuguer la ligne 7?

    // Définir les paramètres du MACD
    shortPeriod = 12
    longPeriod = 26
    signalPeriod = 9

    // Calculer les valeurs du MACD et de la ligne de signal
    macdLine = ExponentialAverage[close, shortPeriod] – ExponentialAverage[close, longPeriod]
    signalLine = ExponentialAverage[macdLine, signalPeriod]

    // Critère d’échec vendeur : MACD est négatif et croise au-dessus de la ligne de signal
    isBearishFailure = (macdLine < 0 AND macdLine > signalLine AND macdLine[1] <= signalLine[1])

    // Affichage des indicateurs sur le graphique
    RETURN macdLine AS “MACD Line”, signalLine AS “Signal Line”, isBearishFailure AS “Bearish Failure”

    #233876 quote
    JS
    Participant
    Senior

    Salut,

    Le MACD est un indicateur standard dans PRT, vous pouvez donc utiliser:

    xMACD=MACD[12,26,9](Close)

    xMACDLine=MACDLine[12,26,9](Close)

    Si vous voulez faire le calcul vous-même :

    xMACD=Average[12,1](Close)-Average[26,1](Close)

    xMACDLine=Average[9,1](xMACD)

    Signaux associés :

    xMACD crosses over xMACDLine est un signal « haussier »

    xMACD crosses under xMACDLine est un signal « baissier »

    druby and Iván González thanked this post
    #233877 quote
    druby
    Participant
    New
    ‘macdLine’ est un mot-clé indicateur, surligné en vert comme le mot-clé ‘ExponentialAverage’, et ne peut pas être utilisé comme nom de variable générale. L’action corrective consiste à renommer toutes les instances de cette variable avec un nom différent non conflictuel. En résolvant cela, l’erreur suivante est le format des instructions ExponentialAverage, dont les paramètres suivent le format [period](type). Voici le code que j’ai utilisé pour le déboguer.  
    shortPeriod = 12
    longPeriod = 26
    signalperiod = 9
    
    lineMacd = ExponentialAverage[shortPeriod](close) - ExponentialAverage[longPeriod](close)
    lineSignal = ExponentialAverage[signalPeriod](lineMacd)
    
    
    if  (lineMacd < 0) AND (lineMacd > lineSignal) AND (lineMacd[1] <= lineSignal[1]) then
    isBearishFailure = 0
    drawVline(barindex) style(dottedline,1)
    endif
    
    return lineMacd AS "MACD", lineSignal AS "Signal", isBearishFailure AS "Bearish Failure"
    JS and Iván González thanked this post
    #233879 quote
    JC_Bywan
    Moderator
    Master
    Merci à JS et Druby pour leur aide, je rajouterais qu’une fois que tu auras corrigé le code avec leurs suggestions, si tu l’insères dans la même fenêtre, tu tomberas sans doute sur une nouvelle erreur pour la ligne return… non pas qu’elle soit buggué, mais parce que tu as mis par inadvertance ce code d’indicateur dans une fenêtre proorder pour système de trading automatique au lieu d’une fenêtre d’édition de code d’indicateur.
    druby, JS and Iván González thanked this post
    #233890 quote
    bertrandpinoy
    Participant
    Veteran
    Merci a tous pour l’aide. Bon W-end.
    #256969 quote
    deakon
    Participant
    Junior

    Bonjour. quelqu’un peut me faire debugger ce script tradingview que j’essai d’adapter a prorealtime Svp ? Il m e met erreur de caractère sur les 2 MACD des lignes suivantes : MACD = FastMA – SlowMA et

    MACD_Prev = MACD[1]


    // Waddah Attar Explosion V2 [SHK] – Conversion ProRealTime

    // Original by LazyBear – Modified by ShayanKM

    // Conversion Pine Script → ProBuilder


    // === PARAMÈTRES ===

    Sensitivity = 150

    FastLength = 20

    SlowLength = 40

    ChannelLength = 20

    Mult = 2.0


    // === DEAD ZONE ===

    DeadZone = Average[100](TrueRange) * 3.7


    // === MACD CALCULATION ===

    FastMA = ExponentialAverage[FastLength](close)

    SlowMA = ExponentialAverage[SlowLength](close)

    MACD = FastMA – SlowMA

    MACD_Prev = MACD[1]


    // === MOMENTUM ===

    t1 = (MACD – MACD_Prev) * Sensitivity


    // === BOLLINGER BAND WIDTH ===

    BB_Basis = Average[ChannelLength](close)

    BB_Dev = Mult * StandardDeviation[ChannelLength](close)

    BB_Upper = BB_Basis + BB_Dev

    BB_Lower = BB_Basis – BB_Dev

    ExplosionLine = BB_Upper – BB_Lower


    // === TREND CALCULATION ===

    IF t1 >= 0 THEN

    TrendUp = t1

    TrendDown = 0

    ELSE

    TrendUp = 0

    TrendDown = -t1

    ENDIF


    // === COLORS ===

    IF TrendUp < TrendUp[1] THEN

    UpColor = RGB(0,255,0)   // Lime

    ELSE

    UpColor = RGB(0,128,0)   // Green

    ENDIF


    IF TrendDown < TrendDown[1] THEN

    DownColor = RGB(255,165,0) // Orange

    ELSE

    DownColor = RGB(255,0,0)  // Red

    ENDIF


    // === PLOTS ===

    DRAW HISTOGRAM(TrendUp) COLOURED(UpColor)

    DRAW HISTOGRAM(TrendDown) COLOURED(DownColor)


    RETURN ExplosionLine AS “ExplosionLine” COLOURED RGB(160,82,45),

    DeadZone AS “DeadZone” COLOURED RGB(0,0,255)

    #256979 quote
    Iván González
    Moderator
    Master

    Bonjour. En réalité, votre code comporte plusieurs erreurs… Parmi celles-ci, j’en vois :

    • MACD. Cette variable est réservée (elle est verte), vous ne pouvez donc pas l’utiliser. Vous pouvez la remplacer par myMACD.
    • Truerange est indéfini
    • Vous ne pouvez pas déclarer de variables avec “_”.
    • Vous ne pouvez pas stocker des variables avec des couleurs de cette manière.


    #257041 quote
    deakon
    Participant
    Junior

    Bonjour, merci pour cette réponse. Je ne connais pas ce langage, j’essai juste de modifier ce script de chez tradingview pour qu’il soit fonctionnel sur prorealtime en déchiffrant ligne par ligne… L’IA m’a aidé mais le script ne fonctionne toujours pasVoici le script en question :

    //



    study(“Waddah Attar Explosion V2 [SHK]”, shorttitle=“WAE [SHK]”)

    sensitivity = input(150, title=“Sensitivity”)

    fastLength=input(20, title=“FastEMA Length”)

    slowLength=input(40, title=“SlowEMA Length”)

    channelLength=input(20, title=“BB Channel Length”)

    mult=input(2.0, title=“BB Stdev Multiplier”)


    DEAD_ZONE = nz(rma(tr(true),100)) * 3.7


    calc_macd(source, fastLength, slowLength) =>

        fastMA = ema(source, fastLength)

        slowMA = ema(source, slowLength)

        fastMA slowMA


    calc_BBUpper(source, length, mult) =>

        basis = sma(source, length)

        dev = mult * stdev(source, length)

        basis + dev


    calc_BBLower(source, length, mult) =>

        basis = sma(source, length)

        dev = mult * stdev(source, length)

        basis dev


    t1 = (calc_macd(close, fastLength, slowLength) calc_macd(close[1], fastLength, slowLength))*sensitivity


    e1 = (calc_BBUpper(close, channelLength, mult) calc_BBLower(close, channelLength, mult))


    trendUp = (t1 >= 0) ? t1 : 0

    trendDown = (t1 < 0) ? (-1*t1) : 0


    plot(trendUp, style=columns, linewidth=1, color=(trendUp<trendUp[1])?lime:green, transp=45, title=“UpTrend”)

    plot(trendDown, style=columns, linewidth=1, color=(trendDown<trendDown[1])?orange:red, transp=45, title=“DownTrend”)

    plot(e1, style=line, linewidth=2, color=#A0522D, title=“ExplosionLine”)

    plot(DEAD_ZONE, color=blue, linewidth=1, style=cross, title=“DeadZoneLine”)


    #257044 quote
    deakon
    Participant
    Junior

    J’ai également celui-ci (en plus simple car pas de couleur) mais que je n’arrive pas a le voir en histogramme, je ne le vois qu’en lignes toutes confondue alors que seule e1 est une ligne, le reste en histogramme


    // — parameters

    sensitivity = 150

    fastLength = 20 //”FastEMA Length”

    slowLength = 40 //”SlowEMA Length”

    channelLength = 20 //”BB Channel Length”

    mult = 2.0 //”BB Stdev Multiplier”)

    deadZone = 30 //”No trade zone threshold”


    // indis

    if barindex>slowLength then

    calcMACD = MACD[fastLength,slowLength,9](customclose)

    calcBBUpper = average[channelLength](customclose)+(mult*std[channelLength](customclose))

    calcBBLower = average[channelLength](customclose)-(mult*std[channelLength](customclose))


    t1 = (calcMACD-calcMACD[1])*sensitivity

    e1 = calcBBUpper – calcBBLower


    if t1>=0 then

    trendUP = t1

    trendDOWN = 0

    else

    trendUP = 0

    trendDOWN = -1*t1

    endif


    if trendUP<trendUP[1] then

    color = -1

    else

    color = 1

    endif


    if trendDOWN<trendDOWN[1] then

    color = -1

    else

    color = 1

    endif

    endif


    RETURN trendUP coloured by color as “UP”, trendDOWN coloured by color as “DOWN”, e1 as “Explosion line”, deadzone*pipsize as “Dead Zone Line”

    #257049 quote
    deakon
    Participant
    Junior

    ok vu. Pour l’histoire des histogramme. En fin de programme rajouter :

    RETURN trendUP coloured by color style(histogram) as “UP”, trendDOWN coloured by color style(histogram) as “DOWN”, e1 as “Explosion line”, deadzone*pipsize as “Dead Zone Line”


    Et c’est bon. L’ensemble semble plus lisible déjà !

    #257065 quote
    Iván González
    Moderator
    Master

    Je peux vous aider à traduire tradingview en prorealtime. Créez un nouveau message, avec un titre significatif, par exemple le nom de l’indicateur que vous souhaitez traduire et mettez le code tradingview original et une image de l’indicateur pour une meilleure compréhension.

    Regardez, voici quelques-uns des messages précédents: https://www.prorealcode.com/topic/suivi-de-tendance-2/

    #257227 quote
    deakon
    Participant
    Junior
Viewing 12 posts - 1 through 12 (of 12 total)
  • You must be logged in to reply to this topic.

debeuguer mon code “echec MACD”


ProOrder : Trading Automatique & Backtests

New Reply
Author
Summary

This topic contains 11 replies,
has 2 voices, and was last updated by deakon
4 days, 15 hours ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 06/14/2024
Status: Active
Attachments: 2 files
Logo Logo
Loading...