Co to jest skrypt sosnowy?
Pine Script to język skryptowy używany do modyfikowania wykresów na platformie TradingView. Platforma zapewnia wiele funkcji, które to umożliwiają, ale Pine Script pozwala Ci zbliżyć się do celu. Niezależnie od tego, czy chcesz zmienić kolory wykresów akcji cenowych, czy przetestować nową strategię, edytor Pine pomoże Ci dostosować wykresy w czasie rzeczywistym według własnego uznania.
Kod jest dobrze udokumentowany, więc zapoznaj się z instrukcją obsługi, aby uzyskać więcej informacji. W tym samouczku chcemy omówić pewne podstawy i zapewnić wskaźniki, które mogą być przydatne w handlu walutami cyfrowymi.
przygotowanie
Rozpoczęcie korzystania z Pine Script jest bardzo łatwe. Każdy kod, który napiszemy, działa na serwerach TradingView, dzięki czemu możemy korzystać z edytora i tworzyć skrypty z poziomu przeglądarki – nie jest wymagane żadne dodatkowe pobieranie ani konfiguracja.
W tym samouczku utworzymy wykres pary walutowej Bitcoin/Binance USD (BTCBUSD). Jeśli nie masz jeszcze konta, możesz je założyć bezpłatnie (dostępna jest również subskrypcja profesjonalna, ale nie jest ona konieczna w przypadku tego przewodnika).
Kliknij ten link, a zobaczysz wykres podobny do następującego:

Twój wykres będzie prawdopodobnie bardziej wyrafinowany.
Tutaj chcielibyśmy mieć w pełni funkcjonalny wykres – kliknij przycisk, aby uzyskać do niego dostęp. Daje nam to między innymi bardziej szczegółowy przegląd i narzędzia do rysowania, a także opcje rysowania linii trendu.

W pełni funkcjonalny wykres. Możesz edytować przedział czasowy, klikając widoki nad podświetlonymi zakładkami.
Nie będziemy omawiać, jak korzystać z różnych dostępnych narzędzi, ale jeśli interesuje Cię analiza techniczna, zdecydowanie zalecamy zapoznanie się z nimi i zapoznanie się z nimi. W lewym dolnym rogu (zaznaczonym na obrazku) znajdziesz kilka różnych zakładek – kliknij Edytor Pine.
Redaktor Sosny

Ten edytor oferuje zestaw uroczych funkcji. Powiemy mu, co chcemy zrobić, a następnie kliknij Dodaj do wykresu, aby nasze komentarze pojawiły się na górze. Pamiętaj, że jeśli wprowadzisz wiele komentarzy na raz, wykres może stać się nieporządny, dlatego będziemy je usuwać pomiędzy przykładami ( kliknij wykres prawym przyciskiem myszy > Usuń wskaźniki).
Jak widać mamy już dwie linijki kodów. Kliknijmy Dodaj do wykresu, aby zobaczyć, co się stanie.

