Jak Tworzyć Wskaźniki Analizy Technicznej (TA) na TradingView
Strona Główna
Artykuły
Jak Tworzyć Wskaźniki Analizy Technicznej (TA) na TradingView

Jak Tworzyć Wskaźniki Analizy Technicznej (TA) na TradingView

Zaawansowany
Opublikowane Aug 28, 2020Zaktualizowane Jun 15, 2023
13m

Wprowadzenie

Bez odpowiednich narzędzi nie można przeprowadzić skutecznej analizy technicznej. Solidna strategia handlowa pomoże Ci uniknąć typowych błędów, polepszyć zarządzanie ryzykiem i zwiększyć Twoją zdolność do identyfikowania i wykorzystywania natrafiających się okazji.
Dla wielu TradingView jest platformą do tworzenia wykresów. Oferując wachlarz narzędzi do analizy technicznej, ta potężna aplikacja internetowa HTML5 jest używana przez miliony 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ć swoje pomysły w sieci społecznościowej. W tym artykule skupimy się na możliwości konfiguracji. Będziemy używać Pine Script, natywnego języka programowania TradingView, który zapewnia nam kontrolę nad naszymi wykresami.

Zaczynajmy!


Czym jest Pine Script?

Pine Script to język skryptowy, którego można używać do modyfikowania wykresów na TradingView. Platforma bazowo wyposaża Cię w wiele funkcji, ale Pine Script pozwala pójść o krok dalej. Niezależnie od tego, czy chcesz zmienić kolory swoich świec, czy też przetestować nową strategię, Edytor Pine umożliwi Ci dostosowanie wykresów w czasie rzeczywistym według własnego uznania.
Sam kod posiada fantastyczną dokumentację, więc możesz zapoznać się z instrukcjami, aby uzyskać więcej informacji. Naszym celem w tym samouczku jest omówienie niektórych podstaw i wprowadzenie wskaźników, które mogą się przydać w handlu kryptowalutami.


Konfiguracja

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 tworzyć nasze skrypty z przeglądarki - bez pobierania dodatkowego oprogramowania lub zbędnego konfigurowania.

W tym samouczku przedstawimy tworzenie wykresu 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 to konieczne w tym przewodniku). 
Kliknij ten link, a zobaczysz wykres podobny do następującego:


Twój prawdopodobnie będzie bardziej aktualny.


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 kreślenia linii trendu.


W pełni funkcjonalny wykres. Możesz dostosować ramy czasowe, klikając widoki powyżej podświetlonych kart.


Nie będziemy omawiać, jak korzystać z różnych dostępnych narzędzi, ale jeśli poważnie myślisz o analizie technicznej, zdecydowanie zalecamy zapoznanie się z nimi. W lewym dolnym rogu (zaznaczonym na obrazku) zobaczysz kilka różnych zakładek - kliknij Pine Editor.


Edytor Pine



To w tym właśnie edytorze dzieje się cała magia. Powiemy mu, co chcemy zrobić, a następnie klikniemy Add to Chart, aby zobaczyć to co dodaliśmy. Pamiętaj, że sytuacja może się skomplikować, jeśli dodamy kilka adnotacji naraz, ale dla przejrzystości będziemy je usuwać między przykładami (aby usunąć, kliknij prawym przyciskiem myszy na wykres > Remove Indicators).
Widać, że mamy tam już kilka linii kodu. Kliknij Add to Chart, aby zobaczyć, co się stanie.



Drugi wykres zostanie dodany pod oryginałem. Nowy wykres przedstawia te same dane. Najedź kursorem na My Script i kliknij krzyżyk, aby go usunąć. Przejdźmy teraz do kodu.
study("My Script")
Ta pierwsza linijka to tylko konfiguracja naszej adnotacji. Wymaga tylko nazwy dla wskaźnika który chcesz stworzyć (w tym przypadku „Mój skrypt”), ale istnieje również kilka opcjonalnych parametrów, które możemy dodać. Jednym z nich jest overlay, który mówi TradingView, aby umieścić wskaźnik na istniejącym wykresie (zamiast w nowym segmencie). Jak widać z naszego pierwszego przykładu, domyślnie przyjmuje on wartość fałsz. Chociaż nie zobaczymy tego teraz w akcji, overlay = true dodaje wskaźnik do istniejącego wykresu.
plot(close)
W tej linii znajduje się instrukcja nakreślenia ceny zamknięcia Bitcoina. Komenda plot po prostu pokaże nam wykres liniowy, ale możemy również wyświetlić świece i słupki, do czego przejdziemy wkrótce. 

