Untitled
Anonymous
plain_text
08/27/2026 9:41 AM
21.3 KB
0
Indexable
//@version=6
indicator("SCY Teknik Tablo Pro", overlay=true)
//-------------------- AYARLAR --------------------
size_option = input.string("Orta", "Tablo Boyutu", options=["Küçük", "Orta", "Büyük", "Çok Büyük"], group="Tablo Ayarları")
tf = input.string("", "Zaman Dilimi (MTF)", options=["", "1", "3", "5", "15", "30", "60", "120", "240", "D", "W", "M"], group="Multi Timeframe")
up_color = input.color(color.lime, "YUKARI Rengi", group="Renk Ayarları")
down_color = input.color(color.fuchsia, "AŞAĞI Rengi", group="Renk Ayarları")
neutral_total_color = input.color(color.orange, "NÖTR Rengi", group="Renk Ayarları")
warn_color = input.color(color.yellow, "Uyarı Rengi", group="Renk Ayarları")
table_bg_color = input.color(color.new(color.black, 80), "Tablo Arka Plan", group="Tablo Ayarları")
table_border_color = input.color(color.gray, "Tablo Kenarlık", group="Tablo Ayarları")
header_bg_color = input.color(color.new(color.navy, 30), "Başlık Arka Planı", group="Tablo Ayarları")
row_bg_color = input.color(color.new(color.black, 60), "Veri Satırı Arka Planı", group="Tablo Ayarları")
text_color = input.color(color.white, "Yazı Rengi", group="Tablo Ayarları")
get_text_size() =>
switch size_option
"Küçük" => size.tiny
"Orta" => size.small
"Büyük" => size.large
"Çok Büyük"=> size.huge
=> size.small
sig_tri(cond_buy, cond_sell) => cond_buy ? 1 : cond_sell ? -1 : 0
sig_binary(cond_buy) => cond_buy ? 1 : -1
//-------------------- GERÇEK PİVOT HESAPLAMALARI --------------------
w_pivot_val = request.security(syminfo.tickerid, "W", (high[1] + low[1] + close[1]) / 3, lookahead=barmerge.lookahead_off)
m_pivot_val = request.security(syminfo.tickerid, "M", (high[1] + low[1] + close[1]) / 3, lookahead=barmerge.lookahead_off)
//-------------------- BİRLEŞİK HESAPLAMA FONKSİYONU --------------------
calc_all_signals() =>
hlc3_val = hlc3
close_change = ta.change(close)
atr14 = ta.atr(14)
rsi14 = ta.rsi(close, 14)
mfi14 = ta.mfi(hlc3_val, 14)
// 1. AlphaTrend
coeff = 1.0
ATR_alpha = ta.sma(ta.tr, 14)
upT = low - ATR_alpha * coeff
downT = high + ATR_alpha * coeff
var float AlphaTrend = na
alpha_cond = rsi14 >= 50 or mfi14 >= 50
AlphaTrend := alpha_cond ? (upT < nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : upT) : (downT > nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : downT)
alpha = sig_binary(close > AlphaTrend)
// 2. Awesome Oscillator
ao_val = ta.sma((high + low) / 2, 5) - ta.sma((high + low) / 2, 34)
awes = sig_tri(ao_val > 0, ao_val < 0)
// 3. Bollinger Bands
[bb_u, bb_m, bb_l] = ta.bb(close, 20, 2.0)
bb_width = bb_m != 0 ? (bb_u - bb_l) / bb_m : 0.0
bbos = sig_tri(close < bb_l and close > close[1], close < bb_l and close < close[1])
bbob = sig_tri(close > bb_u and bb_width > ta.sma(bb_width, 20), close < bb_m)
// 4. B-Xtrender
shortL = ta.ema(close - nz(close[1]), 5)
longL = ta.ema(close - nz(close[1]), 20)
bx = sig_tri(shortL - longL > 0, shortL - longL < 0)
// 5. CCI
cci_val = ta.cci(hlc3_val, 20)
cci = sig_tri(cci_val > 0, cci_val < 0)
// 6. Chandelier Exit
chand = sig_binary(close > ta.highest(high, 22) - ta.atr(22) * 3.0)
// 7. Chaikin Money Flow
rng = high - low
mf_mult = rng != 0 ? (((close - low) - (high - close)) / rng) : 0.0
vol_sum = math.sum(volume, 20)
cmf_val = vol_sum != 0 ? math.sum(mf_mult * volume, 20) / vol_sum : 0.0
cmf = sig_tri(cmf_val > 0, cmf_val < 0)
// 8. DMI / ADX
[di_plus, di_minus, adx] = ta.dmi(14, 14)
dmi = sig_tri(di_plus > di_minus and adx > 20, di_minus > di_plus and adx > 20)
// 9. Donchian Ribbon
donch = sig_binary(close > (ta.highest(high, 20) + ta.lowest(low, 20)) / 2)
// 10. DPO
dpo_val = close - ta.sma(close, 20)[11]
dpo = sig_tri(dpo_val > 0, dpo_val < 0)
// 11. EMA Crosses
e5 = ta.ema(close, 5)
e8 = ta.ema(close, 8)
e13 = ta.ema(close, 13)
e20 = ta.ema(close, 20)
e50 = ta.ema(close, 50)
e200 = ta.ema(close, 200)
ema358 = sig_binary(e5 > e8 and e8 > e13)
emac2 = sig_binary(ta.ema(close, 9) > e20)
emac3 = sig_binary(e20 > e50 and e50 > e200)
// 12. HalfTrend
amplitude = 2
dev = 2.0
atr_ht = ta.atr(100) * dev
var int ht_dir = 0
var float ht_max = high
var float ht_min = low
if ht_dir == 1
if low < ht_max - atr_ht
ht_dir := -1
ht_min := low
else
ht_max := math.max(ht_max, high)
else
if high > ht_min + atr_ht
ht_dir := 1
ht_max := high
else
ht_min := math.min(ht_min, low)
ht = sig_binary(ht_dir == 1)
// 13. Hull Suite
hma = ta.wma(2 * ta.wma(close, 10) - ta.wma(close, 20), 4)
hull = sig_binary(close > hma)
// 14. Ichimoku
tenkan = (ta.highest(high, 9) + ta.lowest(low, 9)) / 2
kijun = (ta.highest(high, 26) + ta.lowest(low, 26)) / 2
senkou_a = (tenkan + kijun) / 2
senkou_b = (ta.highest(high, 52) + ta.lowest(low, 52)) / 2
ichi = sig_binary(close > math.max(senkou_a, senkou_b))
// 15. MACD
[macd_l, sig_l, _] = ta.macd(close, 12, 26, 9)
macd_s = sig_tri(macd_l > sig_l, macd_l < sig_l)
// 16. McGinley Dynamic
var float md = close
md_k = 0.6 * 20
ratio = md != 0 ? close / md : 1.0
md := md + (close - md) / (md_k * math.pow(ratio, 4))
mcgin = sig_binary(close > md)
// 17. OBV
obv_v = ta.cum(math.sign(close_change) * volume)
obv = sig_tri(obv_v > ta.sma(obv_v, 10), obv_v < ta.sma(obv_v, 10))
// 18. Parabolic SAR
psar = sig_binary(close > ta.sar(0.02, 0.02, 0.2))
// 19. QQE Mod / RSI / MFI
qqe = sig_tri(rsi14 > 50, rsi14 < 50)
rsi_s = sig_tri(rsi14 > 50, rsi14 < 50)
mfi_s = sig_tri(mfi14 > 50, mfi14 < 50)
// 20. Range Filters
rf14 = sig_tri(close > ta.highest(high, 14) - atr14 * 0.5, close < ta.lowest(low, 14) + atr14 * 0.5)
rf20 = sig_tri(close > ta.highest(high, 20) - ta.atr(20) * 0.5, close < ta.lowest(low, 20) + ta.atr(20) * 0.5)
// 21. ROC
roc = sig_tri(ta.roc(close, 10) > 0, ta.roc(close, 10) < 0)
// 22. SSL Channel
ssl = sig_binary(ta.sma(close, 10) > ta.sma(low, 10))
// 23. Supertrend
[_, direction] = ta.supertrend(3.0, 10)
st = sig_binary(direction < 0)
// 24. STC
macd_stc = ta.ema(close, 10) - ta.ema(close, 50)
lo_stc = ta.lowest(macd_stc, 9)
hi_stc = ta.highest(macd_stc, 9)
stc_val = hi_stc != lo_stc ? (macd_stc - lo_stc) / (hi_stc - lo_stc) : 0.5
stc = sig_tri(stc_val > 0.5, stc_val < 0.5)
// 25. Stochastic
stoch_k = ta.stoch(high, low, close, 14)
stoch = sig_tri(stoch_k > ta.sma(stoch_k, 3), stoch_k < ta.sma(stoch_k, 3))
// 26. TDFI
tdfi_mma = ta.ema(ta.ema(close_change, 13), 13)
tdfi_smma = ta.ema(ta.ema(math.abs(close_change), 13), 13)
tdfi_val = tdfi_smma != 0 ? math.pow(tdfi_mma / tdfi_smma, 3) : 0.0
tdfi = sig_tri(tdfi_val > 0.05, tdfi_val < -0.05)
// 27. Trend Meter
tm_score = 0
tm_score += close > ta.sma(close, 20) ? 1 : -1
tm_score += close > ta.sma(close, 50) ? 1 : -1
tm_score += rsi14 > 50 ? 1 : -1
tm_score += macd_l > sig_l ? 1 : -1
tm = sig_tri(tm_score >= 2, tm_score <= -2)
// 28. TSI
smoothed_pc = ta.ema(ta.ema(close_change, 25), 13)
smoothed_abs = ta.ema(ta.ema(math.abs(close_change), 25), 13)
tsi_val = smoothed_abs != 0 ? 100 * smoothed_pc / smoothed_abs : 0.0
tsi = sig_tri(tsi_val > 0, tsi_val < 0)
// 29. VWAP
vwap_s = sig_binary(close > ta.vwap(hlc3_val))
// 30. Volatility Oscillator
std = ta.stdev(close, 14)
volo = sig_tri(std > ta.sma(std, 14), std < ta.sma(std, 14))
// 31. Vortex Index
tr_sum = math.sum(ta.tr(true), 14)
vi_p = tr_sum != 0 ? math.sum(math.abs(high - low[1]), 14) / tr_sum : 0.0
vi_m = tr_sum != 0 ? math.sum(math.abs(low - high[1]), 14) / tr_sum : 0.0
vort = sig_tri(vi_p > vi_m, vi_m > vi_p)
// 32. Waddah Attar Explosion
t1 = (ta.ema(close, 20) - ta.ema(close, 40)) * 150
e_line = bb_u - bb_l
dead_zone = atr14 * 100 * 0.25
wae_buy = t1 >= 0 and t1 > e_line and t1 > dead_zone
wae_sell = t1 < 0 and math.abs(t1) > e_line and math.abs(t1) > dead_zone
wae = sig_tri(wae_buy, wae_sell)
// 33-35. SMA'lar
sma10 = sig_binary(close > ta.sma(close, 10))
sma50 = sig_binary(close > ta.sma(close, 50))
sma200 = sig_binary(close > ta.sma(close, 200))
// 36-37. Pivotlar
pivot_w = sig_binary(close > w_pivot_val)
pivot_m = sig_binary(close > m_pivot_val)
[rf14, rf20, tsi, st, ht, ichi, donch, dmi, psar, tdfi, mcgin, cci, bx, bbos, vwap_s, chand, roc, ssl, cmf, vort, wae, volo, dpo, macd_s, awes, bbob, stoch, rsi_s, hull, stc, emac2, emac3, tm, qqe, alpha, obv, ema358, sma10, sma50, sma200, pivot_w, pivot_m, mfi_s]
//-------------------- MTF VERİ ÇEKİMİ --------------------
target_tf = tf == "" ? timeframe.period : tf
[rf14_s, rf20_s, tsi_s, st_s, ht_s, ichi_s, donch_s, dmi_s, psar_s, tdfi_s, mcgin_s, cci_s, bx_s, bbos_s, vwap_s, chand_s, roc_s, ssl_s, cmf_s, vort_s, wae_s, volo_s, dpo_s, macd_s, awes_s, bbob_s, stoch_s, rsi_s, hull_s, stc_s, emac2_s, emac3_s, tm_s, qqe_s, alpha_s, obv_s, ema358_s, sma10_s, sma50_s, sma200_s, pivot_w_s, pivot_m_s, mfi_s] = request.security(syminfo.tickerid, target_tf, calc_all_signals(), lookahead=barmerge.lookahead_off)
// Sinyal ve İsim Dizileri
signals = array.from(
alpha_s, awes_s, bbob_s, bbos_s, bx_s, cci_s, chand_s, cmf_s, dmi_s, donch_s,
dpo_s, ema358_s, emac2_s, emac3_s, ht_s, hull_s, ichi_s, macd_s, mcgin_s, obv_s,
psar_s, qqe_s, rf14_s, rf20_s, rsi_s, roc_s, ssl_s, st_s, stc_s, stoch_s,
tdfi_s, tm_s, tsi_s, vwap_s, volo_s, vort_s, wae_s, sma10_s, sma50_s, sma200_s,
pivot_w_s, pivot_m_s
)
names = array.from(
"Alpha", "Awesome", "BBob", "BBos", "BX", "CCI", "Chand", "CMF", "DMI", "Donch",
"DPO", "EMA358", "EMAC2", "EMAC3", "HT", "Hull", "Ichi", "MACD", "McGin", "OBV",
"PSAR", "QQE", "RF14", "RF20", "RSI", "ROC", "SSL", "ST", "STC", "Stoch",
"TDFI", "TMeter", "TSI", "VWAP", "VolO", "Vort", "WAE", "SMA10", "SMA50", "SMA200",
"P-W", "P-M"
)
weights = array.from(
4, 1, 1, 1, 1, 1, 3, 1, 2, 1,
1, 2, 2, 2, 4, 1, 4, 2, 3, 1,
2, 1, 2, 2, 1, 1, 3, 4, 1, 1,
2, 2, 2, 3, 1, 1, 2, 1, 2, 3,
3, 3
)
categories = array.from(
1, 2, 4, 4, 2, 2, 4, 3, 1, 1,
2, 1, 1, 1, 1, 1, 1, 2, 1, 3,
1, 2, 1, 1, 2, 2, 1, 1, 2, 2,
2, 1, 2, 3, 4, 1, 3, 1, 1, 1,
1, 1
)
//-------------------- GELİŞMİŞ PUANLAMA MOTORU --------------------
var float bull_score = 0.0, var float bear_score = 0.0
var float trend_bull = 0.0, var float trend_max = 0.0
var float mom_bull = 0.0, var float mom_max = 0.0
var float vol_bull = 0.0, var float vol_max = 0.0
bull_score := 0.0, bear_score := 0.0
trend_bull := 0.0, trend_max := 0.0
mom_bull := 0.0, mom_max := 0.0
vol_bull := 0.0, vol_max := 0.0
for i = 0 to array.size(signals) - 1
sig = array.get(signals, i)
w = array.get(weights, i)
cat = array.get(categories, i)
if sig == 1
bull_score += w
else if sig == -1
bear_score += w
if cat == 1
trend_max += w
if sig == 1
trend_bull += w
else if cat == 2
mom_max += w
if sig == 1
mom_bull += w
else if cat == 3
vol_max += w
if sig == 1
vol_bull += w
// Kategori Yüzdeleri
trend_score_pct = trend_max > 0 ? math.round((trend_bull / trend_max) * 100) : 50
mom_score_pct = mom_max > 0 ? math.round((mom_bull / mom_max) * 100) : 50
vol_score_pct = vol_max > 0 ? math.round((vol_bull / vol_max) * 100) : 50
// 1. KURUMSAL GİRİŞ PUANI (IFS): CMF, OBV, VWAP, WAE, MFI
ifs_total = (cmf_s == 1 ? 1 : 0) + (obv_s == 1 ? 1 : 0) + (vwap_s == 1 ? 1 : 0) + (wae_s == 1 ? 1 : 0) + (mfi_s == 1 ? 1 : 0)
ifs_pct = math.round((ifs_total / 5.0) * 100)
// 2. ERKEN DÖNÜŞ SKORU (ERS): MACD, TSI, TDFI, AO, CCI, RSI
ers_total = (macd_s == 1 ? 1 : 0) + (tsi_s == 1 ? 1 : 0) + (tdfi_s == 1 ? 1 : 0) + (awes_s == 1 ? 1 : 0) + (cci_s == 1 ? 1 : 0) + (rsi_s == 1 ? 1 : 0)
ers_pct = math.round((ers_total / 6.0) * 100)
// 3. ÇELİŞKİ ENDEKSİ UYARI MOTORU
var string warning_msg = "STABİL: Uyumsuzluk Yok"
var bool is_warning = false
is_warning := false
diff_trend_mom = math.abs(trend_score_pct - mom_score_pct)
if diff_trend_mom > 40
is_warning := true
if trend_score_pct > mom_score_pct
warning_msg := "⚠️ UYARI: Trend Güçlü (% " + str.tostring(trend_score_pct) + "), Momentum Zayıf (% " + str.tostring(mom_score_pct) + ")"
else
warning_msg := "⚠️ UYARI: Momentum Yüksek (% " + str.tostring(mom_score_pct) + "), Trend Teyitsiz (% " + str.tostring(trend_score_pct) + ")"
else if math.abs(trend_score_pct - vol_score_pct) > 45
is_warning := true
warning_msg := "⚠️ RİSK: Hacim (% " + str.tostring(vol_score_pct) + ") Trendi Desteklemiyor!"
active_total = bull_score + bear_score
net_confidence_pct = active_total > 0 ? math.round((math.abs(bull_score - bear_score) / active_total) * 100, 1) : 0.0
dominant_side = bull_score > bear_score ? "BOĞA" : bear_score > bull_score ? "AYI" : "NÖTR"
//-------------------- TABLO OLUŞTURMA --------------------
text_size = get_text_size()
rows = 5 + int(math.ceil(array.size(signals) / 2.0))
var table t = table.new(position.bottom_right, 4, rows, bgcolor=table_bg_color, border_color=table_border_color, border_width=1)
if barstate.islast
// Satır 0: Aktif Net Güç Başlığı
summary_color = dominant_side == "BOĞA" ? up_color : dominant_side == "AYI" ? down_color : neutral_total_color
summary_text = "BOĞA: " + str.tostring(bull_score, "#") + " | AYI: " + str.tostring(bear_score, "#") + " (% " + str.tostring(net_confidence_pct) + " NET " + dominant_side + ")"
table.merge_cells(t, 0, 0, 3, 0)
table.cell(t, 0, 0, summary_text, text_color=summary_color, text_size=text_size, bgcolor=header_bg_color)
// Satır 1: Çelişki / Uyumsuzluk Uyarı Bandı
warn_bg = is_warning ? color.new(color.maroon, 20) : row_bg_color
warn_txt_color = is_warning ? warn_color : text_color
table.merge_cells(t, 0, 1, 3, 1)
table.cell(t, 0, 1, warning_msg, text_color=warn_txt_color, text_size=text_size, bgcolor=warn_bg)
// Satır 2: Kurumsal Giriş (IFS) ve Erken Dönüş (ERS) Paneli
strategy_panel = "🏛️ KURUMSAL GİRİŞ (IFS): %" + str.tostring(ifs_pct) + " | 🔄 ERKEN DÖNÜŞ (ERS): %" + str.tostring(ers_pct)
table.merge_cells(t, 0, 2, 3, 2)
table.cell(t, 0, 2, strategy_panel, text_color=text_color, text_size=text_size, bgcolor=row_bg_color)
// Satır 3: Kolon Başlıkları
table.cell(t, 0, 3, "Gösterge", text_color=text_color, text_size=text_size, bgcolor=header_bg_color)
table.cell(t, 1, 3, "Sinyal", text_color=text_color, text_size=text_size, bgcolor=header_bg_color)
table.cell(t, 2, 3, "Gösterge", text_color=text_color, text_size=text_size, bgcolor=header_bg_color)
table.cell(t, 3, 3, "Sinyal", text_color=text_color, text_size=text_size, bgcolor=header_bg_color)
// Satır 4+: Detaylı Hücreler
for i = 0 to array.size(signals) - 1
row = 4 + int(i / 2)
col = (i % 2) * 2
name = array.get(names, i)
sig_num = array.get(signals, i)
sig_str = sig_num == 1 ? "BUY" : sig_num == -1 ? "SELL" : "NEUTRAL"
sig_color = sig_num == 1 ? up_color : sig_num == -1 ? down_color : neutral_total_color
table.cell(t, col, row, name, text_color=text_color, text_size=text_size, bgcolor=row_bg_color)
table.cell(t, col + 1, row, sig_str, text_color=sig_color, text_size=text_size, bgcolor=row_bg_color)Editor is loading...
Leave a Comment