Drugi wykres zostanie dodany poniżej oryginalnego wykresu. Nowy wykres będzie przedstawiał te same dane. Najedź myszą na przycisk Mój skrypt i kliknij wielokropek, aby go usunąć. Omówmy kod bardziej szczegółowo.
studiuj("Mój skrypt")
Pierwsza linia zawiera nasze komentarze. Wymagana jest jedynie nazwa, pod jaką ma się nazywać wskaźnik (w tym przypadku „Mój skrypt”), ale możemy dodać także kilka opcjonalnych zmiennych. Jedną z takich zmiennych jest nakładka, która informuje platformę o umieszczeniu wskaźnika na bieżącym wykresie (a nie na nowym sektorze). Jak widać w pierwszym przykładzie, domyślnie jest to false. Zatem nie zobaczymy, jak to teraz działa, overlay=true dodaje wskaźnik do bieżącego wykresu.
działka (zamknij)
Ta linia jest instrukcją wykreślenia ceny zamknięcia Bitcoina. Wykres daje nam wykres liniowy, ale możemy również wyświetlić akcje cenowe i wykresy słupkowe, jak zobaczymy za chwilę.
Teraz spróbujmy wykonać następujące czynności:
//@wersja=4 badanie("Mój skrypt", nakładka=true) plot(otwarte, kolor=kolor.fioletowy)
Po dodaniu tego symbolu powinieneś zobaczyć drugi wykres (wygląda na to, że oryginalny wykres przesunął się w prawą stronę). Zamiast tego jedyne, co zrobiliśmy, to wykreślenie ceny otwarcia. Ponieważ cena otwarcia z bieżącego dnia jest ceną zamknięcia z dnia poprzedniego, sensowne jest, aby miały one podobny kształt.
Dobry! Pozbądźmy się istniejących komentarzy (pamiętajmy, że robimy to klikając prawym przyciskiem myszy i naciskając Usuń wskaźniki). Najedź myszką na BTC/BUSD, a następnie kliknij przycisk Ukryj, aby usunąć również bieżący wykres.
Wielu traderów preferuje wykresy akcji cenowych, ponieważ dostarczają nam więcej informacji niż prosty rysunek, jak właśnie zrobiliśmy. Dodajmy je poniżej.
//@version=4 study("Mój skrypt", overlay=true) plotcandle(otwarte, wysokie, niskie, zamknięte)
Dobry początek, ale brak koloru sprawia, że jest trochę nudno. Idealnie byłoby, gdybyśmy mieli czerwone świece, gdy cena otwarcia jest większa niż cena zamknięcia w określonym przedziale czasowym, i zielone świece, gdy cena zamknięcia przekracza cenę otwarcia. Dodamy linię nad właściwością świecy plot():
//@wersja=4 study("Mój skrypt", nakładka=true) kolory = otwórz >= zamknij ? color.red : color.green plotcandle(otwarty, wysoki, niski, zamknięty)
Dzieje się tak na każdym wykresie akcji cenowej, a także przy sprawdzaniu, czy cena otwarcia jest większa lub równa cenie zamknięcia. W tym przypadku oznacza to, że ceny spadły w określonym okresie, dlatego wykres akcji cenowej zostanie pokolorowany na czerwono. W przeciwnym razie zostanie zabarwiony na zielono. Zmodyfikuj funkcję drawcandle() , aby wprowadzić schemat kolorów:
//@wersja=4 study("Mój skrypt", nakładka=true) kolory = otwórz >= zamknij ? color.red : color.green plotcandle(otwarty, wysoki, niski, zamknięty, kolor=kolory)
Usuń istniejące wskaźniki, jeśli jeszcze ich nie usunąłeś, i dodaj ten wskaźnik do wykresu. Powinniśmy mieć coś, co reprezentuje normalny wykres akcji cenowej.

Rysowanie średnich kroczących (MA)
Poniżej mamy kilka podstaw. Przejdźmy do pierwszego niestandardowego wskaźnika – wykładniczej średniej kroczącej lub EMA. Jest to cenne narzędzie, które pozwala nam wyeliminować zakłócenia rynkowe i ułatwia zrozumienie ruchów rynkowych.
Wykładnicza średnia krocząca różni się nieco od prostej średniej kroczącej (SMA), ponieważ ta średnia koncentruje się na najnowszych danych. Ma tendencję do reagowania na nagłe ruchy i jest zwykle używany w transakcjach krótkoterminowych (na przykład w handlu dziennym).
Prosta średnia ruchoma (SMA)
Możemy również narysować prostą średnią ruchomą, więc powinniśmy ją później porównać. Dodaj tę linię do swojego skryptu:
fabuła(sma(blisko, 10))
Stanowi to średnią z poprzednich 10 dni. Dostosuj liczbę w nawiasach, aby zobaczyć, jak bardzo zmienia się krzywa, gdy uwzględni się różne okresy.