Spróbujmy teraz czegoś takiego:

//@version=4
study("My Script", overlay=true)
plot(open, color=color.purple)
Po dodaniu tego powinieneś zobaczyć drugi wykres (który wygląda jak oryginał przesunięty w prawo). Zamiast tego wykreśliliśmy cenę otwarcia, a ponieważ otwarcie danego dnia to zamknięcie dnia poprzedniego, ma to sens, że mają one identyczny kształt.
W porządku! Pozbądź się obecnych adnotacji (pamiętaj, robimy to, klikając prawym przyciskiem myszy i naciskając Remove Indicators). Najedź kursorem na Bitcoin/BUSD i kliknij przycisk Hide, aby wyczyścić również bieżący wykres.

Wielu traderów woli wykresy świecowe, ponieważ dają nam więcej informacji niż zwykły wykres, taki jak ten, który właśnie zrobiliśmy. Stwórzmy więc takie.

//@version=4
study("My Script", overlay=true)
plotcandle(open, high, low, close)
To dobry początek, ale brak kolorów sprawia, że wykres jest trochę mdły. Najlepiej byłoby, gdybyśmy mieli czerwone świece, gdy otwarcie jest większe niż zamknięcie w danym przedziale czasowym, a zielone, jeśli zamknięcie jest większe niż otwarcie. Dodamy teraz linię kodu powyżej funkcji plotcandle():
//@version=4
study("My Script", overlay=true)
colors = open >= close ? color.red : color.green
plotcandle(open, high, low, close)

Teraz program sprawdza każdą świecę i ustala, czy otwarcie jest większe lub równe zamknięciu. Jeśli tak, oznacza to, że ceny spadły w tym okresie, więc świeca zabarwi się na czerwono. W przeciwnym razie pokoloruje ją na zielono. Zmodyfikuj funkcję plotcandle(), aby aktywować ten schemat kolorowania:

//@version=4
study("My Script", overlay=true)
colors = open >= close ? color.red : color.green
plotcandle(open, high, low, close, color=colors)

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


Piękny!


Kreślenie średnich kroczących (MA)

Omówiliśmy już kilka podstaw. Przejdźmy do naszego pierwszego wskaźnika niestandardowego - wykładniczej średniej kroczącej lub EMA. Jest to cenne narzędzie, ponieważ pozwala nam odfiltrować szum rynkowy i wygładzić akcję cenową. 
EMA różni się od prostej średniej kroczącej (SMA) tym, że przywiązuje większą wagę do najnowszych danych. Zwykle reaguje bardziej na nagłe ruchy i jest często używane do "zagrań" krótkoterminowych (na przykład w day-tradingu).


Prosta średnia krocząca (SMA)

Nakreślimy teraz SMA, żebyśmy mogli porównać ją później z EMA. Dodaj tę linię kodu do swojego skryptu:

plot(sma(close, 10))

Funkcja ta przedstawia ś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.


SMA, w oparciu o dane z poprzednich 10 dni.


Wykładnicza średnia krocząca (EMA)

EMA będzie nieco trudniejsza do zrozumienia, ale nie martw się. Najpierw przeanalizujmy wzór:

EMA = (Zamknięcie - EMA z Poprzedniego Dnia) * Mnożnik - EMA z Poprzedniego Dnia

Więc co nam to mówi? Cóż, dla każdego dnia obliczamy nową średnią ruchomą na podstawie średniej z poprzedniego dnia. 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ć, jaka będzie długość EMA. Pod względem składniowym funkcja nakreślania EMA jest podobna do tej od SMA. Umieśćmy je obok siebie dla porównania:

//@version=4
study("My Script", overlay=true)
plot(sma(close, 10))
plot(ema(close,10))


Możesz zobaczyć drobną różnicę w tych dwóch typach MA.



Wbudowane skrypty

