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

Ana sayfa > Borsa > Pine Script Programlama > Pine Script indikatör örnekleri > pine_script_indicator_repainting_001

Pine Script indikatörleri

Mevcut barın aldığı en son değerleri kullanarak yeniden boyamayı (repainting) engelleme

Bir grafik üzerinde, en son barda açılış (open) değeri sabit kalır. Kapanış (close), yüksek (high) ve düşük (low) değerleri ise sürekli değişir. Değişen bu 3 değeri kullanarak yapılan işlemler sonuçları da sürekli değişeceğinden, yeniden boyama (repainting) işlemi gerçekleşir.

En son barda kapanış değeri hissenin en son değerini gösterir.

En son barda sürekli olarak değişiklik gösteren bu değerlere bağlı olarak yapılan işlemler en son barda sürekli farklı sonuçlar üretir.

Bu gösterge ile 3 farklı hesaplama yapılmaktadır:

  1. Kapanış değerinin 5 uzunlukta EMA değeri
  2. Kapanış değerinin EMA 5 değerini yukarı doğru kesme işleminin kontrolü
  3. Kapanış değerinin EMA 5 değerini aşağı doğru kesme işleminin kontrolü

Kapanış değeri EMA 5 değerini yukarı doğru kestiğinde barın arka planı açık yeşil renge, aşağı kestiğinde ise pembe renge boyanmaktadır. Kesişme işlemi gerçekleşmediğinde arka plana boyama işlemi yapılmamaktadır.

Göstergenin Painting değişken değeri, ön tanımlı olarak, seçili şekilde bırakıldığında, en son barda arka plan rengi kesişme işlemlerine bağlı olarak sürekli değişmektedir.

En son barda sabit kalan açılış değeri ile sürekli değişen kapanış, yüksek ve düşük değerleri tabloya yazılır.

Göstergenin Painting değişken değerinin seçili işareti kaldırıldığında ise, hesaplamalarda kullanılan kapanış değeri olarak en son barın kapanış değeri kullanıldığından, en son barda arka plan boyamaları bir kez yapılarak sabit kalır. Bu durumda, kesişme işlemlerinin doğru sonuç vermesi için barstate.isconfirmed koşulunun karşılanması gereklidir.

Özetle, barstate.isconfirmed devreye girdiğinde, en son barda, kapanış (close), yüksek (high) ve düşük (low) değerleri alabilecekleri en son değeri almadan herhangi bir işlem yapılmaz. Yeniden boyama engellenmiş olur.


// 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.
// Aşağıdaki kod https://www.tradingview.com/pine-script-docs/en/v5/concepts/Repainting.html adresinden alınarak sadece 
// repainting ON/OFF işlemi ve tablo eklemesi yapılmıştır.

indicator("Repainting ON/OFF", "", true)

is_painting = input.bool(true, "Painting")

bar_confirmed = not is_painting ? barstate.isconfirmed : true

ma = ta.ema(close, 5)
cross_over = ta.crossover(close, ma) and bar_confirmed
cross_under = ta.crossunder(close, ma) and bar_confirmed
plot(ma, "MA", color.blue, 2)
bgcolor(cross_over ? color.new(color.lime, 80) : cross_under ? color.new(color.fuchsia, 80) : na)

if barstate.islast
    var table m_table = table.new(position.top_right, columns=2, rows=5, bgcolor=color.rgb(212, 212, 212), border_width=1, border_color=color.white)    
    
    table.cell(m_table, 0, 0, "Painting", text_color=color.rgb(236, 236, 236), text_halign=text.align_left, bgcolor=color.rgb(60, 60, 60))
    table.cell(m_table, 0, 1, "Open", text_color=color.rgb(236, 236, 236), text_halign=text.align_left, bgcolor=color.orange)
    table.cell(m_table, 0, 2, "Close", text_color=color.rgb(236, 236, 236), text_halign=text.align_left, bgcolor=color.orange)
    table.cell(m_table, 0, 3, "High", text_color=color.rgb(236, 236, 236), text_halign=text.align_left, bgcolor=color.orange)
    table.cell(m_table, 0, 4, "Low", text_color=color.rgb(236, 236, 236), text_halign=text.align_left, bgcolor=color.orange)

    table.cell(m_table, 1, 0, is_painting ? 'ON' : 'OFF', text_color=color.rgb(236, 236, 236), text_halign=text.align_center, bgcolor=color.rgb(60, 60, 60))
    table.cell(m_table, 1, 1, str.tostring(open, '0.00'), text_color=color.rgb(148, 148, 148), text_halign=text.align_center)
    table.cell(m_table, 1, 2, str.tostring(close, '0.00'), text_color=color.rgb(60, 60, 60), text_halign=text.align_center)
    table.cell(m_table, 1, 3, str.tostring(high, '0.00'), text_color=color.rgb(60, 60, 60), text_halign=text.align_center)
    table.cell(m_table, 1, 4, str.tostring(low, '0.00'), text_color=color.rgb(60, 60, 60), text_halign=text.align_center)

Yukarıdaki gösterge için 1 dakikalık zaman aralığındaki grafikte, yeniden boyamanın açık olduğu durum ilk grafikte kapalı olduğu durum ise ikinci grafikte gösterilmektedir.