Prosta średnia ruchoma opiera się na poprzednich 10 dniach.
Wykładnicza średnia krocząca (EMA)
Wykładnicza średnia krocząca może być nieco trudna do zrozumienia, ale nie martw się. Rozważmy szczegółowo równanie:
EMA = (Zamknij – EMA z poprzedniego dnia) * Mnożnik – EMA z poprzedniego dnia
Co nam to mówi? Cóż, nowa średnia ruchoma każdego dnia jest obliczana na podstawie średniej ruchomej z poprzedniego dnia. Mnożnik to „waga danych” z ostatniego okresu i oblicza się go za pomocą następującego równania:
Mnożnik = 2 / (Długość EMA + 1)
W przypadku prostych średnich kroczących musimy określić, jak długo będzie trwała wykładnicza średnia krocząca. Pod względem struktury wykres wykładniczej średniej ruchomej jest podobny do prostego wykresu średniej ruchomej. Narysuj go obok prostej średniej kroczącej, aby móc je porównać:
//@wersja=4 study("Mój skrypt", overlay=true) plot(sma(close, 10)) plot(ema(close,10))

Można zauważyć niewielką różnicę pomiędzy obydwoma typami średnich kroczących.
Wbudowane skrypty
Do tej pory pisaliśmy kod ręcznie, więc jesteś z nim zaznajomiony. Ale zaproponujmy coś, co pomoże zaoszczędzić czas, szczególnie przy pisaniu bardziej skomplikowanych skryptów, a nie chcemy tego robić od zera.
Kliknij przycisk Nowy znajdujący się w prawym górnym rogu edytora. Zobaczysz rozwijane menu ze wszystkimi rodzajami wskaźników technicznych. Kliknij wykładniczą średnią ruchomą, aby zobaczyć kod źródłowy wskaźnika wykładniczej średniej kroczącej.

Następnie dodaj to do wykresu.
Różni się to od naszych własnych kodów – zauważysz właściwości input(). Jest świetny do użycia, ponieważ możesz kliknąć to pole…

Możesz także łatwo zmienić niektóre wartości w wyskakującym oknie, klikając koło ustawień.

