BG Trend, aşağıda gösterilen seçenekler ve koşullar gerçekleştiğinde alış veya satış yönünde sonuçlar elde eden, trend bazlı bir göstergedir.
Gösterge seçenekleri
Yükselen trend onayı
Düşen trend onayı
* 1 ve 2. koşullar gerçekleştikleri bardan itibaren, kullanıcı tarafından değiştirilebilen Bar geçerlilik sayısı değeri kadar değerlendirmeye alınırlar.
Kullanıcı EMA1 ve EMA2 kesişmesini kullan seçeneğini işaretlerse (Ön tanımlı olarak seçilidir.), yükselen ve düşen trend onaylarını almak için EMA20 ve EMA50 kesişimleri de kullanılır.
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Niteya
//@version=5
// Bu indikatör sadece eğitim amaçlı olarak verilmiştir. Yatırım kararlarınızda kullanmayınız.
indicator(title="Niteya BG Trend", shorttitle="Niteya BG Trend", overlay=true, max_labels_count=500)
var string bg_trend = 'Gösterge değerleri'
ohcl4_length = input(20, 'Trend değerlendirme uzunluğu', group=bg_trend)
is_ema1_cross_ema2 = input.bool(true, title='EMA1 ve EMA2 kesişmesini kullan', group=bg_trend)
is_td = input.bool(false, title='Trend yönünü kullan', inline='trend', group=bg_trend)
is_trend_line = input.bool(false, title='Trend çizgisi', inline='trend', group=bg_trend)
bar_no = input(15, title='Bar geçerlilik sayısı', group=bg_trend)
is_ma_lines = input.bool(true, title='MA çizgileri', group=bg_trend)
is_level_labels = input.bool(false, title='Seviye işlem etiketleri', group=bg_trend)
is_labels = input.bool(true, title='İşlem etiketleri', group=bg_trend)
var string ema_group = 'EMA değerleri'
ema_length1 = input(20, 'EMA length1', group=ema_group)
ema_length2 = input(50, 'EMA length2', group=ema_group)
ema_length3 = input(200, 'EMA length3', group=ema_group)
// Hesaplamalar
EMA1 = ta.ema(close, ema_length1)
EMA2 = ta.ema(close, ema_length2)
EMA3 = ta.ema(close, ema_length3)
plot(is_ma_lines ? EMA1 : na, title='MA src1', color=color.blue, linewidth=1)
plot(is_ma_lines ? EMA2 : na, title='MA src2', color=color.orange, linewidth=2)
plot(is_ma_lines ? EMA3 : na, title='MA src3', color=color.black, linewidth=2)
ohlc4_sma = ta.sma(ohlc4, ohcl4_length)
trend_direction = close>ohlc4_sma ? 1 : close<ohlc4_sma ? -1 : 0
plot(is_trend_line ? ohlc4_sma : na, color=trend_direction==1 ? color.green : trend_direction==-1 ? color.red : color.silver, title='BG Trend', linewidth=2)
var int long_level = 0
var int short_level = 0
var float high_long = 0.00
var float low_short = 0.00
var int index_long = 0
var int index_short = 0
// Close EMA200'den büyükse ve EMA50'yi yukarı doğru kesmişse ve EMA50'nin üzerinde kapatmışsa ve bar yeşil ise
if long_level == 0
if (close>EMA3 and ta.crossover(close, EMA2) and close>EMA2 and close>open)
long_level := 1
high_long := high
index_long := bar_index
label.new(is_level_labels ? bar_index : na, low, text='1', yloc=yloc.belowbar, color=color.green, style=label.style_label_up, textcolor=color.white, textalign=text.align_left)
// Close EMA50'yi aşağı doğru kesmişse ve EMA50'nin altında kapatmışsa ve bar kırmızı ise
if short_level == 0
if (ta.crossunder(close, EMA2) and close<EMA2 and close<open)
short_level := 1
low_short := low
index_short := bar_index
label.new(is_level_labels ? bar_index : na, low, text='1', yloc=yloc.abovebar, color=color.red, style=label.style_label_down, textcolor=color.white, textalign=text.align_left)
// İlk koşul gerçekleşmişse ve gerçekleştiğinden bu yana bar sayısı bar_no değişken değerinden küçükse, bar endeks değeri ilk koşulun gerçekleştiği endeks
// değerinden büyük ise ve low değeri EMA50 altında veya eşit ise veya low değeri ilk koşulun gerçekleştiği barın kapanış değerinden büyük ise
if bar_index-index_long<bar_no
if long_level == 1 and bar_index>index_long
if low<=EMA2 or low>close[bar_index-index_long]
long_level := 2
index_long := bar_index
label.new(is_level_labels ? bar_index : na, low, text='2', yloc=yloc.belowbar, color=color.green, style=label.style_label_up, textcolor=color.white, textalign=text.align_left)
else
long_level := 0
index_long := 0
// İlk koşul gerçekleşmişse ve gerçekleştiğinden bu yana bar sayısı bar_no değişken değerinden küçükse, bar endeks değeri ilk koşulun gerçekleştiği endeks
// değerinden büyük ise ve high değeri EMA50 üzerinde veya eşit ise veya high değeri ilk koşulun gerçekleştiği barın kapanış değerinden küçük ise
if bar_index-index_short<bar_no
if short_level == 1 and bar_index>index_short
if high>=EMA2 or high<close[bar_index-index_short]
short_level := 2
index_short := bar_index
label.new(is_level_labels ? bar_index : na, low, text='2', yloc=yloc.abovebar, color=color.red, style=label.style_label_down, textcolor=color.white, textalign=text.align_left)
else
short_level := 0
index_short := 0
// 2. koşul gerçekleşmişse ve gerçekleştiğinden bu yana bar sayısı bar_no değişken değerinden küçükse, bar endeks değeri 2.koşulun gerçekleştiği endeks
// değerinden büyük ise ve close değeri 1.koşulun gerçekleştiği bardaki high değerinden büyük ise, 3.koşul ve BUY koşulu sağlanmış olur.
// Close değeri bir önceki barın close değerinden küçük ise 1 ve 2. koşullar sıfırlanır.
if bar_index-index_long<bar_no
if long_level == 2 and bar_index>index_long
if close>high_long
long_level := 3
else if close<close[1] // 2.koşul gerçekleştikten sonra fiyat aşağı doğru giderse, mevcut koşulları sıfırla (Gelecek koşullar devreye girebilsin diye)
long_level := 0
index_long := 0
else
long_level := 0
index_long := 0
// 2. koşul gerçekleşmişse ve gerçekleştiğinden bu yana bar sayısı bar_no değişken değerinden küçükse, bar endeks değeri 2.koşulun gerçekleştiği endeks
// değerinden büyük ise ve close değeri 1.koşulun gerçekleştiği bardaki low değerinden küçük ise, 3.koşul ve SELL koşulu sağlanmış olur.
// Close değeri bir önceki barın close değerinden büyük ise 1 ve 2. koşullar sıfırlanır.
if bar_index-index_short<bar_no
if short_level == 2 and bar_index>index_short
if close<low_short
short_level := 3
else if close>close[1] // 2.koşul gerçekleştikten sonra fiyat yukarı doğru giderse, mevcut koşulları sıfırla (Gelecek koşullar devreye girebilsin diye)
short_level := 0
index_short := 0
else
short_level := 0
index_short := 0
up_trend_1 = long_level == 3
up_trend_2 = ta.crossover(EMA1, EMA2) and close>EMA3
up_trend_cond = (is_ema1_cross_ema2 ? (up_trend_1 or up_trend_2) : up_trend_1) and (is_td ? trend_direction==1 : true)
down_trend_1 = short_level == 3
down_trend_2 = ta.crossunder(EMA1, EMA2)
down_trend_cond = (is_ema1_cross_ema2 ? (down_trend_1 or down_trend_2) : down_trend_1) and (is_td ? trend_direction==-1 : true)
bg_value = up_trend_cond ? 1 : down_trend_cond ? -1 : 0
var bool long_ok = false
var bool short_ok = false
if bg_value==1
if not long_ok
label.new(is_labels ? bar_index : na, low, text=str.tostring('BUY'), yloc=yloc.belowbar, color=up_trend_1 ? color.green : color.rgb(70, 226, 23), style=label.style_label_up, textcolor=color.white, textalign=text.align_center)
long_ok := true
short_ok := false
long_level := 0
index_long := 0
if bg_value==-1
if not short_ok
label.new(is_labels ? bar_index : na, low, text=str.tostring('SELL'), yloc=yloc.abovebar, color=down_trend_1 ? color.red : color.rgb(248, 84, 213), style=label.style_label_down, textcolor=color.white, textalign=text.align_center)
short_ok := true
long_ok := false
short_level := 0
index_short := 0
var label label_ma1 = na
var label label_ma2 = na
var label label_ma3 = na
if barstate.islast and is_ma_lines
label.delete(label_ma1)
label.delete(label_ma2)
label.delete(label_ma3)
label_ma1 := label.new(x=bar_index+2, y=EMA1, text=str.tostring(ema_length1), color=color.blue, style=label.style_label_center, textcolor=color.white, size=size.small)
label_ma2 := label.new(x=bar_index+2, y=EMA2, text=str.tostring(ema_length2), color=color.orange, style=label.style_label_center, textcolor=color.white, size=size.small)
label_ma3 := label.new(x=bar_index+2, y=EMA3, text=str.tostring(ema_length3), color=color.black, style=label.style_label_center, textcolor=color.white, size=size.small)
Yukarıdaki indikatörün bir uygulaması aşağıda grafikte gösterilmektedir: