Komut dosyası veya strateji, sayfayı yeniledikten (yeniden boyadıktan) sonra farklı sonuçlar veriyor

Tarihsel veriler, bar içi fiyat hareketlerinin kayıtlarını içermez; sadece açık, yüksek, düşük ve kapalı (OHLC). Bu, bazen sadece açık fiyatın bilindiği ve fiyatın gerçek zamanlı çubuğun son yüksek, düşük ve yakın değerlerinin gerçekten sonra ayarlanmasından önce birçok kez hareket edeceği geçmiş verilerde ve gerçek zamanlı olarak farklı çalışan bir komut dosyasına yol açar. -zaman çubuğu kapanır.

Grafiğe bir komut dosyası eklersek, bir dizi gerçek zamanlı çubuk üzerinde hesaplanana kadar bekleyin ve ardından sayfayı yeniden yükleyin. Bazen bir betiğin grafiklerinin biraz değiştiğini görürüz. Bu davranış, genel olarak gösterge yeniden boyama olarak adlandırılan birkaç farklı davranış türünden biridir. Burada endişelendiğimiz ve yeniden boyamayı kullanırken başvuracağımız yeniden boyama türüdür. Bazı özellikler komut dosyalarında kullanıldığında, tarihsel ve gerçek zamanlı çubuklarda farklı hesaplamalar yapacaklarından kaynaklanmaktadır.

Doğru veya yanlış olarak yeniden boyama olarak adlandırılan diğer davranış türleri arasında, geçmiş çubuklarda negatif bir kayma ile çizim yapmak ve security fonksiyonuna yanlış anlaşılmış çağrılar yoluyla alınan başka türlü kullanılamayan gelecekteki bilgileri kullanmak yer alır. Bu, komut dosyası hesaplamalarına gerçek zamanlı olarak kullanılamayan verileri tanıtabilir.

Tüm göstergeler burada tartıştığımız yeniden boyama türüne tabi değildir. Çoğu durumda, kodda belirli işlevlerin veya dil yapılarının kullanılıp kullanılmamasına bağlıdır. Bu yeniden boyama efektinin bir hata olmadığını, bunun yerine, tarihi çubuklar ve TradingView'deki gerçek zamanlı çubuk bilgileri arasındaki doğal farklılıkların bir sonucu olduğunu lütfen unutmayın.

Aşağıdaki durumlarda yeniden boyamayı görebiliriz:

1. calc_on_every_tick = true kullanan stratejiler. calc_on_every_tick = false parametresine sahip bir strateji de yeniden boyamaya eğilimli olabilir, ancak daha az derecede.

2. Grafiğin ana sembolünün çözünürlüğünden daha yüksek bir çözünürlükten veri istemek için security fonksiyonunu kullanma:

// Bu çalışmayı 1 dakikalık grafiğe ekle
//@version=4
study("My Script")
c = security(syminfo.tickerid, "5", close)
plot(close)
plot(c, color=color.red)

Bu çalışma, ileri okuma parametresinin değerine bakılmaksızın gerçek zamanlı ve geçmiş veriler üzerinde farklı şekilde hesaplar (bkz. lookahead durumunu anlama).

3. Grafiğin ana sembolünün çözünürlüğünden daha düşük bir çözünürlükten veri istemek için security fonksiyonunu kullanma (daha fazla bilgi burada):

// Bu çalışmayı 5 dakikalık grafikte ekle
//@version=3
study("My Script")
c = security(tickerid, "1", close, lookahead=false)
plot(close)
plot(c, color=red)

lookahead = false olursa, yeniden boyama gerçekleşir. lookahead = true olduğunda, yeniden boyama daha az olasıdır. 1 ve 5 dakikalık güncellemeler birbirinden üstün olduğunda da olabilir.

4. Tüm kod hesaplamaları başlangıç noktalarına (starting point) bağlıdır. Gün içi veriler, çözünürlüğe bağlı olarak hafta, ay veya yılın başlangıcına göre ayarlanır. Bu nedenle, bu tür komut dosyaları tarafından üretilen sonuçlar zaman zaman farklılık gösterebilir. Bunlar, komut dosyalarının bir başlangıç noktasına bağlı olacağı durumlardır:

  • valuewhen, barssince veya ema fonksiyonları (algoritmalarındaki özellikler nedeniyle)
  • herhangi bir backtesting stratejisi (calc_on_every_tick parametresinin nasıl tanımlandığına bakılmaksızın)

Bir başlangıç noktasının çözünürlüğü ve hizalanması arasında bir bağımlılık vardır:

  • 1-14 dakika - bir hafta başına hizalar
  • 15-29 dakika - ay başına başlar
  • 30 dakikadan daha uzun - bir yılın başına hizalar

Veriler işlenirken aşağıdaki geçmiş uzunluk sınırlamaları dikkate alınır:

  • Ultimate planlar için 40000 tarihsel çubuk 
  • Elite planlar için 30000 tarihsel çubuk 
  • Expert planlar için 25000 tarihsel çubuk 
  • Premium planlar için 20000 tarihsel çubuk 
  • Pro ve Pro+ planlar için 10000 tarihsel çubuk 
  • Diğer planlar için 5000 tarihsel çubuk

5. Örneğin, bölünme nedeniyle geçmiş verilerdeki değişiklikler.

6. Kodda aşağıdaki değişkenlerin bulunması genellikle yeniden boyamaya yol açar: