Wstęp
Bez niezawodnych narzędzi handlowych niemożliwe jest przeprowadzenie wysokiej jakości analizy technicznej. Silna strategia handlowa pomoże Ci uniknąć typowych błędów, skuteczniej zarządzać ryzykiem oraz znajdować i realizować więcej możliwości handlowych.
Dla większości traderów TradingView jest popularną platformą do analizy wykresów. Bogata w funkcje aplikacja internetowa HTML5, która oferuje różnorodne narzędzia analizy technicznej, jest używana przez miliony użytkowników do śledzenia ruchów na rynku Forex, kryptowalut i tradycyjnych giełdach.
TradingView oferuje szereg zaawansowanych funkcji, pozwalających śledzić aktywa na wielu platformach handlowych i dzielić się pomysłami handlowymi w sieci społecznościowej TradingView. W tym artykule przyjrzymy się opcjom dostosowywania TradingView. Będziemy używać Pine Script, języka programowania TradingView, który zapewnia szczegółową kontrolę nad układami wykresów.
Zaczynajmy!
Co to jest skrypt sosnowy?
Pine Script to język skryptowy, który umożliwia dostosowywanie wykresów w TradingView. Platforma oferuje już w tym zakresie sporo funkcjonalności, jednak Pine Script pozwala na rozszerzenie możliwości. Niezależnie od tego, czy chcesz zmienić kolor świecy, czy przetestować nową strategię, możesz dostosować swoje wykresy w czasie rzeczywistym tak, jak chcesz, za pomocą edytora Pine.
Szczegółowa dokumentacja jest dostępna na stronie, więc zawsze możesz odwołać się do instrukcji obsługi, aby uzyskać szczegółowe instrukcje. W tym artykule chcielibyśmy omówić podstawy Pine Script i pokazać, jak stworzyć wskaźniki, które mogą być przydatne podczas handlu kryptowalutą.
Organizować coś
Rozpoczęcie pracy z Pine Script jest bardzo łatwe. Cały pisany przez nas kod działa na serwerach TradingView, a my mamy dostęp do edytora kodu i możemy pisać skrypty bezpośrednio w przeglądarce - nie ma potrzeby pobierania aplikacji innych firm ani czegokolwiek konfigurowania.
W tym samouczku przedstawimy wykres pary walutowej Bitcoin/Binance USD (BTCBUSD). Jeśli nie jesteś jeszcze zarejestrowany w TradingView, utwórz darmowe konto (dostępna jest również subskrypcja profesjonalna, ale nie jest ona wymagana w przypadku tego artykułu).
Kliknij ten link, a zobaczysz następujący wykres:

Twój harmonogram musi być bardziej aktualny.
Potrzebujemy szczegółowego harmonogramu - aby do niego przejść, kliknij wskazany przycisk. Zobaczymy bardziej szczegółowe wykresy, narzędzia do rysowania i narzędzia linii trendu.

Szczegółowy harmonogram. W panelu nad wybranymi zakładkami możesz ustawić żądane ramy czasowe.
Nie będziemy teraz omawiać wykorzystania różnych dostępnych narzędzi, ale jeśli poważnie podchodzisz do analizy technicznej, zdecydowanie zalecamy zapoznanie się z nimi. W lewym dolnym rogu (zaznaczonym na obrazku) znajduje się kilka zakładek - kliknij Edytor Pine.
Redaktor Piny

W tym edytorze dzieje się prawdziwa magia. Aby zobaczyć wynik należy napisać instrukcję w edytorze, a następnie kliknąć przycisk „Dodaj do wykresu”. Uwaga: jeśli zastosujesz kilka niestandardowych wskaźników jednocześnie, wykres może się zabrudzić, dlatego będziemy je usuwać pomiędzy przykładami (prawy przycisk myszy na wykresie > Usuń wskaźniki).
Jak widać, mamy już kilka linijek kodu. Kliknijmy przycisk „Dodaj do wykresu” i zobaczmy, co się stanie.

Drugi pojawił się pod oryginalnym wykresem. Nowy wykres przedstawia te same dane. Aby usunąć drugi wykres, najedź kursorem na Mój skrypt i kliknij krzyżyk. Teraz spójrzmy na kod.
studiuj("Mój skrypt")Pierwsza linia określa nazwę wykresu. Wymaga to jedynie nazwy wskaźnika (w tym przypadku „Mój skrypt”), ale możesz także ustawić dodatkowe parametry. Jednym z nich jest nakładka. Oznacza to umieszczenie wskaźnika na istniejącym wykresie (a nie w nowym segmencie). Jak widać z pierwszego przykładu, domyślnie ustawiona jest wartość false. Nie będziemy tego teraz testować, ale ustawienie overlay=true spowoduje dodanie wskaźnika do istniejącego wykresu.
działka (zamknij)Ta linia jest instrukcją wykreślania ceny zamknięcia Bitcoina; plot określa wykres liniowy, ale możemy dodać świece i słupki.
Rozważmy teraz następujący przykład:
//@wersja=4 badanie("Mój skrypt", nakładka=true) plot(otwarte, kolor=kolor.fioletowy)Dodając tę linię do edytora, powinieneś zobaczyć drugi wykres (który wygląda jak oryginalny, ale przesunięty w prawo). Nakreśliliśmy cenę otwarcia, a ponieważ otwarcie bieżącego dnia jest zamknięciem dnia poprzedniego, logiczne jest, że wykresy mają ten sam kształt.
Świetnie! Usuńmy utworzone przez nas wykresy (pamiętaj, że w tym celu należy kliknąć wykres prawym przyciskiem myszy i wybrać „Usuń wskaźniki”). Aby wyczyścić bieżący wykres, najedź kursorem na wykres Bitcoin/BUSD i kliknij przycisk Ukryj.
Wielu traderów korzysta z wykresów świecowych, ponieważ dostarczają one więcej informacji niż zwykłe wykresy (takie jak ten, który właśnie stworzyliśmy). Teraz dodajmy świece do wykresu.
//@version=4 study("Mój skrypt", overlay=true) plotcandle(otwarte, wysokie, niskie, zamknięte)Jest lepiej, ale przez brak kolorów wykres jest niewyraźny. W idealnym przypadku musimy narysować świece czerwone, jeśli cena otwarcia w danym przedziale czasowym jest większa niż cena zamknięcia, i zielone, jeśli cena zamknięcia jest wyższa niż cena otwarcia. Dodajmy linię nad funkcją plotcandle():
//@wersja=4 study("Mój skrypt", nakładka=true) kolory = otwórz >= zamknij ? color.red : color.green plotcandle(otwarty, wysoki, niski, zamknięty)W tej linii przeglądamy wszystkie świece i sprawdzamy: czy cena otwarcia jest większa czy równa cenie zamknięcia. Jeśli tak, to cena spadła w danym okresie i świeca będzie czerwona. Inaczej – zielony. Aby dodać schemat kolorów, zmodyfikuj funkcję plotcandle() jak pokazano poniżej:
//@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)Jeśli jeszcze tego nie zrobiłeś, usuń poprzedni wykres i dodaj nowy. Teraz powinniśmy mieć regularny wykres świecowy.

Wspaniały!
Budowanie średnich kroczących (MA)
Omówiliśmy kilka podstaw. Przejdźmy do stworzenia naszego pierwszego niestandardowego wskaźnika, wykładniczej średniej kroczącej, czyli EMA. Jest to cenny wskaźnik, ponieważ odfiltrowuje szum rynkowy i wygładza ruchy cen.
EMA różni się od prostej średniej kroczącej (SMA) tym, że przypisuje większą wagę najnowszym danym. EMA aktywniej reaguje na nieoczekiwane ruchy na rynku i często jest wykorzystywana w strategiach krótkoterminowych (na przykład w handlu śróddziennym).
Prosta średnia ruchoma (SMA)
Możemy wykreślić SMA, a następnie porównać go z EMA. Dodaj następujący wiersz do skryptu:
fabuła(sma(blisko, 10))W tej linii zostanie wyświetlona średnia z ostatnich 10 dni. Możesz ustawić różne wartości okresu w nawiasach i zobaczyć, jak zmienia się krzywa.

