Untitled
unknown
plain_text
a month ago
10 kB
30
Indexable
Never
//@version=5 indicator("Heikin Ashi RSI Oscillator", "HARSI[Rex version]", overlay=false, format=format.price, precision=2) // Araç İpuçları string TT_HARSI = "RSI hesaplamaları için kullanılan dönem. Bu, RSI plot/histogram uzunluğundan bağımsızdır." string TT_PBIAS = "HARSI mumlarının AÇILIŞ değerleri için düzleştirme özelliği.\n\nBu, önceki açılış değerine eğilim sağlar ve trend gücünü daha iyi görselleştirmeye yardımcı olabilir.\n\n** Açılış değerlerini değiştirmek, Yüksek ve Düşük değerleri de bozabilir - ancak Kapanış değeri değişmeden kalır." string TT_SMRSI = "Bu seçenek RSI'yi, önceden kapanış değeri yerine anlık RSI'yi kullanarak benzer şekilde düzleştirir." string TT_STOCH = "Yukarıdaki ayarlarla üretilen RSI'yi kullanır ve bu nedenle düzleştirme seçeneğinden etkilenir." string TT_STFIT = "Stokastik'in dikey ölçeğini ayarlar, diğer verilerin kanalda bozulmasını önlemeye yardımcı olabilir.\n\nKesişim koşullarını etkilemez." // Girdiler // -- Mum konfigürasyonu string GROUP_CAND = "Yapılandırma » HARSI Mumları" i_lenHARSI = input.int(14, "Uzunluk", minval=1, tooltip=TT_HARSI, group=GROUP_CAND) i_smoothing = input.int(1, "Açılış Düzleştirme", minval=1, maxval=100, tooltip=TT_PBIAS, group=GROUP_CAND) string INLINE_COL = "Renk Paleti" i_colUp = input.color(color.teal, "Renk Paleti ", group=GROUP_CAND, inline=INLINE_COL) i_colDown = input.color(color.red, " ", group=GROUP_CAND, inline=INLINE_COL) i_colWick = input.color(color.gray, " ", group=GROUP_CAND, inline=INLINE_COL) // -- RSI plot konfigürasyonu string GROUP_PLOT = "Yapılandırma » RSI Plot" i_source = input.source(ohlc4, "Kaynak", group=GROUP_PLOT) i_lenRSI = input.int(7, "Uzunluk", minval=1, group=GROUP_PLOT) i_mode = input.bool(true, "Düzleştirilmiş RSI Modu?", tooltip=TT_SMRSI, group=GROUP_PLOT) i_showPlot = input.bool(true, "RSI Plot'u Göster?", group=GROUP_PLOT) i_showHist = input.bool(true, "RSI Histogramını Göster?", group=GROUP_PLOT) // -- Stokastik RSI plot konfigürasyonu string GROUP_STOCH = "Yapılandırma » Stokastik RSI Plot" string INLINE_STDS = "Stokastik Çizim Durumları" i_showStoch = input.bool(false, "Stokastik Göster?", tooltip=TT_STOCH, group=GROUP_STOCH, inline=INLINE_STDS) i_ribbon = input.bool(true, "Şerit?", group=GROUP_STOCH, inline=INLINE_STDS) i_smoothK = input.int(3, "Düzleştirme K", minval=1, group=GROUP_STOCH) i_smoothD = input.int(3, "Düzleştirme D", minval=1, group=GROUP_STOCH) i_stochLen = input.int(14, "Stokastik Uzunluk", minval=1, group=GROUP_STOCH) i_stochFit = input.int(80, "Stokastik Ölçekleme %", minval=1, maxval=100, tooltip=TT_STFIT, group=GROUP_STOCH) // Fonksiyonlar // Sıfır medyan RSI yardımcı fonksiyonu f_zrsi(_source, _length) => ta.rsi(_source, _length) - 50 // Sıfır medyan stokastik yardımcı fonksiyon f_zstoch(_source, _length, _smooth, _scale) => float _zstoch = ta.stoch(_source, _source, _source, _length) - 50 float _smoothed = ta.sma(_zstoch, _smooth) float _scaled = (_smoothed / 100) * _scale // Mod seçilebilir RSI fonksiyonu f_rsi(_source, _length, _mode) => float _zrsi = f_zrsi(_source, _length) var float _smoothed = na _smoothed := na(_smoothed[1]) ? _zrsi : (_smoothed[1] + _zrsi) / 2 _mode ? _smoothed : _zrsi // RSI Heikin-Ashi üretim fonksiyonu f_rsiHeikinAshi(_length) => float _closeRSI = f_zrsi(close, _length) float _openRSI = na(_closeRSI[1]) ? _closeRSI : _closeRSI[1] float _highRSI_raw = f_zrsi(high, _length) float _lowRSI_raw = f_zrsi(low, _length) float _highRSI = math.max(_highRSI_raw, _lowRSI_raw) float _lowRSI = math.min(_highRSI_raw, _lowRSI_raw) float _close = (_openRSI + _highRSI + _lowRSI + _closeRSI) / 4 var float _open = na _open := na(_open[i_smoothing]) ? (_openRSI + _closeRSI) / 2 : ((_open[1] * i_smoothing) + _close[1]) / (i_smoothing + 1) float _high = math.max(_highRSI, math.max(_open, _close)) float _low = math.min(_lowRSI, math.min(_open, _close)) [_open, _high, _low, _close] // Seriler, çizgiler ve etiketler float RSI = f_rsi(i_source, i_lenRSI, i_mode) float StochK = f_zstoch(RSI, i_stochLen, i_smoothK, i_stochFit) float StochD = ta.sma(StochK, i_smoothD) [O, H, L, C] = f_rsiHeikinAshi(i_lenHARSI) color bodyColour = C > O ? i_colUp : i_colDown color wickColour = i_colWick color colShadow = color.new(color.black, 20) color colNone = color.new(color.black, 100) color colRSI = color.new(color.rgb(250, 200, 50), 0) color colStochK = color.new(color.blue, 0) color colStochD = color.new(color.orange, 0) color colStochFill = StochK >= StochD ? color.new(colStochK, 50) : color.new(colStochD, 50) HO = request.security(syminfo.tickerid, "60", O) HH = request.security(syminfo.tickerid, "60", H) HL = request.security(syminfo.tickerid, "60", L) HC = request.security(syminfo.tickerid, "60", C) lcd1 = HC > HO lcd2 = ta.sma(HL, 5) < -20 scd1 = HC < HO scd2 = ta.sma(HH, 5) > 20 llcd1 = HC > HO llcd2 = ta.sma(HL, 5) < -20 sscd1 = HC < HO sscd2 = ta.sma(HH, 5) > 20 lh1 = lcd1 and lcd2 sh1 = scd1 and scd2 l15 = llcd1 and llcd2 s15 = sscd1 and sscd2 len2 = input.int(12, minval=1, title="Kısa EMA Uzunluğu") len3 = input.int(144, minval=1, title="Orta EMA Uzunluğu") len8 = input.int(169, minval=1, title="Uzun EMA Uzunluğu") len9 = input.int(576, minval=1, title="Çok Uzun EMA Uzunluğu") len10 = input.int(676, minval=1, title="En Uzun EMA Uzunluğu") out2 = ta.ema(close, len2) out3 = ta.ema(close, len3) out8 = ta.ema(close, len8) out9 = ta.ema(close, len9) out10 = ta.ema(close, len10) plot(out2, color=color.purple, title="EMA12 ", force_overlay=true) plot(out3, color=color.orange, title="EMA144", force_overlay=true) plot(out8, color=color.red, title="EMA169", force_overlay=true) plot(out9, color=color.blue, title="EMA576", force_overlay=true) plot(out10, color=color.teal, title="EMA676", force_overlay=true) /////////////////////////////////////////////// //////////////////////////////////////////// // Inputs p = input.int(24, title="Period:") hl = input.int(40, title="Overbought:") ll = input.int(-40, title="Oversold:") // Function s = close Su = ta.sma(close > open ? s - s[1] : 0, p) Sd = ta.sma(close < open ? math.abs(s - s[1]) : 0, p) cmo = ((Su - Sd) / (Su + Sd)) * 100 ma1 = ta.ema(cmo, 12) ma2 = ta.ema(ma1, 24) ma3 = ta.ema(ma2, 48) // Color Switches c0 = cmo > ma1 ? color.new(color.green, 0) : color.new(color.red, 0) c1 = ma1 > cmo ? color.new(color.red, 0) : color.new(color.green, 0) c2 = ma2 > cmo ? color.new(color.maroon, 0) : color.new(color.blue, 0) c3 = ma3 > cmo ? color.new(color.silver, 0) : color.new(color.lime, 0) // Lines plot(0, color=color.black, style=plot.style_line, title="Zero Line") p1 = plot(hl, color=color.new(color.purple, 0), style=plot.style_line, title="Overbought Line") p2 = plot(ll, color=color.new(color.purple, 0), style=plot.style_line, title="Oversold Line") fill(p1, p2, color=color.new(color.purple, 80), title="Overbought-Oversold Fill") // Chande's MO MA's plot(cmo, color=c0, style=plot.style_line, linewidth=2, title="CMO") plot(ma1, color=c1, style=plot.style_line, linewidth=2, title="MA1") plot(ma2, color=c2, style=plot.style_line, linewidth=2, title="MA2") plot(ma3, color=c3, style=plot.style_line, linewidth=2, title="MA3") // Buy Condition (Zero Line and MA Cross) cmoCrossMA1 = ta.crossover(cmo, ma1) and cmo <= 0 cmoCrossMA2 = ta.crossover(cmo, ma2) and cmo <= 0 cmoCrossMA3 = ta.crossover(cmo, ma3) and cmo <= 0 // Set bar color to black if any crossover occurs barcolor(cmoCrossMA1 or cmoCrossMA2 or cmoCrossMA3 ? color.yellow : na) // Alert condition alertcondition(cmoCrossMA1 or cmoCrossMA2 or cmoCrossMA3, title="Buy Signal", message="CMO has crossed above MA while at or below the zero line. Buy Signal.") //////////////////////////////////////////////////////////////////////// /////////////////////////////////////// // BBperiod = input.int(defval=21, title='BB Period', minval=1) BBdeviations = input.float(defval=1.00, title='BB Deviations', minval=0.1, step=0.05) UseATRfilter = input(defval=true, title='ATR Filter') ATRperiod = input.int(defval=5, title='ATR Period', minval=1) hl1 = input(defval=false, title='Hide Labels') // BBUpper = ta.sma(close, BBperiod) + ta.stdev(close, BBperiod) * BBdeviations BBLower = ta.sma(close, BBperiod) - ta.stdev(close, BBperiod) * BBdeviations // TrendLine = 0.0 iTrend = 0.0 longcondition = 0.0 shortcondition = 0.0 // BBSignal = close > BBUpper ? 1 : close < BBLower ? -1 : 0 // if BBSignal == 1 and UseATRfilter == 1 TrendLine := low - ta.atr(ATRperiod) if TrendLine < TrendLine[1] TrendLine := TrendLine[1] TrendLine if BBSignal == -1 and UseATRfilter == 1 TrendLine := high + ta.atr(ATRperiod) if TrendLine > TrendLine[1] TrendLine := TrendLine[1] TrendLine if BBSignal == 0 and UseATRfilter == 1 TrendLine := TrendLine[1] TrendLine // if BBSignal == 1 and UseATRfilter == 0 TrendLine := low if TrendLine < TrendLine[1] TrendLine := TrendLine[1] TrendLine if BBSignal == -1 and UseATRfilter == 0 TrendLine := high if TrendLine > TrendLine[1] TrendLine := TrendLine[1] TrendLine if BBSignal == 0 and UseATRfilter == 0 TrendLine := TrendLine[1] TrendLine // iTrend := iTrend[1] if TrendLine > TrendLine[1] iTrend := 1 iTrend if TrendLine < TrendLine[1] iTrend := -1 iTrend // longcondition := iTrend[1] == -1 and iTrend == 1 ? 1 : na shortcondition := iTrend[1] == 1 and iTrend == -1 ? 1 : na // plot(TrendLine, color=iTrend > 0 ? color.blue : color.red, style=plot.style_line, linewidth=2, title='Trend Line', transp=0, force_overlay=true) plotshape(longcondition == 1 and hl1 == false ? TrendLine - ta.atr(8) : na, text='💣', style=shape.labelup, location=location.absolute, color=color.new(color.blue, 0), textcolor=color.new(color.white, 0), offset=0, size=size.auto, force_overlay=true) plotshape(shortcondition == 1 and hl1 == false ? TrendLine + ta.atr(8) : na, text='🔨', style=shape.labeldown, location=location.absolute, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), offset=0, size=size.auto, force_overlay=true) //
Leave a Comment