czerwiec 25, 2019

Przedstawiamy Pine Script v4!

Poznaj nową wersję języka programowania Pine Script v4! Ta wersja posiada kilka nowych funkcji. Poprawiliśmy strukturę języka i naprawiliśmy szereg problemów. Jednak najważniejszą i długo oczekiwaną funkcją jest obsługa obiektów rysowania

W tym wpisie zamierzamy krótko omówić nowe funkcje. Jeżeli chcesz poznać szczegóły, przeczytaj dokumentację oraz instrukcję obsługi (możesz również przejść prosto do sekcji opis obiektów rysowania).

Obiekt Rysowania Etykieta

Funkcja label.new umożliwia rysowanie etykiet na wykresie, w tym etykiet zawierających dowolny tekst. Oto przykład skryptu, który rysuje etykietę zawierającą zamknięcie ostatniego słupka:  

//@version=4
study("Last Bar Price", overlay=true)

l = label.new(bar_index, na, 'last price is '+tostring(close), 
  color=close >= open ? color.green : color.red, 
  textcolor=color.white,
  style=label.style_labeldown, yloc=yloc.abovebar)

label.delete(l[1])


Możesz edytować i usuwać obiekt etykieta po utworzeniu go za pomocą rodziny funkcji label.*Oto przykład bardziej złożonego skryptu używającego etykiety — Pivot Points High/Low.

Obiekt Rysowania Linia

Funkcja line.new umożliwia rysowanie linii na wykresie. Oto przykład prostego skryptu, który rysuje linię łączącą maksimum bieżącego słupka z minimum dziesiątego historycznego słupka:   

//@version=4
study("Line", overlay=true)
l = line.new(bar_index, high, bar_index[10], low[10], width = 4)
line.delete(l[1])


Obiekty linia mogą być edytowane i usuwane z wykorzystaniem odpowiedniej funkcji z rodziny line.*Oto przykład bardziej złożonego skryptu używającego obiektów linia — Zig Zag.

Pamiętaj, że obecnie możemy wyświetlić w przybliżeniu 50-55 rysunków jednego typu (etykieta lub linia) na skrypt na wykresie. To jest zamierzone ograniczenie mające na celu zapobieganie nadmiernemu wykorzystaniu serwera.

Nowe typy danych linia i etykieta znacznie zwiększają możliwości Pine Script, umożliwiając wdrożenie złożonej logiki popularnych wskaźników w skryptach użytkownika. Przykłady można znaleźć w dokumentacji.

Ciąg serii

Teraz obsługujemy dane typu ciąg serii. Oto przykład zastosowania ciągu serii w etykietach:

//@version=4
study("Series string", overlay = true)
draw_label(title) =>
    label.new(bar_index, high, text=title)
t = close >= open ? "green" : "red"
draw_label(t)

 

Słowo kluczowe Var

Zmienna zadeklarowana w zwykły sposób jest ponownie inicjalizowana przy każdym kolejnym obliczaniu skryptu. Wymagało to, żeby skrypt jawnie propagował poprzednią wartość zmiennej. Słowo kluczowe Var deklaruje zmienną i inicjalizuje ją tylko raz. Pozwala to na automatyczne zapisanie wartości zmiennej między słupkami od momentu inicjalizacji lub ostatniego przypisania. Oto przykład skryptu, który zlicza ilość zielonych słupków na wykresie:

//@version=4
study("My Script")
var s = 0.0
if close >= open
    s := s + 1
plot(s)

Za każdym razem, gdy spełniony jest warunek close >= open, wartość zmiennej s wzrośnie o jeden. Wartością inicjalizującą może być dowolne wyrażenie arytmetyczne.

Składnia deklarowania zmiennych za pomocą słowa kluczowego var pozwala uniknąć następującego kodu: s := nz(s[1], s). Definiowanie zmiennej z wykorzystaniem modyfikatora var jest bardzo przydatne podczas pracy z obiektami rysowania.

Zmiany w nazwach wbudowanych stałych, zmiennych i funkcji

W Pine Script v4 zmieniono nazwy następujących wbudowanych stałych, zmiennych i funkcji:

  1. Stałe wartości kolorów (np. red) zostały przeniesione do przestrzeni nazw color.* (np. color.red).
  2. Funkcja color zmieniła nazwę na color.new.
  3. Stałe wartości danych wejściowych (np. integer) zostały przeniesione do przestrzeni nazw input.* namespace (np.  input.integer).
  4. Stała typu wykresu (np. histogram style) została przeniesiona do przestrzeni nazw plot.style_* (np. plot.style_histogram).
  5. Stała stylu funkcji hline (np. the dotted style) została przeniesiona do przestrzeni nazw hline.style_* (np. hline.style_dotted).
  6. Stała dni tygodnia (np. sunday) została przeniesiona do przestrzeni nazw dayofweek.* (np.  dayofweek.sunday).
  7. Zmienna aktualnego interwału wykresu (np. period, isintraday) została przeniesiona do przestrzeni nazw timeframe.* (np. timeframe.period, timeframe.isintraday).
  8. Zmienna interval zmieniła nazwę na timeframe.multiplier.
  9. Zmienna ticker oraz tickerid zmieniły nazwę odpowiednio na syminfo.ticker oraz syminfo.tickerid.
  10. Zmienna n, która zawiera wartość indeks słupka zmieniła nazwę na bar_index.

Powodem zmiany nazwy wszystkich powyższych elementów była organizacja standardowych narzędzi języka i ułatwienie pracy z kodem. Nowe nazwy są pogrupowane według przypisań pod wspólnymi prefiksami. Na przykład, jeżeli w edytorze wpiszesz „color” i naciśniesz Ctrl + Space, zobaczysz pełną listę wszystkich dostępnych stałych kolorów.

Jawna deklaracja typu zmiennej

W Pine Script v4 nie jest już możliwe tworzenie zmiennych o nieznanym typie danych w momencie deklaracji (zobacz wartość na). Zrobiono tak, żeby uniknąć wielu problemów, które pojawiają się, gdy typ zmiennej zmienia się po inicjalizacji z wartością na. Od teraz musisz jawnie określić ich typ za pomocą słów kluczowych lub funkcji type (na przykład float) podczas deklarowania zmiennych z wartością na:

//@version=4
study("NA", overlay=true)
float a = na
a := if close >= open
    high
else
    low
plot(a)

Wypróbuj nowy Pine Script v4! Niektórzy nasi użytkownicy zapoznali się już z nowymi funkcjami i napisali kilka imponujących skryptów wykorzystujących obiekty rysowania.

Na przykład Ricardo Santos napisał serię skryptów, które możesz zobaczyć poniżej:

Joris Duyck napisał skrypt Trendlines, który ilustruje możliwości obiektu rysowania linii.

Mamy nadzieję, że te przykłady Cię zainspirują! Możesz zadawać pytania, dyskutować o problemach i udostępniać opinie na naszym czacie. Chcemy podziękować wszystkim członkom społeczności Pinescripters, którzy wzięli udział w beta testach i bardzo nam pomogli! Możesz również zadawać pytania związane z kodem na naszej stronie Stack Overflow.