Untitled
unknown
plain_text
10 months ago
6.9 kB
5
Indexable
//@version=6
indicator('RSN_KALE', overlay = true, max_labels_count = 500, max_boxes_count = 500)
// INPUTS
// Kısa ve uzun EMA'lar için farklı hareketli ortalama türlerini seçme imkanı
short_ma_type = input.string("EMA", title="Kısa MA", options=["Kalman", "EMA", "SMA", "WMA", "RMA", "EMA2", "RMA2"], inline="KISA_Ema", group='HAREKETLİ ORTALAMA')
long_ma_type = input.string("EMA", title="Uzun MA", options=["Kalman", "EMA", "SMA", "WMA", "RMA", "EMA2", "RMA2"], inline="UZUN_Ema", group='HAREKETLİ ORTALAMA')
// Kısa ve uzun hareketli ortalama length parametreleri
int KISA_Ema = input.int(12, title="Kısa MA", inline="KISA_Ema", group='HAREKETLİ ORTALAMA')
int UZUN_Ema = input.int(26, title="Uzun MA", inline="UZUN_Ema", group='HAREKETLİ ORTALAMA')
bool retest_sig = true
bool candle_color = input.bool(true, 'BAR COLOR', inline = 'colors')
color upper_col = input.color(#13bd6e, 'up', inline = 'colors')
color lower_col = input.color(#b1232f, 'dn', inline = 'colors')
// ATR Calculation
float atr = ta.atr(55) * 0.5
var lower_box = box(na)
var upper_box = box(na)
// Kalman filter function
kalman_filter(src, length, R = 0.01, Q = 0.1) =>
var float estimate = na
var float error_est = 1.0
var float error_meas = R * length
var float kalman_gain = 0.0
var float prediction = na
if na(estimate)
estimate := src
prediction := estimate
kalman_gain := error_est / (error_est + error_meas)
estimate := prediction + kalman_gain * (src - prediction)
error_est := (1 - kalman_gain) * error_est + Q / length
estimate
// EMA2 Function
ema2(src, length) =>
alpha = 2 / (length + 1)
var float result = na
result := na(result[1]) ? src : alpha * src + (1 - alpha) * result[1]
result
// RMA2 Function
rma2(src, length) =>
alpha = 1 / length
var float result = na
result := na(result[1]) ? src : alpha * src + (1 - alpha) * result[1]
result
// Calculate the selected moving average for both short and long
float short_ma = na
float long_ma = na
// Kısa dönem hareketli ortalama hesaplaması
if short_ma_type == "Kalman"
short_ma := kalman_filter(close, KISA_Ema)
else if short_ma_type == "EMA"
short_ma := ta.ema(close, KISA_Ema)
else if short_ma_type == "SMA"
short_ma := ta.sma(close, KISA_Ema)
else if short_ma_type == "WMA"
short_ma := ta.wma(close, KISA_Ema)
else if short_ma_type == "RMA"
short_ma := ta.rma(close, KISA_Ema)
else if short_ma_type == "EMA2"
short_ma := ema2(close, KISA_Ema)
else if short_ma_type == "RMA2"
short_ma := rma2(close, KISA_Ema)
// Uzun dönem hareketli ortalama hesaplaması
if long_ma_type == "Kalman"
long_ma := kalman_filter(close, UZUN_Ema)
else if long_ma_type == "EMA"
long_ma := ta.ema(close, UZUN_Ema)
else if long_ma_type == "SMA"
long_ma := ta.sma(close, UZUN_Ema)
else if long_ma_type == "WMA"
long_ma := ta.wma(close, UZUN_Ema)
else if long_ma_type == "RMA"
long_ma := ta.rma(close, UZUN_Ema)
else if long_ma_type == "EMA2"
long_ma := ema2(close, UZUN_Ema)
else if long_ma_type == "RMA2"
long_ma := rma2(close, UZUN_Ema)
// Trend Detection Logic
bool trend_up = short_ma > long_ma
color trend_col = trend_up ? upper_col : lower_col
color trend_col1 = short_ma > short_ma[2] ? upper_col : lower_col
color candle_col = candle_color ? trend_up and short_ma > short_ma[2] ? upper_col : not trend_up and short_ma < short_ma[2] ? lower_col : color.rgb(255, 255, 255, 26) : na
// PLOTTING
if trend_up and not trend_up[1]
label.new(bar_index, short_ma, '\n' + str.tostring(math.round(close, 1)), color = color(na), textcolor = upper_col, style = label.style_label_up, size = size.normal)
lower_box := box.new(bar_index, low + atr, bar_index, low, border_color = na, bgcolor = color.new(color.green, 80))
lower_box
if not ta.change(trend_up)
lower_box.set_right(bar_index)
if trend_up[1] and not trend_up
label.new(bar_index, short_ma, str.tostring(math.round(close, 1)) + '\n', color = color(na), textcolor = lower_col, style = label.style_label_down, size = size.normal)
upper_box := box.new(bar_index, high, bar_index, high - atr, border_color = na, bgcolor = color.new(color.red, 80))
upper_box
if not ta.change(trend_up)
upper_box.set_right(bar_index)
if retest_sig
if high < upper_box.get_bottom() and high[1] >= upper_box.get_bottom()
label.new(bar_index - 1, high[1], '', color = color(na), textcolor = lower_col, style = label.style_label_down, size = size.normal)
if low > lower_box.get_top() and low[1] <= lower_box.get_top()
label.new(bar_index - 1, low[1], '', color = color(na), textcolor = upper_col, style = label.style_label_up, size = size.normal)
// Plot short and long moving averages
p1 = plot(short_ma, 'Kısa MA', color = trend_col1, display = display.none)
p2 = plot(long_ma, 'Uzun MA', linewidth = 2, color = trend_col, display = display.none)
// Plotting candles
plotcandle(open, high, low, close, title = 'RSN_KALE', color = candle_col, wickcolor = candle_col, bordercolor = candle_col)
// Girdi parametreleri
fast_length = input.int(title="Hızlı Ortalama Periyodu", defval=12)
slow_length = input.int(title="Yavaş Ortalama Periyodu", defval=26)
src = input.source(title="Kaynak", defval=close)
signal_length = input.int(title="Sinyal Yumuşatma Periyodu", minval=1, maxval=50, defval=9, display=display.data_window)
sma_source = input.string(title="Osilatör MA Türü", defval="EMA", options=["SMA", "EMA"], display=display.data_window)
sma_signal = input.string(title="Sinyal Hattı MA Türü", defval="EMA", options=["SMA", "EMA"], display=display.data_window)
// MACD hesaplamaları
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal
// Sıfır çizgisi ve MACD göstergeleri
// Al ve Sat sinyalleri için koşullar
buySignal1 = ta.crossover(macd, 0)
sellSignal1 = ta.crossunder(macd, 0)
macdsart = macd > 0
// İsim çakışmasını önlemek için farklı isimler kullanıldı
bullishCondition = macd > signal // MACD sinyal hattının üzerinde
bearishCondition = macd < signal // MACD sinyal hattının altında
buySignal34 = ta.crossover(macd, signal) and macdsart and bullishCondition
sellSignal34 = ta.crossunder(macd, signal) and macdsart and bearishCondition
// Alım ve satım sinyallerini grafikte göster
plotshape(buySignal34, location=location.belowbar, color=color.rgb(110, 109, 109), style=shape.arrowup, title="TEKRAR AL", text="TEKRAR AL", textcolor=color.rgb(0, 255, 55), size=size.small, offset=0)
plotshape(sellSignal34, location=location.abovebar, color=#0ff936, style=shape.arrowdown, title="KAR AL", text="KAR AL", textcolor=#ffffff, size=size.small, offset=0)Editor is loading...
Leave a Comment