'Pine cannot determine the referencing length of a series. Try using max_bars_back' hatasını alıyorum

Bir Pine komut dosyası hesaplandığında, koddaki her değişken veya işlev için belirli bir boyutta tarihsel bir arabellek oluşturur. Bu arabellek, değişken/işlevin önceki değerleri hakkında bilgiler içerir ve kod [] geçmişe referans veren operatörü kullanarak geçmiş değerlere başvurduğunda kullanılır. Arabellek boyutu bu değerin geçmişe ne kadar uzakta referans edilebileceğini belirtir.

Pine tüm değişkenler için gerekli arabellek boyutunu otomatik olarak belirler ve ilk 244 çubuktaki komut dosyası hesaplanırken geçmiş referansları analiz ederek çalışır. Geçmiş referans algılanmazsa, değişkene veya işleve varsayılan bir arabellek boyutu atanır. Değişkenler için varsayılan arabellek boyutu 300 çubuktur, işlevler için bir çubuktur.

Bir değişkene geçmiş referanslar geldiğinde, koşullu ifadelerin dallarında (if, iff veya?) yaygın olarak bir sorun ortaya çıkar yada koşullu deyim içindeki işlev ilk olarak 244. çubuk geçtiğinde yürütülür. Bunun gibi durumlarda, Pine bu işlev için uygun bir arabellek boyutu atayamaz ve varsayılan arabellek boyutu kullanılır. Aşağıdaki koda bir göz atın. Yukarıda belirtilen hatayı döndürecektir, çünkü:

  • var1 değişkeni değer derleme sırasında bilinmemektedir
  • test değişkeni grafiğin ilk 244 çubuğunda geçmiş veri istemiyor

Bundan dolayı, test değişkenine 300 çubuklu varsayılan bir arabellek atanır. Komut dosyası, bu arabellek dışında 301 çubukluk bir değer istediğinde, hata oluşur.

//@version=4
study("max_bars_back var",overlay=true)
var1 = input(301)
test = 0.0
//max_bars_back(test, 301)
if bar_index > 244
test := test[var1]
plot(test)

Bunun üstesinden gelmek için max_bars_back parametresi ve  max_bars_back() fonksiyonu vardır. Varsayılan arabellek yeterli olmadığında değişkenler ve fonksiyonlar için doğru arabellek boyutunu belirlemenize izin verir. Yukarıdaki kodda max_bars_back() fonksiyonunu kaldırın. test değişkenine 301 arabelleği atanacak ve sonuç olarak kod düzgün bir şekilde hesaplanacaktır.

Burada, ilk 244 çubukta çağrılmadığından, varsayılan tek çubuklu arabellek boyutunun ilişkilendirildiği işlev çağrısına bir örnek verilmiştir.

//@version=4
study("Requires max_bars_back")
test = 0.0
if bar_index > 1000
test := vwma(close, 20)
plot(test)

 max_bars_back() fonksiyonu bir işleve belirli bir arabellek boyutu atamak için kullanılamaz.Böyle yapmak istediğinizde, yada bir komut dosyasındaki tüm değişkenler ve işlevler için varsayılan arabellek boyutunu ayarlamak istediğinizde, komut dosyasının çalışmasına veya strateji bildirimi ifadesine max_bars_back parametresini ekleyin. Parametreyi kullanmanın komut dosyasının kaynak kullanımını artıracağını unutmayın, bu nedenle bu yöntem yalnızca gerektiğinde kullanılmalıdır:

//@version=4
study("Requires max_bars_back", max_bars_back=20)
test = 0.0
if bar_index > 1000
test := vwma(close, 20)
plot(test)

Sorunlu ifadeyi koşullu sapmadan çıkararak da sorunu çözebilirsiniz, bu durumda max_bars_back parametresi gerekli değildir:

//@version=4
study("Requires max_bars_back")
test = 0.0
vwma20 = vwma(close, 20)
if bar_index > 1000
test := vwma20
plot(test)

max_bars_back ve ilgili hata hakkında daha fazla bilgiyi Kullanım Kılavuzumuzda bulabilirsiniz.

Ana Sayfa Hisse Senedi Takipçisi Forex Takipçisi Kripto Takipçisi Ekonomik Takvim Nasıl Çalışır Grafik Özellikleri Ücretlendirme Tanıdık yönlendirme Kurallarımız Destek Merkezi Web Sitesi & Aracı Kurum Çözümleri Görsel Bileşenler(Widget) Grafik Çözümleri Hafif Grafik Kitaplığı Blog ve Haberler Twitter
Profil Profil Ayarları Hesap ve Ödemeler Tavsiye edilen arkadaşlar Koinler Destek Kayıtlarım Destek Merkezi Yayınlanmış Fikirler Takip Edenler Takip ediliyor Özel Mesajlar Sohbet Çıkış