Untitled

mail@pastecode.io avatar
unknown
plain_text
14 days ago
4.3 kB
4
Indexable
Never
//@version=5
indicator("Momentum Oscillator, Real Time Divergences & Signals [TrendAlpha]", "Momentum Oscillator, Divergences & Signals [TrendAlpha]", overlay=true)

length = input(7, "Length")
src = input(close, "Source")
show_lines = input(true, "Show Lines")
colcor = input(false, "Hide Price/Oscillator")

// Sayıların gösterilip gösterilmeyeceğini belirlemek için input'lar
show_1 = input(true, "Show 1")
show_2 = input(true, "Show 2")
show_3 = input(true, "Show 3")
show_4 = input(true, "Show 4")
show_5 = input(true, "Show 5")
show_6 = input(true, "Show 6")
show_7 = input(true, "Show 7")
show_8 = input(true, "Show 8")
show_9 = input(true, "Show 9")

up = ta.highest(src, length)
dn = ta.lowest(src, length)
osc = ta.mom(ta.sma(ta.sma(src, length), length), length)
phosc = ta.crossunder(ta.change(osc), 0)
plosc = ta.crossover(ta.change(osc), 0)
bear = osc > 0 and phosc and ta.valuewhen(phosc, osc, 0) < ta.valuewhen(phosc, osc, 1) and ta.valuewhen(phosc, up, 0) > ta.valuewhen(phosc, up, 1)
bull = osc < 0 and plosc and ta.valuewhen(plosc, osc, 0) > ta.valuewhen(plosc, osc, 1) and ta.valuewhen(plosc, dn, 0) < ta.valuewhen(plosc, dn, 1)

simple_css = osc > osc[1] and osc > 0 ? color.new(color.green, 0) : osc < osc[1] and osc > 0 ? color.new(color.lime, 0) : osc < osc[1] and osc < 0 ? color.new(color.red, 0) : osc > osc[1] and osc < 0 ? color.new(color.maroon, 0) : na

plot(osc, "Osc", colcor ? color.new(color.black, 0) : simple_css, 3, plot.style_histogram)

// Yeşil sayım mekanizması
var int green_count = na
var float last_high_green = na
var int prev_green_count = na  // Önceki sayımı saklamak için

if (osc > osc[1] and osc > 0)  // Osilatör yeşile döndüğünde
    if na(green_count) or green_count == 0  // Sayım 1'den başlat
        green_count := 1
        last_high_green := high
    else if high > last_high_green and green_count < 9  // Eğer mumun high'ı son kaydedilen high'ı geçerse
        green_count := green_count + 1
        last_high_green := high
else if osc < osc[1] and osc < 0  // Osilatör kırmızıya döndüğünde
    green_count := na  // Yeşil sayımı durdur

// Yeşil sayımı mumların üstüne sadece sayım arttığında ve ilgili sayı gösterilmek isteniyorsa yerleştir
if not na(green_count) and (na(prev_green_count) or green_count > prev_green_count)
    if (green_count == 1 and show_1) or (green_count == 2 and show_2) or (green_count == 3 and show_3) or
       (green_count == 4 and show_4) or (green_count == 5 and show_5) or (green_count == 6 and show_6) or
       (green_count == 7 and show_7) or (green_count == 8 and show_8) or (green_count == 9 and show_9)
        label.new(bar_index, high, str.tostring(green_count), style=label.style_label_down, color=color.green, textcolor=color.white, size=size.small)
prev_green_count := green_count  // Önceki sayımı güncelle

// Kırmızı sayım mekanizması
var int red_count = na
var float last_low_red = na
var int prev_red_count = na  // Önceki kırmızı sayımı saklamak için

if (osc < osc[1] and osc < 0)  // Osilatör kırmızıya döndüğünde
    if na(red_count) or red_count == 0  // Sayım 1'den başlat
        red_count := 1
        last_low_red := low
    else if low < last_low_red and red_count < 9  // Eğer mumun low'u son kaydedilen low'u geçerse
        red_count := red_count + 1
        last_low_red := low
else if osc > osc[1] and osc > 0  // Osilatör yeşile döndüğünde
    red_count := na  // Kırmızı sayımı durdur

// Kırmızı sayımı mumların altına sadece sayım arttığında ve ilgili sayı gösterilmek isteniyorsa yerleştir
if not na(red_count) and (na(prev_red_count) or red_count > prev_red_count)
    if (red_count == 1 and show_1) or (red_count == 2 and show_2) or (red_count == 3 and show_3) or
       (red_count == 4 and show_4) or (red_count == 5 and show_5) or (red_count == 6 and show_6) or
       (red_count == 7 and show_7) or (red_count == 8 and show_8) or (red_count == 9 and show_9)
        label.new(bar_index, low, str.tostring(red_count), style=label.style_label_up, color=color.red, textcolor=color.white, size=size.small)
prev_red_count := red_count  // Önceki kırmızı sayımı güncelle
Leave a Comment