Wstęp

Bez odpowiednich narzędzi handlowych nie można przeprowadzić skutecznej analizy technicznej. Silna strategia handlowa pomoże Ci uniknąć typowych błędów, usprawni zarządzanie ryzykiem oraz zwiększy Twoją zdolność identyfikowania i wykorzystywania okazji.

Dla wielu TradingView jest najpopularniejszą platformą do tworzenia wykresów. Oferująca centrum narzędzi analizy technicznej, potężna aplikacja internetowa HTML5 jest używana przez miliony osób do śledzenia ruchów na rynku Forex, kryptowalut i tradycyjnych giełdach.

TradingView ma wiele zaawansowanych funkcji: pozwala nam śledzić aktywa na wielu platformach handlowych i publikować pomysły handlowe w sieci społecznościowej. W tym artykule skupimy się na jego możliwościach dostosowania. Będziemy używać Pine Script, własnego języka programowania TradingView, który zapewnia nam szczegółową kontrolę nad układem naszych wykresów.

Zacznijmy!


Co to jest skrypt sosnowy?

Pine Script to język skryptowy, którego można używać do modyfikowania wykresów TradingView. Platforma zapewnia już wiele funkcji, które to umożliwiają, ale Pine Script pozwala pójść o krok dalej. Niezależnie od tego, czy chcesz zmienić kolory swoich świeczników, czy przetestować nową strategię, Pine Editor umożliwi Ci dostosowanie wykresów w czasie rzeczywistym według własnego uznania.

Sam kod jest doskonale udokumentowany, więc koniecznie sprawdź instrukcję obsługi, aby uzyskać więcej informacji. Naszym celem w tym samouczku jest omówienie niektórych podstaw i przedstawienie wskaźników, które mogą się przydać w handlu kryptowalutami.


Konfigurowanie

Rozpoczęcie pracy z Pine Script jest niezwykle proste. Każdy kod, który piszemy, jest uruchamiany na serwerach TradingView, dzięki czemu możemy uzyskać dostęp do edytora i rozwijać nasze skrypty z poziomu przeglądarki – bez konieczności dodatkowego pobierania lub konfiguracji.

W tym samouczku zajmiemy się wykresem pary walutowej Bitcoin/Binance USD (BTCBUSD). Jeśli jeszcze go nie masz, utwórz bezpłatne konto (dostępna jest również subskrypcja pro, ale nie jest ona konieczna w przypadku tego przewodnika).

Kliknij ten link, a zobaczysz wykres podobny do poniższego:


BTCBUSD Chart on tradingview

Twoje będą prawdopodobnie bardziej aktualne.


Tutaj chcemy uzyskać w pełni funkcjonalny wykres – kliknij przycisk, aby uzyskać do niego dostęp. Daje nam to między innymi znacznie bardziej szczegółowy widok, narzędzia do rysowania i opcje rysowania linii trendu.


Full featured chart on tradingview for BTCBUSD

W pełni funkcjonalny wykres. Możesz dostosować ramy czasowe, klikając widoki nad podświetlonymi zakładkami.


Nie będziemy omawiać, jak korzystać z 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) zobaczysz kilka różnych zakładek – kliknij Edytor Pine.


Redaktor Sosny


screenshot of the pine editor


W tym edytorze dzieje się magia. Powiemy mu, co chcemy zrobić, a następnie klikniemy Dodaj do wykresu, aby zobaczyć nasze adnotacje powyżej. Pamiętaj, że jeśli umieścimy kilka adnotacji na raz, może dojść do zamieszania, więc będziemy je usuwać pomiędzy przykładami (kliknij wykres prawym przyciskiem myszy > Usuń wskaźniki).

Jak widać, mamy już tam kilka linijek kodu. Kliknijmy Dodaj do wykresu, aby zobaczyć, co się stanie.


Adding first script to tradingview chart


Pod oryginałem zostanie dodany drugi wykres. Nowy wykres przedstawia te same dane. Najedź kursorem na Mój skrypt i kliknij krzyżyk, aby go usunąć. Teraz zagłębmy się w kod.

studiuj("Mój skrypt")

