BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Borsa > Teknik analiz > Göstergeler > SuperTrend

SuperTrend

SuperTrend hakkında

Supertrend, Ortalama Gerçek Aralık (ATR) değerine dayanan ve trendi takip eden bir göstergedir. Tek çizgisinin hesaplanması, trend algılama ve volatiliteyi birleştirir. Trend yönündeki değişiklikleri tespit etmek ve durakları konumlandırmak için kullanılabilir.

Fiyat grafiği üzerinde yer alır ve çizgileri mevcut trendi gösterir.

Aşağıdaki günlük grafikte, bir hisseye ait fiyat değerleri ile SuperTrend gösterge grafiği ve al/sat noktaları gösterilmektedir:

SuperTrend kullanımı

SuperTrend göstergesi al ve sat sinyalleri üretir. Fiyat gösterge eğrisinin altına düştüğünde kırmızıya döner ve bir düşüş trendine işaret eder. Bu bir sat sinyalididr. Tersine, fiyat eğrinin üzerine çıktığında, gösterge yeşile döner ve bir yükseliş trendine işaret eder. Bu bir al sinyalidir.

SuperTrend göstergesi aynı zamanda güçlü bir destek veya direnç seviyesi olarak görev yapar.

Her biri farklı ayarlara sahip iki veya üç SuperTrend göstergesi birlikte çoklu olarak kullanılabilir. İkili gösterge kullanımında, 10-2 ve 20-3 değerlerini, üç göstergeli kullanımda ise 10-2, 20-3 ve 30-4 değerlerini kullanabiliriz.

Kullanılan tüm göstergelerin çizgisinin de yeşil olması daha güçlü bir yükseliş trendini gösterebilir, ancak piyasa yatay bir seyir izliyorsa bu strateji de yanlış sinyaller verebilir.

SuperTrend göstergesinin çoklu olarak kullanılmasının en büyük avantajı bazı hatalı sinyallerin üretilmesinin engellenebilmesidir.

Aşağıdaki günlük grafikte, bir hisseye ait fiyat değerleri ile üç adet SuperTrend gösterge (10-2, 20-3 ve 30-4) grafiği ve al/sat noktaları gösterilmektedir. Fiyat grafiğine en yakın çizgiler düşük değerlere sahip olan gösterge çizgilerdir.

SuperTrend hesaplama

SuperTrend değeri her bar için aşağıdaki işlemlerin sırasıyla yapılmasıyla elde edilir:

  1. Önce SuperTrend() fonksiyonu ATR periyodu ve çarpan değeri parmaetre olarak geçirilerek çağrılır.
  2. supertrend_bg(atrPeriod, atrMultiplier)
    
  3. En yüksek (high) ve en düşük (low) değerlerin ortalaması alınarak src değişkenine atanır.
  4. src = src_st // (high + low)/2 En yüksek ve en düşük değerin ortalaması
    
  5. ATR değeri hesaplanır.
  6. atr = ta.atr(atrPeriod)
    
  7. hl2 değerine ATR değerinin 3 katı eklenir.
  8. upperBand = src + (atr * atrMultiplier)
    
  9. hl2 değerinden ATR değerinin 3 katı çıkarılır.
  10. lowerBand = src - (atr * atrMultiplier)
    
  11. Bir önceki üst bant değeri na ise 0, değilse değeri döndürerek prevUpperBand değişkenine atar.
  12. prevUpperBand = nz(upperBand[1])
    
  13. Bir önceki alt bant değeri na ise 0, değilse değeri döndürerek prevLowerBand değişkenine atar.
  14. prevLowerBand = nz(lowerBand[1])
    
  15. Üst bant değeri yeniden hesaplanarak, üst bant değeri bir önceki üst bant değerinden küçükse veya bir önceki kapanış değeri bir önceki üst bant değerinden büyükse, üst bant değerini değilse bir önceki üst bant değerini alır.
  16. upperBand := upperBand < prevUpperBand or close[1] > prevUpperBand ? upperBand : prevUpperBand
    
  17. Alt bant değeri yeniden hesaplanarak, alt bant değeri bir önceki alt bant değerinden büyükse veya bir önceki kapanış değeri bir önceki alt bant değerinden küçükse, alt bant değerini değilse bir önceki alt bant değerini alır.
  18. lowerBand := lowerBand > prevLowerBand or close[1] < prevLowerBand ? lowerBand : prevLowerBand
    
  19. Bir önceki SuperTrend değeri prevSuperTrend değişkenine atanır.
  20. prevSuperTrend = superTrend[1]
    
  21. Direction değerini belirlemek için aşağıda açıklanan üç koşul sıra ile kontrol edilerek işlem gerçekleştirilir:
    • Bir önceki ATR değeri na ise, direction 1 değeri alır.
    • Bir önceki SuperTrend değeri bir önceki üst bant değeri ile eşit ise, direction, kapanış değeri üst bant değerinden büyükse -1, değilse 1 değeri alır.
    • Kapanış değeri alt bant değerinden küçükse 1, değilse -1 değeri alır.
        if na(atr[1])
            direction := 1
        else if prevSuperTrend == prevUpperBand
            direction := close > upperBand ? -1 : 1
        else
            direction := close < lowerBand ? 1 : -1
    
  22. superTrend değişkeni, direction -1 değerine eşitse alt bant değerini değilse üst bant değerini alır.
  23. superTrend := direction == -1 ? lowerBand : upperBand
    