SMA z ostatnich 10 dni
Wykładnicza średnia krocząca (EMA)
EMA jest nieco trudniejsza do zrozumienia, ale nie martw się. Najpierw spójrzmy na formułę:
EMA = (kurs zamknięcia – EMA z poprzedniego dnia) * mnożnik – EMA z poprzedniego dniaCo mówi ta formuła? Dla każdego dnia obliczamy nową średnią ruchomą na podstawie poprzedniej. Mnożnikiem jest „waga” poprzedniego okresu, którą oblicza się według następującego wzoru:
mnożnik = 2 / (okres EMA + 1)Podobnie jak w przypadku prostej średniej kroczącej, należy określić okres konstruowania EMA. Składnia funkcji EMA jest podobna do funkcji SMA. Dla przejrzystości narysujmy wykres EMA obok SMA:
//@wersja=4 study("Mój skrypt", overlay=true) plot(sma(close, 10)) plot(ema(close,10))
Różnica między SMA i EMA
➟ Zastanawiasz się od czego zacząć pracę z kryptowalutami? Kup Bitcoin na Binance!
Wbudowane skrypty
Do tej pory pisaliśmy kod ręcznie, aby zrozumieć go bardziej szczegółowo. Zastanówmy się jednak nad narzędziem, które pozwoli nam zaoszczędzić czas, szczególnie jeśli piszemy bardziej złożone skrypty i nie chcemy tego robić od zera.
W prawym górnym rogu edytora kliknij przycisk „Nowy”. Pojawi się menu rozwijane z różnymi wskaźnikami technicznymi. Aby zobaczyć kod źródłowy wskaźnika EMA, kliknij pozycję „Wykładnicza średnia krocząca”.

Dodaj kod do wykresu
Kod szablonu będzie inny niż ten, który napisaliśmy - zwróć uwagę na funkcje input(). Są wygodne, bo można kliknąć w lewy górny róg wykresu...

...a w wyskakującym oknie można łatwo zmienić niektóre wartości, naciskając pokrętło ustawień.

Aby to zademonstrować, do poniższego skryptu dodamy dwie funkcje input().
Konstruowanie wskaźnika względnej siły (RSI).
Indeks siły względnej (RSI) to kolejny kluczowy wskaźnik analizy technicznej. Jest znany jako wskaźnik pędu. Oznacza to, że wyświetla stopę kupna i sprzedaży aktywów. Indeks RSI, który waha się od 0 do 100, mówi inwestorom, czy dany składnik aktywów jest wykupiony czy wyprzedany. Ogólnie rzecz biorąc, aktywa uważa się za wyprzedane, jeśli RSI jest mniejsze lub równe 30, i wykupione, jeśli RSI jest większe lub równe 70.
Możesz to sprawdzić sam – przejdź do menu Nowe > Strategia RSI. RSI jest zwykle mierzony w okresach 14 jednostek (tj. 14 godzin lub 14 dni), ale możesz dostosować ten parametr do własnej strategii.
Dodaj to do wykresu. Powinieneś zobaczyć kilka strzałek (zdefiniowanych w kodzie przez funkcję Strategy.entry()). RsiLE wskazuje potencjał pozycji długiej w aktywach, które mogą zostać odsprzedane. RsiSE wskazuje również na możliwość krótkiej pozycji na aktywach, ponieważ mogą one zostać wykupione. Uwaga: podobnie jak w przypadku wszystkich wskaźników, nie należy polegać na nich jako na gwarancji, że ceny spadną/wzrosną.
Strategie testowania
Możemy testować własne wskaźniki. Chociaż wydajność na danych historycznych nie gwarantuje przyszłych wyników, testowanie skryptów na danych historycznych może dać wyobrażenie o ich skuteczności w śledzeniu sygnałów.
Weźmy jako przykład prosty skrypt. Stwórzmy prostą strategię, w której zajmiemy długą pozycję, gdy cena BTC spadnie poniżej 11 000 USD i zamkniemy pozycję, gdy cena przekroczy 11 300 USD. Możemy sprawdzić, jak opłacalna jest ta strategia, gdy zastosujemy ją do historii rynku.
//@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 poziomy wejścia i wyjścia jako zmienne - oba są danymi wejściowymi, co oznacza, że możemy je następnie zmienić na wykresie. Stworzyliśmy także zmienną cenową, która przyjmuje wartość zamknięcia dla każdego okresu. Logika jest przedstawiona w formie instrukcji if. Jeśli część w nawiasie jest prawdziwa, wówczas zostanie uruchomiony blok z wcięciem poniżej. W przeciwnym razie zostanie zignorowane.
Tak więc, jeśli cena jest mniejsza lub równa żądanej wartości wejściowej, pierwsze wyrażenie ma wartość true i zajmujemy pozycję długą. Gdy cena będzie równa lub przekroczy żądaną wartość wyjściową, zostanie uruchomiony drugi blok, zamykający wszystkie otwarte pozycje.
Dodatkowo na wykresie pokazaliśmy strzałkami miejsca wejścia na pozycje i wyjścia z nich. Oznaczyliśmy te punkty parametrem komentarza (w tym przykładzie „BuyTheDip” i „SellTheNews”). Skopiuj kod i dodaj go do wykresu.