W poniższym skrypcie dodamy dwie właściwości input() , aby zademonstrować, jak to zrobić.
Wykres wskaźnika względnej siły (RSI).
Indeks siły względnej (RSI) jest jednym z podstawowych wskaźników analizy technicznej. Jest znany jako wskaźnik dynamiki, co oznacza, że mierzy tempo kupna i sprzedaży aktywów. Ocena w skali od 0 do 100, wynik RSI stara się powiedzieć inwestorom, czy dany składnik aktywów jest wykupiony czy wyprzedany. Zwykle składnik aktywów uważa się za wyprzedany, jeśli jego wynik jest mniejszy lub równy 30, a za wykupiony, jeśli jego wynik jest większy lub równy 70.
Jeśli przejdziesz do Nowy > Strategia RSI, możesz to zobaczyć na własne oczy. Wskaźnik RSI jest mierzony w 14 okresach (tj. 14 godzin lub 14 dni), ale masz swobodę dostosowania tego ustawienia do własnej strategii.
Dodaj to do wykresu. Powinieneś teraz zobaczyć kilka strzałek (identyfikowanych przez właściwość enter.strategy() w kodzie). RsiLE wskazuje potencjalne możliwości zakupu aktywa, które może znaleźć się w strefie wyprzedania. Podczas gdy RsiSE podkreśla potencjalne punkty sprzedaży aktywa, gdy znajduje się on w strefie wykupienia. Należy pamiętać, że podobnie jak w przypadku wszystkich wskaźników, nie należy ich traktować jako ostatecznych dowodów wzrostu lub spadku cen.
Wykonaj test historyczny
Istnieje sposób, który pozwala nam testować niestandardowe wskaźniki. Chociaż wcześniejsze wyniki nie gwarantują przyszłych wyników, proces weryfikacji historycznej skryptów daje nam wyobrażenie o tym, jak skuteczne są one w odbieraniu sygnałów.
Poniżej znajduje się przykład prostego skryptu. Stworzymy prostą strategię polegającą na wejściu w długą transakcję, gdy cena Bitcoina spadnie poniżej 11 000 USD i wyjściu z transakcji, gdy cena przekroczy 11 300 USD. Dzięki temu możemy wiedzieć, jak opłacalna była ta strategia w przeszłości.
//@wersja=4 strategia("ToDaMoon", nakładka=true) enter = wejście(11000) wyjście = wejście(11300) cena = zamknięcie if (cena <= enter) strategy.entry("BuyTheDip", strategia.long , komentarz="BuyTheDip") if (cena >= wyjście) strategia.close_all(comment="SellTheNews")
Tutaj zdefiniowaliśmy punkty wejścia i wyjścia jako zmienne – oba są danymi wejściowymi, co oznacza, że możemy je później zmienić na wykresie. Ustawiliśmy również zmienną cenową, która rejestruje cenę zamknięcia dla każdego okresu. Zatem jest coś logicznego w używaniu instrukcji if. Jeśli część w nawiasie jest prawdziwa, wcięty blok zostanie aktywowany. W przeciwnym razie zostanie pominięty.
Ponadto, jeśli cena spadnie lub będzie równa pożądanej cenie wejścia, wyrażenie zostanie ocenione jako prawdziwe i otworzymy transakcję kupna. Gdy cena będzie równa lub przekroczy wymaganą cenę wyjścia, zostanie aktywowany drugi blok, a także zamknięcie wszystkich otwartych pozycji.
Dodamy komentarze do wykresu za pomocą strzałek wskazujących punkty wejścia i wyjścia, dlatego nazwaliśmy te punkty w ramce komentarzy (w tym przykładzie „Spadek kupna” i „Sprzedaj w wiadomościach”). Skopiuj symbol i dodaj go do wykresu.

Możesz teraz zobaczyć wskaźniki na wykresie. Aby obejrzeć, konieczne może być pomniejszenie.
TradingView zastosuje Twoje reguły do starszych danych. Zauważysz także przejście z edytora Pine do zakładki Tester Strategii. Dzięki temu możesz zobaczyć przegląd potencjalnych zysków, listę transakcji i ich wyniki.