Aşağıdaki grafikte, hl2 değeri siyah, hl2 + (3 * ATR) değeri turuncu ve hl2 - (3 * ATR) değeri pembe renkle gösterilmektedir:

Aşağıdaki grafikte, her bar için SuperTrend gösterge değerinin hesaplanmasında kullanılan değerler barın üstündeki veya altındaki kutucuğa yazılmıştır.

Yukarıdaki grafiğin çizilmesini sağlayan gösterge kodları aşağıdadır:


// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Niteya (www.bilgigunlugum.net)
//@version=5
// Bu indikatör sadece eğitim amaçlı olarak verilmiştir. Yatırım kararlarınızda kullanmayınız.
indicator("Supertrend", overlay=true)

src_st = input(hl2, title='SuperTrend Source')
atr_period = input.int(10, "ATR Length", minval=1)
atr_multiplier = input.float(3.0, "ATR Multiplier", minval=0.01, step=0.01)

supertrend_bg(atrPeriod, atrMultiplier) =>
    src = src_st // (high + low)/2 En yüksek ve en düşük değerin ortalaması
    st_str = 'hl2: ' + str.tostring(src, '0.00')

    atr = ta.atr(atrPeriod) // ATR değeri
    st_str += '\nATR: ' + str.tostring(atr, '0.00')  

    upperBand = src + (atr * atrMultiplier) // hl2 değerine ATR değerinin 3 katını ekleme
    st_str += '\nupperBand: ' + str.tostring(upperBand, '0.00') 
    lowerBand = src - (atr * atrMultiplier) // hl2 değerinden ATR değerinin 3 katını çıkarma
    st_str += '\nlowerBand: ' + str.tostring(lowerBand, '0.00') 

    prevUpperBand = nz(upperBand[1]) // Bir önceki üst bant değeri na ise 0, değilse değeri döndürür.
    st_str += '\nprevUpperBand: ' + str.tostring(prevUpperBand, '0.00') 
    prevLowerBand = nz(lowerBand[1]) // Bir önceki alt bant değeri na ise 0, değilse değeri döndürür.
    st_str += '\nprevLowerBand: ' + str.tostring(prevLowerBand, '0.00') 

    // Üst bant değeri bir önceki üst bant değerinden küçükse veya bir önceki kapanış değeri bir önceki üst bant değerinden büyükse, üst bant değerini değilse bir önceki üst bant değerini alır.
    upperBand := upperBand < prevUpperBand or close[1] > prevUpperBand ? upperBand : prevUpperBand
    st_str += '\nupperBand: ' + str.tostring(upperBand, '0.00') 
    // Alt bant değeri bir önceki alt bant değerinden büyükse veya bir önceki kapanış değeri bir önceki alt bant değerinden küçükse, alt bant değerini değilse bir önceki alt bant değerini alır.
    lowerBand := lowerBand > prevLowerBand or close[1] < prevLowerBand ? lowerBand : prevLowerBand
    st_str += '\nlowerBand: ' + str.tostring(lowerBand, '0.00') 

    int direction = na
    float superTrend = na
    prevSuperTrend = superTrend[1] // Bir önceki SuperTrend değeri
    st_str += '\nprevSuperTrend: ' + str.tostring(prevSuperTrend, '0.00')
    st_str += '\natr[1]: ' + str.tostring(atr[1], '0.00')
    if na(atr[1]) // Bir önceki ATR değeri na ise, direction 1 değeri alır.
        direction := 1
    else if prevSuperTrend == prevUpperBand // Bir önceki SuperTrend değeri bir önceki üst bant değeri ile eşit ise, direction, kapanış değeri üst bant değerinden büyükse -1, değilse 1 değeri alır.
        direction := close > upperBand ? -1 : 1
    else
        direction := close < lowerBand ? 1 : -1 // direction, kapanış değeri alt bant değerinden küçükse 1, değilse -1 değeri alır.

    st_str += '\ndirection: ' + str.tostring(direction)

    superTrend := direction == -1 ? lowerBand : upperBand // superTrend, direction -1 değerine eşitse alt bant değerini değilse üst bant değerini alır.
    st_str += '\nsuperTrend: ' + str.tostring(superTrend, '0.00')

    label.new(bar_index, low, text=st_str, yloc=direction<0 ? yloc.belowbar : yloc.abovebar, color=direction<0 ? color.green : color.red, style=label.style_label_up, textcolor=color.white, textalign=text.align_left)        	

    [superTrend, direction]