Wskaźniki na wykresie. Możesz pomniejszyć
TradingView automatycznie stosuje Twoje reguły do starszych danych. Pamiętaj, że przełączyłeś się z Pine Editor na zakładkę Tester strategii. Tutaj możesz przeanalizować potencjalny zysk, wyświetlić listę transakcji i wyniki każdej transakcji.

Otwarte i zamknięte pozycje
Podsumujmy to
Teraz możemy napisać własny skrypt, korzystając ze znanych nam narzędzi. Połączymy EMA i RSI na tym samym wykresie, a następnie użyjemy ich wartości do pokolorowania świec, aby stworzyć informacje, które można łatwo zwizualizować.
Wyniki wykresu nie stanowią porady finansowej – nie ma obiektywnie prawidłowego sposobu jej wykorzystania. Podobnie jak inne wskaźniki, należy go stosować w połączeniu z innymi narzędziami w celu opracowania własnej strategii.
Napiszmy nasz nowy scenariusz. Aby mieć wolną przestrzeń do pracy, usuń poprzednie wskaźniki z wykresu i ukryj wykres Bitcoin/BUSD.
Zacznijmy od zdefiniowania naszego badania. Nadaj mu nazwę, jak chcesz, ale upewnij się, że overlay=true.
study(title="Skrypt Akademii Binance", overlay=true)Przypomnijmy sobie formułę EMA, którą opisaliśmy powyżej. Musimy ustalić mnożnik dla okresu EMA. Zróbmy zmienną (wejście) będącą liczbą całkowitą (to znaczy bez miejsc dziesiętnych). Ustawimy 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)Korzystając z tej nowej zmiennej, możemy obliczyć wartość EMA dla każdej świecy:
study(title="Skrypt Akademii Binance", overlay=true) emaLength = input(title="Długość EMA", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength)Cienki. Przejdźmy teraz do RSI. Ustalmy jego okres 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)Na tym etapie ustalmy logikę kolorującą świece w zależności od wartości EMA i RSI. Rozważmy sytuację, gdy cena zamknięcia świecy przekracza EMA (a) i gdy RSI jest powyżej 50 (b).
Dlaczego dokładnie takie warunki? Wskaźników tych można używać razem, aby poinformować Cię, kiedy wybrać pozycję długą lub krótką na Bitcoinie. Przykładowo, jeśli oba warunki zostaną spełnione, może to oznaczać, że teraz jest dobry moment na otwarcie pozycji długiej. Lub odwrotnie, możesz użyć tego wskaźnika, aby zrozumieć, kiedy nie należy wchodzić w pozycję krótką, nawet jeśli inne wskaźniki mówią inaczej.
Kolejna linia naszego skryptu będzie 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.czerwonyJeśli przetłumaczymy kod na język zwykły, okaże się, że jeśli wartość EMA przekracza cenę zamknięcia, a wartość RSI przekracza 50, kolorujemy świecę na zielono. W przeciwnym razie kolor będzie czerwony.
Dodaj EMA:
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 narysujmy świece, dodając parametr 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)Oto cały nasz scenariusz! Aby zobaczyć go w akcji, dodaj go do swojego wykresu.

Wykres BTC/BUSD ze wskaźnikiem EMA/RSI.
Streszczenie
W tym artykule przyjrzeliśmy się kilku prostym przykładom użycia edytora Pine w TradingView. Do tej pory, jeśli wykonałeś już nasze przykłady, możesz już budować proste podpisy do wykresów cenowych i uzyskiwać dodatkowe informacje z własnych wskaźników.
W tym artykule poruszyliśmy tylko kilka wskaźników, ale możesz samodzielnie przeanalizować bardziej złożone, wybierając wbudowane skrypty z listy Nowy lub pisząc je samodzielnie.
Szukać inspiracji? Pomysły na kolejny projekt możesz zaczerpnąć z poniższych artykułów:
Krótki przewodnik po korzystaniu z parabolicznego systemu SAR
Przewodnik po korzystaniu z linii Fibonacciego
Wskaźniki wyprzedzające i opóźnione
Co to jest wskaźnik MACD

