Untitled
unknown
plain_text
a year ago
4.3 kB
12
Indexable
//@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
Editor is loading...
Leave a Comment