[supertrend, direction] = supertrend_bg(atr_period, atr_multiplier)

supertrend := barstate.isfirst ? na : supertrend
up_trend = plot(direction<0 ? supertrend : na, "Up Trend", color = color.green, style = plot.style_linebr)
down_trend = plot(direction<0 ? na : supertrend, "Down Trend", color = color.red, style = plot.style_linebr)
body_middle = plot(barstate.isfirst ? na : (open + close) / 2, "Body Middle", display = display.none)

fill(body_middle, up_trend, color.new(color.green, 90), fillgaps = false)
fill(body_middle, down_trend, color.new(color.red, 90), fillgaps = false)

SuperTrend arayüz değerleri

SuperTrend göstergesi arayüzü üzerinden, göstergenin zaman aralığı, ATR uzunluğu ve faktör değerlerini değiştirebiliriz.

Diğer göstergelerle birlikte kullanımı

Supertrend göstergesi doğru yatırım kararları vermemize yardımcı olur, ancak yanlış sinyaller ürettiği zamanlar vardır. Bu nedenle, diğer göstergelerle birlikte kullanımı daha sağlıklı sonuçlar üretecektir.

SuperTrend göstergesini kullanabileceğiniz birçok farklı teknik gösterge vardır. Ancak, en yaygın olarak kullanılan teknik göstergeler şunlardır:

  • Hareketli ortalamalar (MA): SuperTrend göstergesini hareketli ortalamalarla birlikte kullanmak, trendin yönünü ve gücünü belirlemenize yardımcı olabilir. Örneğin, SuperTrend yukarı doğru döndüğünde ve fiyatlar hareketli ortalamanın üzerinde olduğunda, bu uzun bir pozisyon açmak için iyi bir sinyal olabilir.
  • Göreceli güç endeksi (RSI): RSI, aşırı alım ve aşırı satım seviyelerini belirlemek için kullanılan bir momentum göstergesidir. SuperTrend göstergesini RSI ile birlikte kullanmak, fiyatların aşırı alım veya aşırı satım bölgesinde olup olmadığını belirlemenize yardımcı olabilir. Örneğin, SuperTrend yukarı doğru döndüğünde ancak RSI aşırı alım bölgesindeyse, bu uzun bir pozisyon açmak için iyi bir sinyal olmayabilir.
  • Hareketli ortalama yakınsama sapması (MACD): MACD, trendin yönünü ve momentumunu belirlemek için kullanılan bir momentum göstergesidir. SuperTrend göstergesini MACD ile birlikte kullanmak, fiyatların hareketli ortalamalardan uzaklaşıp uzaklaşmadığını belirlemenize yardımcı olabilir. Örneğin, SuperTrend yukarı doğru döndüğünde ve MACD histogramı pozitif olduğunda, bu uzun bir pozisyon açmak için iyi bir sinyal olabilir.
  • Ichimoku bulutu: Ichimoku Bulutu, trendin yönünü, desteği ve direnci ve momentumu belirlemek için kullanılan karmaşık bir göstergedir. SuperTrend göstergesini Ichimoku Bulutu ile birlikte kullanmak, daha kapsamlı bir teknik analiz yapmanıza yardımcı olabilir. Örneğin, SuperTrend yukarı doğru döndüğünde ve fiyatlar Ichimoku Bulutu'nun üzerinde olduğunda, bu uzun bir pozisyon açmak için iyi bir sinyal olabilir.

Bu teknik göstergeler yalnızca bir örnektir ve kendi kişisel tercihlerinize ve işlem yaptığınız varlığa göre farklı teknik göstergeler kullanabilirsiniz.

SuperTrend göstergesi ile verilen al/sat sinyallarini işleme koymadan önce, Parabolic SAR, EMA ve MACD göstergeleri ile kontrol edebiliriz. Bu göstergeler aşağıda gösterilen kriterlere uygun olarak kullanılabilir:

SuperTrend göstergesi fiyat grafiğinin altında yeşil çizgi çizerek al sinyali verdiğinde, aşağıdaki kriterlerden biri veya daha fazlasıyla onaylayın:

1. Parabolic SAR göstergesinin yeşil renkli + işaretinin fiyat grafiği altında olması
2. Fiyat grafiğinin EMA200 üzerinde olması
3. EMA20 çizgisinin EMA50 çizgisinin üzerinde olması
4. MACD göstergesinin mavi çizgisinin turuncu renkli çizgisinin üzerinde olması

SuperTrend göstergesi fiyat grafiğinin üstünde kırmızı çizgi çizerek sat sinyali verdiğinde, aşağıdaki kriterlerden biri veya daha fazlasıyla onaylayın:

1. Parabolic SAR göstergesinin kırmızı renkli + işaretinin fiyat grafiği üstünde olması
2. EMA20 çizgisinin EMA50 çizgisinin altında olması
3. MACD göstergesinin mavi çizgisinin turuncu renkli çizgisinin altında olması