Transakcje, do których wchodziliśmy i wychodziliśmy.
Połącz elementy ze sobą
Czas napisać własny program wykorzystując niektóre z opisanych do tej pory koncepcji. Połączymy zarówno wykładniczą średnią ruchomą, jak i RSI, wykorzystując ich wartość, aby pokolorować wykresy akcji cenowych i uzyskać możliwy wgląd.
Nie należy tego interpretować jako porady finansowej – ponieważ nie ma obiektywnie określonego prawidłowego sposobu wykorzystania tego wskaźnika. Podobnie jak wszystkie inne wskaźniki, tego wskaźnika należy używać w połączeniu z innymi narzędziami w celu opracowania strategii inwestycyjnej.
Zacznijmy pracę nad nowym skryptem. Usuń wszystkie wskaźniki z wykresu i ukryj także wykres BTC/BUSD, abyśmy mieli pusty wykres, z którym możemy rozpocząć pracę.
Zacznijmy od zdefiniowania badania. Możesz użyć dowolnej nazwy, pamiętaj tylko o ustawieniu overlay=true.
study(title="Skrypt Akademii Binance", overlay=true)
Pamiętaj o równaniu wykładniczej średniej ruchomej, o którym mówiliśmy wcześniej. Musimy dostarczyć mnożnikowi dane za okres, jaki zajmie wykładnicza średnia krocząca. Zróbmy z tego pole wejściowe wymagające liczby całkowitej (a więc bez miejsc dziesiętnych). Określimy także wartość minimalną (minval) i domyślną (defval).
study(title="Skrypt Akademii Binance", overlay=true) emaLength = input(title="Długość EMA", type=input.integer, defval=25, minval=0)
Wartość EMA dla każdej świecy na wykresie możemy obliczyć korzystając z nowej zmiennej:
study(title="Skrypt Akademii Binance", overlay=true) emaLength = input(title="Długość EMA", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength)
niesamowity. Jeśli chodzi o wskaźnik siły względnej (RSI). Okres wejdziemy w podobny sposób:
study(title="Skrypt Akademii Binance", overlay=true) emaLength = input(title="Długość EMA", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = wejście (title="Długość RSI", type=input.integer, defval=25, minval=0)
Teraz możemy to obliczyć:
study(title="Skrypt Akademii Binance", overlay=true) emaLength = input(title="Długość EMA", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = wejście (title="Długość RSI", type=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength)
W tym miejscu należy mieć świadomość, że kolory wykresów akcji cenowych zależą od wartości EMA i RSI. Rozważmy przykład, gdy (a) cena zamknięcia świecy przecina EMA i (b) RSI jest powyżej 50.
Dlaczego? Cóż, możesz zdecydować, że te wskaźniki mogą być użyte w połączeniu, aby powiedzieć Ci, kiedy kupić lub sprzedać Bitcoin. Na przykład możesz pomyśleć, że spełnienie obu warunków oznacza, że jest to dobry moment na otwarcie pozycji długiej. Alternatywnie możesz użyć wskaźników, aby przypomnieć Ci, kiedy nie powinieneś sprzedawać, nawet jeśli inne wskaźniki wskazują inaczej.
Zatem następna linia wygląda następująco:
study(title="Skrypt Akademii Binance", overlay=true) emaLength = input(title="Długość EMA", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = wejście (title="RSI Długość", type=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength) kolory = blisko > emaVal i rsiVal > 50 ? kolor.zielony : kolor.czerwony
Jeśli przełożymy to na prosty angielski, oznacza to, że jeśli EMA przekroczy cenę zamknięcia, a wynik RSI przekroczy 50, zabarwimy świecę na zielono. W przeciwnym razie zostanie zabarwiony na czerwono.
Następnie wykreśl wykładniczą średnią kroczącą:
study(title="Skrypt Akademii Binance", overlay=true) emaLength = input(title="Długość EMA", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = wejście (title="RSI Długość", type=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength) kolory = blisko > emaVal i rsiVal > 50 ? kolor.zielony : kolor.czerwony wykres (emaVal, „EMA”)
Na koniec narysuj świece, pamiętając o uwzględnieniu zmiennej koloru:
study(title="Skrypt Akademii Binance", overlay=true) emaLength = input(title="Długość EMA", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = wejście (title="RSI Długość", type=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength) kolory = blisko > emaVal i rsiVal > 50 ? color.green : color.red plot(emaVal, „EMA”) plotcandle(otwarty, wysoki, niski, zamknięty, kolor=kolory)
I skończyłeś ze scenariuszem! Dodaj to do swojego wykresu, aby zobaczyć to w akcji.

Wykres BTC/BUSD przy użyciu EMA/RSI.
Końcowe przemyślenia
W tym artykule przyjrzeliśmy się kilku podstawowym przykładom tego, co można zrobić za pomocą edytora Pine w TradingView. Powinieneś być w stanie dokonać prostych komentarzy na wykresie cen, aby uzyskać dodatkowy wgląd w swoje wskaźniki.
Wyróżniliśmy tutaj tylko dwa wskaźniki, ale łatwo jest stworzyć bardziej złożone wskaźniki – czy to poprzez zdefiniowanie na nowo wbudowanych skryptów, czy też samodzielne ich napisanie.
Potrzebujesz inspirujących pomysłów? Poniższe artykuły mogą pomóc Ci w zdobyciu pomysłów na kolejny projekt:

