PHP Code:
// © Kinetik Komuta Merkezi - AYNA (EMİLİM VE DELTA PROFİLİ)
//@version=6
indicator("Emilim + Hacim/Delta Profili [Ayna]", overlay = true, max_boxes_count = 500, max_lines_count = 500, max_labels_count = 500)
// ════════════════════════════════════════════════════════════════════
// 1. GİRDİLER (Taktiksel Parametreler)
// ════════════════════════════════════════════════════════════════════
string GRP_EM = "Emilim Ayarları"
float inp_score_perc = input.float(85.0, "Emilim Eşik Persentili", group=GRP_EM)
bool inp_use_median = input.bool(true, "Hacim > Medyan Filtresi", group=GRP_EM)
float inp_arrow_off = input.float(8.0, "Ok Mesafe (Puan)", group=GRP_EM)
string GRP_PR = "Profil Ayarları"
float inp_bin_size = input.float(10.0, "Dilim (Bin) Boyutu (Puan)", group=GRP_PR)
int inp_gap_bars = input.int(5, "Son Bar-Panel Boşluğu", group=GRP_PR)
int inp_vol_bars = input.int(24, "Hacim Panel Genişliği", group=GRP_PR)
int inp_panel_gap = input.int(6, "Panel Arası Boşluk", group=GRP_PR)
int inp_delta_bars = input.int(24, "Delta Panel Genişliği", group=GRP_PR)
bool inp_draw_prof = input.bool(true, "Çift Paneli Çiz", group=GRP_PR)
string GRP_CO = "Renkler ve Görsel"
color col_buy = input.color(color.rgb(46, 139, 87), "Alış (Boğa)", group=GRP_CO)
color col_sell = input.color(color.rgb(192, 57, 43), "Satış (Ayı)", group=GRP_CO)
color col_poc = input.color(color.gold, "POC Rengi", group=GRP_CO)
color col_axis = input.color(color.gray, "Eksen Rengi", group=GRP_CO)
// ════════════════════════════════════════════════════════════════════
// 2. VERİ YAPILARI VE DELTA HESAPLAMA
// ════════════════════════════════════════════════════════════════════
// Yeni gün kontrolü (Veriler günlük sıfırlanır)
var bool is_new_day = ta.change(time("D")) != 0
// Delta Tahmini (TradingView için en yakın yaklaşım)
float bar_range = high - low == 0 ? syminfo.mintick : high - low
float buy_vol = close > open ? volume : close < open ? 0 : volume / 2
float sell_vol = close < open ? volume : close > open ? 0 : volume / 2
float delta = buy_vol - sell_vol
// Emilim (Absorption) Skoru
float score = volume / bar_range
// Medyan ve Persentil için Array'ler
var array<float> arr_scores = array.new<float>()
var array<float> arr_vols = array.new<float>()
if is_new_day
array.clear(arr_scores)
array.clear(arr_vols)
array.push(arr_scores, score)
array.push(arr_vols, volume)
float score_th = array.percentile_nearest_rank(arr_scores, inp_score_perc)
float vol_med = inp_use_median ? array.median(arr_vols) : 0.0
// ════════════════════════════════════════════════════════════════════
// 3. EMİLİM TESPİTİ (Oklar)
// ════════════════════════════════════════════════════════════════════
bool is_bull_abs = false
bool is_bear_abs = false
if score >= score_th and volume >= vol_med
if delta < 0 and close >= open
is_bull_abs := true
else if delta > 0 and close <= open
is_bear_abs := true
plotshape(is_bull_abs, "Boğa Emilim", shape.circle, location.belowbar, col_buy, size=size.tiny)
plotshape(is_bear_abs, "Ayı Emilim", shape.circle, location.abovebar, col_sell, size=size.tiny)
// ════════════════════════════════════════════════════════════════════
// 4. HACİM VE DELTA PROFİLİ (Sağ Panel)
// ════════════════════════════════════════════════════════════════════
var array<float> bin_levels = array.new<float>()
var array<float> bin_buy = array.new<float>()
var array<float> bin_sell = array.new<float>()
if is_new_day
array.clear(bin_levels)
array.clear(bin_buy)
array.clear(bin_sell)
// Mevcut barı doğru "dilime" (bin) ekleme
float current_bin = math.floor(close / inp_bin_size) * inp_bin_size
int bin_idx = array.indexof(bin_levels, current_bin)
if bin_idx == -1
array.push(bin_levels, current_bin)
array.push(bin_buy, buy_vol)
array.push(bin_sell, sell_vol)
else
array.set(bin_buy, bin_idx, array.get(bin_buy, bin_idx) + buy_vol)
array.set(bin_sell, bin_idx, array.get(bin_sell, bin_idx) + sell_vol)
// ════════════════════════════════════════════════════════════════════
// 5. ÇİZİM MOTORU (Sadece son barda çalışır, işlemciyi yormaz)
// ════════════════════════════════════════════════════════════════════
if barstate.islast and inp_draw_prof
float max_vol = 0.0
float max_delta = 0.0
int poc_idx = 0
float poc_vol = 0.0
// Maksimumları ve POC'u bul
if array.size(bin_levels) > 0
for i = 0 to array.size(bin_levels) - 1
float b_vol = array.get(bin_buy, i)
float s_vol = array.get(bin_sell, i)
float t_vol = b_vol + s_vol
float d_vol = math.abs(b_vol - s_vol)
if t_vol > poc_vol
poc_vol := t_vol
poc_idx := i
max_vol := math.max(max_vol, math.max(b_vol, s_vol))
max_delta := math.max(max_delta, d_vol)
// Eksenleri Belirle
int vol_start = bar_index + inp_gap_bars
int vol_center = vol_start + math.round(inp_vol_bars / 2)
int delta_start = vol_start + inp_vol_bars + inp_panel_gap
int delta_center= delta_start + math.round(inp_delta_bars / 2)
float vol_scale = max_vol > 0 ? (inp_vol_bars / 2) / max_vol : 0
float delta_scale = max_delta > 0 ? (inp_delta_bars / 2) / max_delta : 0
// Çizimleri oluştur
if array.size(bin_levels) > 0
for i = 0 to array.size(bin_levels) - 1
float lvl = array.get(bin_levels, i)
float b_v = array.get(bin_buy, i)
float s_v = array.get(bin_sell, i)
float d_v = b_v - s_v
// Hacim Kutuları (Sol Kısım)
if b_v > 0
box.new(vol_center, lvl + (inp_bin_size * 0.9), vol_center + math.round(b_v * vol_scale), lvl, bgcolor=color.new(col_buy, 40), border_color=na)
if s_v > 0
box.new(vol_center - math.round(s_v * vol_scale), lvl + (inp_bin_size * 0.9), vol_center, lvl, bgcolor=color.new(col_sell, 40), border_color=na)
// Delta Kutuları (Sağ Kısım)
if d_v != 0
color d_col = d_v > 0 ? col_buy : col_sell
box.new(delta_center, lvl + (inp_bin_size * 0.9), delta_center + math.round(d_v * delta_scale), lvl, bgcolor=color.new(d_col, 30), border_color=na)
// POC Çizgisi ve Etiketi
float poc_price = array.get(bin_levels, poc_idx) + (inp_bin_size / 2)
line.new(bar_index - 50, poc_price, delta_center + 10, poc_price, color=col_poc, style=line.style_dashed, width=2)
label.new(bar_index - 10, poc_price, "POC: " + str.tostring(poc_price), color=color(na), textcolor=col_poc, style=label.style_label_down)
Operasyonel Çeviri Notları:
Yer İmleri