Do tej pory pisaliśmy nasz kod ręcznie, abyś mógł zobaczyć z czym to się je. Teraz przedstawmy coś, co pozwoli nam zaoszczędzić czas, zwłaszcza jeśli piszemy bardziej złożone skrypty, a nie chcemy robić ich od zera.

U góry po prawej stronie edytora kliknij New. Pojawi się rozwijane menu z różnymi rodzajami wskaźników technicznych. Kliknij opcję Moving Average Exponential, aby wyświetlić kod źródłowy wskaźnika EMA.



Śmiało, dodaj to do wykresu.


Ten skrypt różni się od naszego - na pewno zauważyłeś funkcje input(). Jest bardzo fajna z punktu widzenia użyteczności, ponieważ możesz kliknąć to pole…



... i łatwo zmienić niektóre wartości w wyskakującym okienku, klikając w Settings.



W następnym skrypcie dodamy kilka funkcji input(), aby zademonstrować ich działanie.


Kreślenie Wskaźnika Relatywnej Siły (RSI)

Wskaźnik Siły Względnej (RSI) jest kolejnym niezastąpionym wskaźnikiem analizy technicznej. Jest znany jako wskaźnik dynamiki, co oznacza, że mierzy tempo, w jakim aktywa są kupowane i sprzedawane. Przedstawiony w skali od 0 do 100, wynik RSI jest próbą poinformowania inwestorów, czy aktywa są nadmiernie kupowane, czy wyprzedawane. Zazwyczaj aktywa mogą być uznane za "nad-sprzedawane", jeśli mają wynik RSI mniejszy lub równy 30, oraz "nad-kupowane" przy RSI większym lub równym 70.
Jeśli przejdziesz do New > RSI Strategy, 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 na potencjalną możliwość longowania aktywów, ponieważ mogą one być "nad-sprzedawane". RsiSE zwraca uwagę na możliwe punkty, w których może być warto shortować aktywa, gdy są "nad-kupowane". Pamiętaj, że tak jak w przypadku wszystkich wskaźników, nie należy koniecznie polegać na nich jako na niezawodnych dowodach, że ceny spadną/wzrosną.


Backtesting

Istnieje sposób na przetestowanie naszych niestandardowych wskaźników. Chociaż dotychczasowe wyniki nie gwarantują przyszłych rezultatów, backtesting (testowanie historyczne) naszych skryptów może dać nam wyobrażenie o tym, jak skuteczne są one w odbieraniu sygnałów.

Poniżej podamy przykład prostego skryptu. Zamierzamy stworzyć prostą strategię, która wejdzie na pozycję long, gdy cena BTC spadnie poniżej $11,000 i wyjdzie, gdy cena przekroczy $11,300. Możemy w ten sposób zobaczyć, jak opłacalna byłaby ta strategia w przeszłości.

//@version=4
strategy("ToDaMoon", overlay=true)
enter = input(11000)
exit = input(11300)
price = close

if (price <= enter)
    strategy.entry("BuyTheDip", strategy.long, comment="BuyTheDip")
if (price >= exit)
    strategy.close_all(comment="SellTheNews")
Tutaj zdefiniowaliśmy wejście (entry) i wyjście (exit) jako zmienne – obie są inputami (danymi wejściowymi), co oznacza, że możemy je później zmienić na wykresie. Stworzyliśmy również zmienną cenową (price), która zamyka każdy okres. Następnie wprowadzamy trochę logiki w postaci instrukcji if. Jeśli formuła w nawiasach przyjmuje wartość prawda, zostanie uruchomiony blok kodu z "wcięcia" pod nią. W przeciwnym razie zostanie pominięty.

Jeśli więc cena jest niższa lub równa ustawionemu wejściu, pierwsze wyrażenie przyjmuje wartość „prawda” i otworzymy pozycję long. Gdy cena zrówna się lub przekroczy ustalone wyjście, zostanie uruchomiony drugi blok, zamykający wszystkie otwarte pozycje.

Opiszemy wykres strzałkami wskazującymi, gdzie weszliśmy/wyszliśmy. Określiliśmy także jak nazwać konkretne punkty za pomocą parametru komentarza (comment) (w tym przykładzie „BuyTheDip” i „SellTheNews”). Skopiuj kod i dodaj go do wykresu.


Teraz możesz zobaczyć wskaźniki na wykresie. Być może będziesz musiał powiększyć.


