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:
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 bardan bir önceki barın kapanış değeri kullanıldığından, en son barda arka plan boyamaları bir kez yapılırak sabit kalı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.
// 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")
close_g = is_painting ? close : close[1]
ma = ta.ema(close_g, 5)
cross_over = ta.crossover(close_g, ma)
cross_under = ta.crossunder(close_g, ma)
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. İlk grafikte yer alan bar arka plan boyamalarının ikinci grafite bir bar ileri kaydığına dikkat ediniz.