Pojawia się błąd 'Pine cannot determine the referencing length of a series. Try using max_bars_back'

Kiedy skrypt Pine jest obliczany, tworzy on historyczny bufor o określonym rozmiarze dla każdej zmiennej lub funkcji w kodzie. Bufor ten zawiera informacje o poprzednich wartościach zmiennej/funkcji i jest używany, gdy kod odwołuje się do przeszłych wartości za pomocą operatora historii []. Rozmiar bufora określa z jak odległej historii można zażądać danych. 

Pine automatycznie określa wymagany rozmiar bufora dla wszystkich zmiennych i funkcji poprzez analizę wcześniejszych odniesień dokonanych podczas obliczania skryptu na pierwszych 244 słupkach. Jeśli nie zostaną wykryte żadne przeszłe odwołania, do zmiennej lub funkcji zostanie przypisany domyślny rozmiar bufora. Dla zmiennych domyślny rozmiar bufora wynosi 300 słupków, dla funkcji jest to jeden słupek. 

Problem zwykle pojawia się w gałęziach instrukcji warunkowych (if, iff, or ?), gdy odwołania do przeszłych wartości zmiennej lub funkcji wewnątrz wyrażenia warunkowego są wykonywane po raz pierwszy po upływie słupka nr 244. W takich przypadkach Pine nie będzie w stanie przypisać odpowiedniej wielkości bufora dla tej funkcji i zostanie użyty domyślny rozmiar bufora. Spójrz na poniższy kod. Wyświetli wspomniany błąd, ponieważ:

  • Wartość zmiennej var1 jest nieznana w czasie kompilacji
  • Zmienna test nie wymaga żadnych danych historycznych dla pierwszych 244 słupków wykresu

Z tego powodu zmiennej test przypisywany jest domyślny bufor 300 słupków. Gdy skrypt zażąda wartości słupka nr 301 (czyli wartości, która znajduje się poza tym buforem), pojawi się błąd. 

//@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)

Parametr max_bars_back oraz funkcja max_bars_back() istnieją po to, aby obejść to ograniczenie. Pozwalają one na określenie właściwego rozmiaru bufora dla zmiennych i funkcji, gdy domyślny bufor nie jest wystarczający. Odkomentuj wywołanie funkcji max_bars_back() w powyższym kodzie. Do zmiennej test zostanie przypisany bufor wielkości 301 i skrypt zostanie obliczony poprawnie.

Oto przykład wywołania funkcji, do której przypisany jest domyślny jednosłupkowy bufor, ponieważ nie jest ona wywoływana na pierwszych 244 słupkach. Chociaż nie zostało użyte żadne wyraźne odniesienie do przeszłych wartości przy użyciu operatora [], funkcja wymaga jednak do obliczenia ostatnich 20 wartości. W ten sposób skrypt zwróci błąd max_bars_back:

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

 Funkcja max_bars_back() nie może być wykorzystana do przypisania konkretnej wielkości bufora do funkcji. Kiedy musisz to zrobić lub chcesz nadać wszystkim funkcjom i zmiennym w kodzie określony rozmiar buforu, możesz dodać parametr max_bars_back do instrukcji wskaźnika skryptu lub deklaracji strategii. Należy pamiętać, że użycie tego parametru zwiększy wykorzystanie zasobów skryptu, więc metoda ta powinna być używana tylko wtedy, gdy jest to konieczne:

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

 Problem można również rozwiązać, usuwając problematyczne wyrażenie z gałęzi warunkowej.W takim przypadku nie będzie potrzeby stosowania parametru max_bars_back:

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


Więcej informacji na temat max_bars_back oraz związanym z nim błędem znajdziesz w naszej Instrukcji Obsługi.

Strona główna Skaner akcji Skaner Forex Skaner Krypto Kalendarz ekonomiczny Jak to działa Funkcje wykresów Cennik Poleć przyjaciela Dobre Praktyki Centrum Pomocy Rozwiązania internetowe i brokerskie Widżety Wykresy Lekka Biblioteka Wykresów Blog i wiadomości Twitter
Profil Ustawienia profilu Konto i płatności Poleceni znajomi Monety Wiadomości do działu obsługi Centrum Pomocy Opublikowane Pomysły Obserwujący Obserwujesz Wiadomość prywatna Czat Wyloguj