TradingView automatycznie aplikuje Twoje "zasady" do starszych danych. Zauważy również, że przełącza się z Edytora Pine na kartę Strategy Tester. Dzięki temu możesz zobaczyć przegląd potencjalnych zysków, listę transakcji i wyniki każdej z nich.


Pozycje na które weszliśmy i z których wyszliśmy.


Podsumowanie

Czas napisać własny skrypt, korzystając z niektórych koncepcji, które poznaliśmy. Zamierzamy połączyć EMA i RSI i użyć ich wartości do pokolorowania świec, uzyskując spostrzeżenia, które możemy łatwo zwizualizować.

Nie należy tego interpretować jako porady finansowej - nie ma obiektywnie poprawnego sposobu wykorzystania tego wskaźnika. Podobnie jak w przypadku wszystkich innych, należy go używać z innymi narzędziami, aby utworzyć własną strategię.

Popracujmy teraz nad naszym nowym skryptem. Usuń wszystkie wskaźniki z wykresu i ukryj wykres Bitcoin/BUSD, abyśmy mieli czyste stanowisko pracy.

Zacznijmy od zdefiniowania naszego badania (parametr study). Możesz nadać mu dowolną nazwę, po prostu upewnij się, że ustawiłeś overlay = true.
study(title="Binance Academy Script", overlay=true)
Przypomnij sobie wcześniej omawiany wzór EMA. Musimy podać mnożnik wraz z długością EMA. Zróbmy to jako dane wejściowe (input) wymagające liczby całkowitej (a więc bez miejsc po przecinku). Ustawimy również minimum (minval) i wartość domyślną (defval).
study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", 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="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)


Wspaniale. Teraz RSI. Długość w tym wypadku ustawimy w podobny sposób:

study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)
rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)

Teraz możemy je policzyć:

study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)
rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)
rsiVal = rsi(close, rsiLength)

Na tym etapie dodajmy logikę, za pomocą której pokolorujemy świece w zależności od wartości EMA i RSI. Weźmy sytuację, w której (a) cena zamknięcia świecy przekracza EMA i (b) RSI wynosi powyżej 50.

Czemu? Cóż, możesz zdecydować, że te wskaźniki mogą być używane naraz, aby powiedzieć Ci, kiedy longować lub shortować Bitcoina. Na przykład możesz pomyśleć, że spełnienie obu tych warunków oznacza, że jest to dobry moment na zajęcie pozycji long. Lub odwrotnie, możesz go użyć, aby poinformował Cię, kiedy nie należy shortować, nawet jeśli inne wskaźniki mówią inaczej.

Tak więc nasza następna linia kodu będzie wyglądać tak:

study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)
rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)
rsiVal = rsi(close, rsiLength)
colors = close > emaVal and rsiVal > 50 ? color.green : color.red
Gdyby przetłumaczyć to na ludzki język, to po prostu mówimy, że jeśli wartość EMA przekracza cenę zamknięcia i RSI jest większe niż 50, pokolorujemy świecę na zielono. W przeciwnym razie pokolorujemy ją na czerwono. 

Teraz nakreślmy EMA:

study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)
rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)
rsiVal = rsi(close, rsiLength)
colors = close > emaVal and rsiVal > 50 ? color.green : color.red
plot(emaVal, "EMA")
Na koniec nakreślmy świece, upewniając się, że uwzględniliśmy parametr color:
study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)
rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)
rsiVal = rsi(close, rsiLength)
colors = close > emaVal and rsiVal > 50 ? color.green : color.red
plot(emaVal, "EMA")
plotcandle(open, high, low, close, color=colors)

Oto nasz skrypt! Dodaj go do wykresu i zobacz jak wygląda.


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


Przemyślenia końcowe

W tym artykule omówiliśmy kilka podstawowych przykładów tego, co możesz zrobić za pomocą Edytora Pine na TradingView. Na ten moment powinieneś mieć pewność, że potrafisz zrobić proste adnotacje do wykresów cenowych, aby uzyskać dodatkowe informacje na podstawie własnych wskaźników.

Tutaj przyjrzeliśmy się tylko kilku podstawowym wskaźnikom, ale łatwo stworzyć bardziej skomplikowane - wybierając wbudowane skrypty z zakładki New, albo pisząc je samodzielnie.

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