indicateur oscillator rsi

Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
    Posts
  • #196386 quote
    MarlaynicolasMarlaynicolas
    Participant
    New

    Bonjour je recherche cette indicateur oscillator heikin ashi rsi vu sur tradingview afin de pouvoir l’essayer en trade manuel.

    Dans l’attente de vous lire . merci

    voici le lien du code sur tradingview

    Oscillateur HEikin Ashi RSI — Indicateur par JayRogers — TradingView

    #196387 quote
    NicolasNicolas
    Keymaster
    Legend

    Désolé, mais je ne vois ni image, ni code ? 🙂 De quoi parle-t-on précisément ?

    #196388 quote
    MarlaynicolasMarlaynicolas
    Participant
    New

    bonjour nicolas je te fais une copie d’ecran

    #196389 quote
    MarlaynicolasMarlaynicolas
    Participant
    New

    // …but credit is always nice 🙂

    //@version=4
    //@author=JayRogers

    study( “Heikin Ashi RSI Oscillator”, “HARSI •”, false, format.price, 2 )

    ////////////////////////////////////////////////////////////////////////////////
    // //
    // ====== ABOUT THIS INDICATOR //
    // //
    // – RSI based Heikin Ashi candle oscillator //
    // //
    // ====== ARTICLES and FURTHER READING //
    // //
    // – https://www.investopedia.com/terms/h/heikinashi.asp //
    // //
    // “Heikin-Ashi is a candlestick pattern technique that aims to reduce //
    // some of the market noise, creating a chart that highlights trend //
    // direction better than typical candlestick charts” //
    // //
    // ====== REASON FOR STUDY //
    // //
    // – Mostly experimental. I wanted to see if I could translate RSI into a //
    // Heikin Ashi function and retain it’s oscillating nature. That goal //
    // was met more easily than I anticipated with quite delightful results. //
    // //
    // ====== DISCLAIMER //
    // //
    // Any trade decisions you make are entirely your own responsibility. //
    // I’ve made an effort to squash all the bugs, but you never know! //
    // //
    ////////////////////////////////////////////////////////////////////////////////

    ////////////////////////////////////////////////////////////////////////////////
    // //
    // ====== TOOLTIPS ====== //
    // //
    ////////////////////////////////////////////////////////////////////////////////

    string TT_HARSI = “Period for the RSI calculations used to generate the” +
    “candles. This seperate from the RSI plot/histogram length.”

    string TT_PBIAS = “Smoothing feature for the OPEN of the HARSI candles.” +
    “\n\nIncreases bias toward the prior open value which can” +
    ” help provide better visualisation of trend strength.” +
    “\n\n** By changing the Open values, High and Low can also” +
    ” be distorted – however Close will remain unchanged.”

    string TT_SMRSI = “This option smoothes the RSI in a manner similar to HA” +
    ” open, but uses the realtime rsi rather than the prior” +
    ” close value.”

    string TT_STOCH = “Uses the RSI generated by the above settings, and as such” +
    ” will be affected by the smoothing option.”

    string TT_STFIT = “Adjusts the vertical scaling of the stochastic, can help” +
    ” to prevent distortion of other data in the channel.” +
    “\n\nHas no impact cross conditions.”

    ////////////////////////////////////////////////////////////////////////////////
    // //
    // ====== INPUTS ====== //
    // //
    ////////////////////////////////////////////////////////////////////////////////

    // — Candle config

    string GROUP_CAND = “Config » HARSI Candles”
    i_lenHARSI = input( 14, “Length”, input.integer, group = GROUP_CAND,
    minval = 1, tooltip = TT_HARSI )
    i_smoothing = input( 1, “Open Smoothing”, input.integer, group = GROUP_CAND,
    minval = 1, maxval = 100, tooltip = TT_PBIAS )
    string INLINE_COL = “Colour Pallette”
    i_colUp = input( color.teal, “Colour Pallette  ”, input.color, group = GROUP_CAND, inline = INLINE_COL )
    i_colDown = input( color.red, ” “, input.color, group = GROUP_CAND, inline = INLINE_COL )
    i_colWick = input( color.gray, ” “, input.color, group = GROUP_CAND, inline = INLINE_COL )

    // — RSI plot config

    string GROUP_PLOT = “Config » RSI Plot”
    i_source = input( ohlc4, “Source”, input.source, group = GROUP_PLOT )
    i_lenRSI = input( 7, “Length”, input.integer, group = GROUP_PLOT,
    minval = 1 )
    i_mode = input( true, “Smoothed Mode RSI?”, input.bool, group = GROUP_PLOT,
    tooltip = TT_SMRSI )
    i_showPlot = input( true, “Show RSI Plot?”, input.bool, group = GROUP_PLOT )
    i_showHist = input( true, “Show RSI Histogram?”, input.bool, group = GROUP_PLOT )

    // — Stochastic RSI plots config

    string GROUP_STOCH = “Config » Stochastic RSI Plot”
    string INLINE_STDS = “Stoch Draw States”
    i_showStoch = input( false, “Show Stochastic? ”, input.bool, group = GROUP_STOCH, inline = INLINE_STDS,
    tooltip = TT_STOCH )
    i_ribbon = input( true, “Ribbon?”, input.bool, group = GROUP_STOCH, inline = INLINE_STDS )
    i_smoothK = input( 3, “Smoothing K”, input.integer, group = GROUP_STOCH,
    minval = 1 )
    i_smoothD = input( 3, “Smoothing D”, input.integer, group = GROUP_STOCH,
    minval = 1 )
    i_stochLen = input( 14, “Stochastic Length”, input.integer, group = GROUP_STOCH,
    minval = 1 )
    i_stochFit = input( 80, “Stoch Scaling %”, input.integer, group = GROUP_STOCH,
    minval = 1, maxval = 100, tooltip = TT_STFIT )

    // — Channel OB/OS config

    string GROUP_CHAN = “Config » OB/OS Boundaries”
    i_upper = input( 20, “OB”, input.integer, group = GROUP_CHAN, inline = “OB”,
    minval = 1, maxval = 50 )
    i_upperx = input( 30, “OB Extreme”, input.integer, group = GROUP_CHAN, inline = “OB”,
    minval = 1, maxval = 50 )

    i_lower = input( -20, “OS”, input.integer, group = GROUP_CHAN, inline = “OS”,
    minval = -50, maxval = -1 )
    i_lowerx = input( -30, “OS Extreme”, input.integer, group = GROUP_CHAN, inline = “OS”,
    minval = -50, maxval = -1 )

    ////////////////////////////////////////////////////////////////////////////////
    // //
    // ====== FUNCTIONS ====== //
    // //
    ////////////////////////////////////////////////////////////////////////////////

    // zero median rsi helper function, just subtracts 50.
    f_zrsi( _source, _length ) => rsi( _source, _length ) – 50

    // zero median stoch helper function, subtracts 50 and includes % scaling
    f_zstoch( _source, _length, _smooth, _scale ) =>
    float _zstoch = stoch( _source, _source, _source, _length) – 50
    float _smoothed = sma( _zstoch, _smooth )
    float _scaled = ( _smoothed / 100 ) * _scale

    // mode selectable rsi function for standard, or smoothed output
    f_rsi( _source, _length, _mode ) =>

    // get base rsi
    float _zrsi = f_zrsi( _source, _length )

    // smoothing in a manner similar to HA open, but rather using the realtime
    // rsi in place of the prior close value.
    var float _smoothed = na
    _smoothed := na( _smoothed[1] ) ? _zrsi : ( _smoothed[1] + _zrsi ) / 2

    // return the requested mode
    _mode ? _smoothed : _zrsi

    // RSI Heikin-Ashi generation function
    f_rsiHeikinAshi( _length ) =>

    // get close rsi
    float _closeRSI = f_zrsi( close, _length )

    // emulate “open” simply by taking the previous close rsi value
    float _openRSI = nz( _closeRSI[1], _closeRSI )

    // the high and low are tricky, because unlike “high” and “low” by
    // themselves, the RSI results can overlap each other. So first we just go
    // ahead and get the raw results for high and low, and then..
    float _highRSI_raw = f_zrsi( high, _length )
    float _lowRSI_raw = f_zrsi( low, _length )
    // ..make sure we use the highest for high, and lowest for low
    float _highRSI = max( _highRSI_raw, _lowRSI_raw )
    float _lowRSI = min( _highRSI_raw, _lowRSI_raw )

    // ha calculation for close
    float _close = ( _openRSI + _highRSI + _lowRSI + _closeRSI ) / 4

    // ha calculation for open, standard, and smoothed/lagged
    var float _open = na
    _open := na( _open[ i_smoothing ] ) ? ( _openRSI + _closeRSI ) / 2 :
    ( ( _open[1] * i_smoothing ) + _close[1] ) / ( i_smoothing + 1 )

    // ha high and low min-max selections
    float _high = max( _highRSI, max( _open, _close ) )
    float _low = min( _lowRSI, min( _open, _close ) )

    // return the OHLC values
    [ _open, _high, _low, _close ]

    ////////////////////////////////////////////////////////////////////////////////
    // //
    // ====== SERIES, LINES and LABELS ====== //
    // //
    ////////////////////////////////////////////////////////////////////////////////

    // standard, or ha smoothed rsi for the line plot and/or histogram
    float RSI = f_rsi( i_source, i_lenRSI, i_mode )

    // stoch stuff
    float StochK = f_zstoch( RSI, i_stochLen, i_smoothK, i_stochFit )
    float StochD = sma( StochK, i_smoothD )

    // get OHLC values to use in the plotcandle()
    [ O, H, L, C ] = f_rsiHeikinAshi( i_lenHARSI )

    // candle body colouring
    color bodyColour = C > O ? i_colUp : i_colDown
    color wickColour = i_colWick

    // shadow, invisible
    color colShadow = color.rgb( 0, 0, 0, 20 )
    color colNone = color.rgb( 0, 0, 0, 100 )

    // rsi color
    color colRSI = color.rgb( 250, 200, 50, 0 )

    // stoch ribbon fill
    color colStochK = color.new( #0094FF, 0 )
    color colStochD = color.new( #FF6A00, 0 )
    color colStochFill = StochK >= StochD ? color.new( colStochK, 50 ) : color.new( colStochD, 50 )

    ////////////////////////////////////////////////////////////////////////////////
    // //
    // ====== DRAWING and PLOTTING ====== //
    // //
    ////////////////////////////////////////////////////////////////////////////////

    // zero median RSI channel hlines
    upperx = hline( i_upperx, “OB Extreme”, color.new( color.silver, 60 ) )
    upper = hline( i_upper, “OB”, color.new( color.silver, 80 ) )
    median = hline( 0, “Median”, color.orange, hline.style_dotted )
    lower = hline( i_lower, “OS”, color.new( color.silver, 80 ) )
    lowerx = hline( i_lowerx, “OS Extreme”, color.new( color.silver, 60 ) )

    // channel fill
    fill( upper, upperx, color.new( color.red, 90 ), title = “Background Fill OB” )
    fill( upper, lower, color.new( color.blue, 90 ), title = “Background Channel” )
    fill( lower, lowerx, color.new( color.green, 90 ), title = “Background Fill OS” )

    // histogram first, so it is on the bottom of the plot/candle draw stack
    plot( i_showHist ? RSI : na, “RSI Histogram”, color.new( color.silver, 80 ), 1, plot.style_histogram )

    // make our HA rsi candles
    plotcandle( O, H, L, C, “HARSI”, bodyColour, wickColour, bordercolor = bodyColour )

    // RSI overlay plot
    plot( i_showPlot ? RSI : na, “RSI Shadow”, colShadow, 3 )
    plot_rsi = plot( i_showPlot ? RSI : na, “RSI Overlay”, colRSI, 1 )

    // Stochastic RSI plots and fill
    plot( i_showStoch ? StochK : na, “Stoch K Shadow”, not i_ribbon ? colShadow : colNone, 3 )
    plot( i_showStoch ? StochD : na, “Stoch D Shadow”, not i_ribbon ? colShadow : colNone, 3 )
    plot_stochK = plot( i_showStoch ? StochK : na, “Stoch K”, not i_ribbon ? colStochK : colNone, 1 )
    plot_stochD = plot( i_showStoch ? StochD : na, “Stoch D”, not i_ribbon ? colStochD : colNone, 1 )
    fill( plot_stochK, plot_stochD, i_ribbon ? colStochFill : na )

    // — PEANUT

    Screenshot_13.png Screenshot_13.png
    #196446 quote
    NicolasNicolas
    Keymaster
    Legend

    ok, donc c’est un calcul de bougies Heikin Ashi appliqué à un RSI (open, high, low, close). Il y a une option pour avoir un Stochastic RSI aussi. Plutôt que de convertir le code, je vais le refaire de zéro, ce sera plus rapide.

    #196448 quote
    NicolasNicolas
    Keymaster
    Legend

    Ci-joint la version classique, tu peux modifier la période du RSI et le “Smooth” en tête de code (ce dernier lisse le RSI).

    period = 14
    smooth = 1
    // ---
    highr=average[smooth](rsi[period](high)-50)
    lowr=average[smooth](rsi[period](low)-50)
    closer=average[smooth](rsi[period](close)-50)
    if barindex>1 then 
    openr=closer[1]//average[smooth](rsi[period](closer[1])-50)
    endif
    xOpen = openr
    xHigh = max(highr,lowr)
    xLow = min(lowr,highr)
    if barindex>period+smooth then 
    
    xClose = (openr+highr+lowr+closer)/4
    xOpen = (xOpen[1] + xClose[1])/2
    xHigh = Max(Max(highr, xOpen), xClose)
    xLow = Min(Min(lowr, xOpen), xClose)
    
    drawcandle(xopen,xhigh,xlow,xclose)
    endif
    
    return 0,-30 style(dottedline),30 style(dottedline)
    Marlaynicolas thanked this post
    #196472 quote
    MarlaynicolasMarlaynicolas
    Participant
    New

    Merci nicolas,

    Je vais essayer cela cette après midi.

Viewing 7 posts - 1 through 7 (of 7 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

indicateur oscillator rsi


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
Summary

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

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 06/29/2022
Status: Active
Attachments: 1 files
ProRealCode ProRealCode
Loading...