Ta pierwsza linia po prostu konfiguruje naszą adnotację. Wymagana jest jedynie nazwa, pod którą chcesz wywołać wskaźnik (w tym przypadku „Mój skrypt”), ale możemy dodać również kilka opcjonalnych parametrów. Jednym z nich jest nakładka, która informuje TradingView o umieszczeniu wskaźnika na istniejącym wykresie (zamiast w nowym segmencie). Jak widać z naszego pierwszego przykładu, domyślnie jest to false. Chociaż nie zobaczymy go teraz w akcji, overlay=true dodaje wskaźnik do istniejącego wykresu.

działka (zamknij)

Ta linia jest instrukcją wykreślenia ceny zamknięcia Bitcoina. plot po prostu daje nam wykres liniowy, ale możemy także wyświetlać świeczniki i słupki, jak się wkrótce przekonamy.

Teraz spróbujmy wykonać następujące czynności:

//@wersja=4
study("Mój skrypt", nakładka=true)
fabuła(otwarta, kolor=kolor.fioletowy)

Po dodaniu tego powinieneś zobaczyć drugi wykres (który wygląda jak oryginał przesunięty w prawo). Zamiast tego jedyne, co zrobiliśmy, to wykreśliliśmy cenę otwarcia, a ponieważ otwarcie z bieżącego dnia jest zamknięciem z dnia poprzedniego, logiczne jest, że mają one identyczny kształt.

Dobra! Pozbądźmy się dotychczasowych adnotacji (pamiętajcie, robimy to klikając prawym przyciskiem myszy i wybierając Usuń wskaźniki). Najedź kursorem na Bitcoin / BUSD i kliknij przycisk Ukryj, aby wyczyścić także bieżący wykres.

Wielu traderów preferuje wykresy świecowe, ponieważ dostarczają nam więcej informacji niż prosty wykres, taki jak ten, który właśnie zrobiliśmy. Dodajmy je dalej.

//@wersja=4
study("Mój skrypt", nakładka=true)
plotcandle(otwarty, wysoki, niski, zamknięty)

To dobry początek, ale brak kolorów sprawia, że ​​​​jest trochę mdły. Idealnie byłoby, gdybyśmy mieli świece czerwone, gdy otwarcie jest większe niż zamknięcie w danym przedziale czasowym, i zielone, jeśli zamknięcie przekracza otwarcie. Dodamy linię nad funkcją plotcandle():

//@wersja=4
study("Mój skrypt", nakładka=true)
kolory = otwarte >= zamknięte? kolor.czerwony : kolor.zielony
plotcandle(otwarty, wysoki, niski, zamknięty)

Sprawdza to każdą świecę i sprawdza, czy otwarcie jest większe, czy równe zamknięciu. Jeśli tak jest, oznacza to, że ceny spadły w tym okresie, co spowoduje zabarwienie świecznika na czerwono. W przeciwnym razie zabarwi go na zielono. Zmodyfikuj funkcję plotcandle(), aby przekazać ten schemat kolorów do:

//@wersja=4
study("Mój skrypt", nakładka=true)
kolory = otwarte >= zamknięte? kolor.czerwony : kolor.zielony
plotcandle(otwarta, wysoka, niska, zamknięta, kolor=kolory)

Usuń obecne wskaźniki, jeśli jeszcze tego nie zrobiłeś, i dodaj ten do wykresu. Teraz powinniśmy mieć coś przypominającego zwykły wykres świecowy.


Candlestick chart on tradingview

Piękny!


Wykreślanie średnich kroczących (MA)

Mamy już pewne podstawy. Przejdźmy do naszego pierwszego niestandardowego wskaźnika – wykładniczej średniej kroczącej, czyli EMA. Jest to cenne narzędzie, ponieważ pozwala nam odfiltrować wszelkie zakłócenia rynkowe i wygładzić akcję cenową.

EMA różni się nieco od prostej średniej kroczącej (SMA) tym, że przywiązuje większą wagę do najnowszych danych. Zwykle jest bardziej reaktywny na nagłe ruchy i często jest używany do krótkoterminowych transakcji (na przykład w handlu dziennym).


Prosta średnia ruchoma (SMA)

Równie dobrze moglibyśmy wykreślić SMA, abyśmy mogli później porównać oba. Dodaj tę linię do swojego skryptu:

fabuła(sma(blisko, 10))

To wykreśla średnią z poprzednich dziesięciu dni. Zmień liczbę w nawiasach, aby zobaczyć, jak zmienia się krzywa, biorąc pod uwagę różne długości.


Simple moving average based on previous 10 days

SMA na podstawie poprzednich dziesięciu dni.


Wykładnicza średnia krocząca (EMA)

EMA będzie nieco trudniejsza do zrozumienia, ale nie martw się. Rozłóżmy najpierw formułę:

EMA = (Zamknij – EMA z poprzedniego dnia) * Mnożnik – EMA z poprzedniego dnia

Co nam to mówi? Cóż, dla każdego dnia obliczamy nową średnią ruchomą na podstawie średniej ruchomej z dnia poprzedniego. Mnożnik „waży” ostatni okres i jest obliczany według następującego wzoru:

Mnożnik = 2 / (Długość EMA + 1)

Podobnie jak w przypadku prostych średnich kroczących, musimy określić, jak długo będzie trwała EMA. Składniowo funkcja wykreślania EMA jest podobna do funkcji SMA. Narysuj go obok SMA, aby móc porównać oba:

//@wersja=4
study("Mój skrypt", nakładka=true)
fabuła(sma(blisko, 10))
fabuła(ema(zamknij,10))


EMA and SMA on one tradingview chart

Można zauważyć niewielką różnicę pomiędzy obydwoma rodzajami MA.


➠ Chcesz zacząć przygodę z kryptowalutą? Kup Bitcoin na Binance!


Wbudowane skrypty

Jak dotąd pisaliśmy nasz kod ręcznie, abyś mógł go poczuć. Ale wprowadźmy coś, co może zaoszczędzić nam czasu, szczególnie jeśli piszemy bardziej złożone skrypty, a nie chcemy ich robić od zera.

W prawym górnym rogu edytora kliknij Nowy. Otrzymasz menu rozwijane z różnymi wskaźnikami technicznymi. Kliknij opcję Średnia ruchoma wykładnicza, aby zobaczyć kod źródłowy wskaźnika EMA.



Moving average exponential in pine script

Śmiało, dodaj to do wykresu.


Ten różni się od naszego – zauważysz funkcje input(). Są one ładne z punktu widzenia użyteczności, ponieważ możesz kliknąć to pole…


Modifying a chart on tradingview interface


...i łatwo zmienić niektóre wartości w wyskakującym oknie, klikając koło Ustawienia.


changing inputs on EMA


Aby to zademonstrować, w następnym skrypcie dodamy kilka funkcji input().


Wykreślanie wskaźnika względnej siły (RSI).

Indeks siły względnej (RSI) to kolejny istotny wskaźnik w analizie technicznej. Jest znany jako wskaźnik dynamiki, co oznacza, że ​​mierzy tempo kupna i sprzedaży aktywów. Prezentowany w skali od 0 do 100 wskaźnik RSI ma na celu poinformowanie inwestorów o tym, czy aktywa są wykupione czy wyprzedane. Zazwyczaj składnik aktywów można uznać za wyprzedany, jeśli jego wynik jest mniejszy lub równy 30, a może zostać wykupiony z wynikiem większym lub równym 70.

Jeśli przejdziesz do New > Strategia RSI, możesz to zobaczyć na własne oczy. RSI jest zazwyczaj mierzony w okresach 14 (tj. 14 godzin lub 14 dni), ale możesz dostosować to ustawienie do własnej strategii.

Dodaj to do wykresu. Powinieneś teraz zobaczyć kilka strzałek (zdefiniowanych przez funkcję Strategy.entry() w kodzie). RsiLE wskazuje potencjalną możliwość przedłużenia aktywa, ponieważ może on zostać wyprzedany. RsiSE wskazuje możliwe punkty, w których można dokonać krótkiej sprzedaży aktywa, gdy jest ono wykupione. Pamiętaj, że podobnie jak w przypadku wszystkich wskaźników, niekoniecznie powinieneś polegać na nich jako na niezawodnym dowodzie, że ceny spadną/wzrosną.


