Indicateur SwingARM ATR : ajout de niveaux fibo opposés

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #236782 quote
    Atemi19
    Participant
    New

    Bonjour, nicolas, si tu es dans les parages, sur cette indicateur tu as mis stop 1, 2 et 3 mais ces lignes sont globalement des retracements fibo qui sont tracer soit comme support ou resistance en fonction de la couleur du canal.

    Comment je pourrais rajouter les mêmes lignes de l’autre coté car le but étant de dessiner première zone de rebond corrective en cas de forte poussée et les niveaux déjà tracés correspondent soit à une grosse correction soit point de départ pour se retourner.

    Cordialement.

    #260000 quote
    Nicolas
    Keymaster
    Master

    Je comprends bien l’idée. Actuellement les niveaux f1, f2, f3 sont tracés entre l’extremum (ex) et le trailing stop (trail), ce qui représente les retracements vers le stop. Tu veux ajouter les niveaux symétriques de l’autre côté de l’extremum, c’est-à-dire les extensions au-delà du prix extrême, pour matérialiser les premières zones de rebond/continuation après une forte poussée.

    La distance de référence est trail - ex. Il suffit de projeter les mêmes ratios fibo dans le sens opposé depuis ex, comme ceci :

    fe = ex + (ex - trail) * fibLevel / 100

    Ce qui donne pour chaque niveau un point situé au-dessus de l’extremum en tendance haussière, et en-dessous en tendance baissière.

    Voici le code complet modifié :

    // --- settings
    trailType = 1  //1=modified, 0=unmodified
    ATRPeriod = 28
    ATRFactor = 5
    firstTrade = 0 //0= long, 1= short
    averageType = 3 //0 = SMA 1 = EMA 2 = WMA 3 = Wilder 4 = Triangular 5 = End point 6 = Time series 7 = Hull 8 = ZeroLag
    showArrows = 0 //0=false ; 1=true
    //--- end of settings
    
    fib1Level = 61.8
    fib2Level = 78.6
    fib3Level = 88.6
    
    HiLo = Min(high - low, 1.5 * Average[ATRPeriod](range))
    
    if low <= high[1] then
       Href = high - close[1]
    else
       Href = (high - close[1]) - 0.5 * (low - high[1])
    endif
    
    if high >= low[1] then
       Lref = close[1] - low
    else
       Lref = (close[1] - low) - 0.5 * (low[1] - high)
    endif
    
    if trailType = 1 then
       trueRange = Max(HiLo, Max(HRef, LRef))
    else
       trueRange = tr(close)
    endif
    
    iloss = ATRFactor * Average[ATRPeriod,averageType](trueRange)
    
    once init=0
    if init=0 then
       if firsttrade=0 then
          state = 0
          trail = close - iloss
       else
          state = 1
          trail = close + iloss
       endif
       init=1
    endif
    
    if state[1] = 0 then
       if (close > trail[1]) then
          state = 0
          trail = Max(trail[1], close - iloss)
       else
          state = 1
          trail = close + iloss
       endif
    endif
    
    if state[1] = 1 then
       if (close < trail[1]) then
          state = 1
          trail = Min(trail[1], close + iloss)
       else
          state = 0
          trail = close - iloss
       endif
    endif
    
    BuySignal  = state <> state[1] and state = 0
    SellSignal = state <> state[1] and state = 1
    
    if BuySignal then
       ex = high
    elsif SellSignal then
       ex = low
    else
       if state = 0 then
          ex = Max(ex[1], high)
       elsif state = 1 then
          ex = Min(ex[1], low)
       else
          ex = ex[1]
       endif
    endif
    
    TrailingStop = trail
    
    if state = 0 then
       r=0
       g=255
    else
       r=255
       g=0
    endif
    
    // --- Retracements (entre ex et trail, côté stop)
    f1 = ex + (trail - ex) * fib1Level / 100
    f2 = ex + (trail - ex) * fib2Level / 100
    f3 = ex + (trail - ex) * fib3Level / 100
    
    // --- Extensions (de l'autre côté de ex, côté continuation)
    // distance de référence = trail - ex, projetée en sens inverse depuis ex
    fe1 = ex - (trail - ex) * fib1Level / 100
    fe2 = ex - (trail - ex) * fib2Level / 100
    fe3 = ex - (trail - ex) * fib3Level / 100
    
    if showArrows then
       l1 = state[1] = 0 and close crosses under f1[1]
       l2 = state[1] = 0 and close crosses under f2[1]
       l3 = state[1] = 0 and close crosses under f3[1]
       s1 = state[1] = 1 and close crosses over f1[1]
       s2 = state[1] = 1 and close crosses over f2[1]
       s3 = state[1] = 1 and close crosses over f3[1]
       
       atr = AverageTrueRange[14](close)
       
       y=0
       if l1 or l2 or l3 then
          y = low - atr
       endif
       if s1 or s2 or s3 then
          y = high + atr
       endif
       
       if y>0 then
          if y>close then
             drawarrowdown(barindex,y) coloured(r,g,0)
          else
             drawarrowup(barindex,y) coloured(r,g,0)
          endif
       endif
    endif
    
    return  TrailingStop coloured(r,g,0) style(line,3) as "ATR Trailing Stop",  ex           coloured(r,g,0) style(point,4) as "Extremum",  f1  coloured(168,168,168) as "Ret 61.8",  f2  coloured(168,168,168) as "Ret 78.6",  f3  coloured(168,168,168) as "Ret 88.6",  fe1 coloured(100,180,255) as "Ext 61.8",  fe2 coloured(100,180,255) as "Ext 78.6",  fe3 coloured(100,180,255) as "Ext 88.6"
    
    swing-atr-trailing-stop-fibo.png swing-atr-trailing-stop-fibo.png
Viewing 2 posts - 1 through 2 (of 2 total)
  • You must be logged in to reply to this topic.

Indicateur SwingARM ATR : ajout de niveaux fibo opposés


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
Atemi19 @atemi19 Participant
Summary

This topic contains 1 reply,
has 2 voices, and was last updated by Nicolas
22 hours, 53 minutes ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 08/28/2024
Status: Active
Attachments: 1 files
Logo Logo
Loading...