Untitled

mail@pastecode.io avatar
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