Testowanie historyczne

Istnieje sposób, w jaki możemy przetestować nasze niestandardowe wskaźniki. Chociaż dotychczasowe wyniki nie gwarantują przyszłych wyników, weryfikacja historyczna naszych skryptów może dać nam wyobrażenie o ich skuteczności w wychwytywaniu sygnałów.

Poniżej podamy przykład prostego skryptu. Zamierzamy stworzyć prostą strategię, która wchodzi w długą pozycję, gdy cena BTC spadnie poniżej 11 000 USD i wychodzi z pozycji, gdy cena przekracza 11 300 USD. Możemy wtedy zobaczyć, jak historycznie opłacalna byłaby ta strategia.

//@wersja=4
strategia("ToDaMoon", nakładka=true)
wprowadź = wejście (11000)
wyjście = wejście (11300)
cena = blisko

jeśli (cena <= wprowadź)
strategia.entry("BuyTheDip", strategia.long, komentarz="BuyTheDip")
jeśli (cena >= wyjście)
strategia.close_all(comment="SellTheNews")

Tutaj zdefiniowaliśmy wejście i wyjście jako zmienne – oba są danymi wejściowymi, co oznacza, że ​​możemy je później zmienić na wykresie. Ustawiamy także zmienną cenową, która uwzględnia zamknięcie każdego okresu. Następnie mamy pewną logikę w postaci instrukcji if. Jeśli część w nawiasach jest prawdziwa, wówczas wcięty blok pod nią zostanie uruchomiony. W przeciwnym razie zostanie pominięty.

Tak więc, jeśli cena jest niższa lub równa naszej pożądanej pozycji, pierwsze wyrażenie zostanie uznane za prawdziwe i otworzymy długą pozycję. Gdy cena osiągnie lub przekroczy żądaną wartość wyjścia, zostanie uruchomiony drugi blok, zamykający wszystkie otwarte pozycje.

Oznaczymy wykres strzałkami wskazującymi, gdzie weszliśmy/wyszliśmy, dlatego określiliśmy, co oznaczyć te punkty parametrem komentarza (w tym przykładzie „BuyTheDip” i „SellTheNews”). Skopiuj kod i dodaj go do wykresu.


indicator active on tradingview chart

Możesz teraz zobaczyć wskaźniki na wykresie. Może być konieczne pomniejszenie.


TradingView automatycznie stosuje Twoje reguły do ​​starszych danych. Zauważysz także, że następuje przełączenie z edytora Pine na kartę Tester strategii. Dzięki temu możesz zobaczyć przegląd potencjalnych zysków, listę transakcji i poszczególne wyniki.


Trading view strategy tester

Pozycje, na które weszliśmy i opuściliśmy.


Łączenie tego razem

Czas napisać własny scenariusz, wykorzystując niektóre koncepcje, które widzieliśmy do tej pory. Połączymy EMA i RSI i wykorzystamy ich wartości do pokolorowania świeczników, uzyskując spostrzeżenia, które będziemy mogli łatwo zwizualizować.

Nie należy tego interpretować jako porady finansowej – nie ma obiektywnie prawidłowego sposobu wykorzystania tego wskaźnika. Podobnie jak w przypadku wszystkich innych, należy go używać z innymi narzędziami w celu opracowania własnej strategii.

Teraz popracujmy nad naszym nowym skryptem. Usuń wszystkie wskaźniki z wykresu i ukryj także wykres Bitcoin/BUSD, abyśmy mieli czyste płótno do pracy.

Zacznijmy od zdefiniowania naszego badania. Możesz nazwać to jak chcesz, pamiętaj tylko o ustawieniu overlay=true.

study(title="Skrypt Akademii Binance", overlay=true)

Zapamiętajcie naszą wcześniejszą formułę EMA. Musimy podać mnożnik z długością EMA. Zróbmy z tego wejście wymagające liczby całkowitej (a więc bez miejsc po przecinku). Ustalimy także minimalną wartość (minval) i wartość 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 na naszym wykresie:

study(title="Skrypt Akademii Binance", overlay=true)
emaLength = input(title="Długość EMA", type=input.integer, defval=25, minval=0)
emaVal = ema(zamknij, emaLength)


Świetnie. Przejdź do RSI. Długość nadajemy mu 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(zamknij, emaLength)
rsiLength = input(title="Długość RSI", type=input.integer, defval=25, minval=0)

I 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(zamknij, emaLength)
rsiLength = input(title="Długość RSI", type=input.integer, defval=25, minval=0)
rsiVal = rsi(zamknij, rsiLength)

Na tym etapie ułóżmy logikę, która koloruje świeczniki w zależności od wartości EMA i RSI. Weźmy sytuację, w której (a) cena zamknięcia świecy przekracza EMA oraz (b) gdy 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 zająć Bitcoina długą, a kiedy krótką pozycję. Na przykład możesz pomyśleć, że spełnienie obu tych warunków oznacza, że ​​jest to dobry moment na otwarcie pozycji długiej. Lub odwrotnie, możesz go użyć, aby poinformować Cię, kiedy nie dochodzi do krótkich pozycji, nawet jeśli inne wskaźniki mówią inaczej.

Zatem nasza następna linia 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(zamknij, emaLength)
rsiLength = input(title="Długość RSI", type=input.integer, defval=25, minval=0)
rsiVal = rsi(zamknij, rsiLength)
kolory = zamknij > emaVal i rsiVal > 50 ? kolor.zielony : kolor.czerwony

Jeśli przetłumaczymy to na prosty angielski, powiemy po prostu, że jeśli wartość EMA przekroczy cenę zamknięcia, a wynik RSI przekroczy 50, zabarwimy świecę na zielono. W przeciwnym razie pokolorujemy go na czerwono.

Następnie narysuj EMA:

study(title="Skrypt Akademii Binance", overlay=true)
emaLength = input(title="Długość EMA", type=input.integer, defval=25, minval=0)
emaVal = ema(zamknij, emaLength)
rsiLength = input(title="Długość RSI", type=input.integer, defval=25, minval=0)
rsiVal = rsi(zamknij, rsiLength)
kolory = zamknij > emaVal i rsiVal > 50 ? kolor.zielony : kolor.czerwony
wykres(emaVal, "EMA")

Na koniec narysuj świece, pamiętając o uwzględnieniu parametru koloru:

study(title="Skrypt Akademii Binance", overlay=true)
emaLength = input(title="Długość EMA", type=input.integer, defval=25, minval=0)
emaVal = ema(zamknij, emaLength)
rsiLength = input(title="Długość RSI", type=input.integer, defval=25, minval=0)
rsiVal = rsi(zamknij, rsiLength)
kolory = zamknij > emaVal i rsiVal > 50 ? kolor.zielony : kolor.czerwony
wykres(emaVal, "EMA")
plotcandle(otwarta, wysoka, niska, zamknięta, kolor=kolory)

I to jest scenariusz! Dodaj go do wykresu, aby zobaczyć go w akcji.


Tradingview script in action

Wykres BTC/BUSD ze wskaźnikiem EMA/RSI.


Zamykanie myśli

W tym artykule omówiliśmy kilka podstawowych przykładów tego, co można zrobić za pomocą edytora Pine w TradingView. Do tej pory powinieneś już mieć pewność, że robisz proste adnotacje na wykresach cen, aby uzyskać dodatkowe informacje na podstawie własnych wskaźników.

Zainteresowaliśmy się tutaj tylko kilkoma wskaźnikami, ale łatwo jest stworzyć bardziej złożone – albo wybierając wbudowane skrypty z New, albo pisząc je samodzielnie.

Brakuje Ci inspiracji? Poniższe artykuły mogą dostarczyć Ci pomysłów na kolejny projekt:

  • Krótki przewodnik po parabolicznym wskaźniku SAR

  • Przewodnik po opanowaniu zniesienia Fibonacciego

  • Wyjaśnienie wskaźników wiodących i opóźnionych

  • Wyjaśnienie wskaźnika MACD