Pro mnohé je
TradingView hlavní platformou pro vytváření grafů. Tuto výkonnou webovou aplikaci HTML5, která nabízí řadu nástrojů technické analýzy, používají miliony lidí ke sledování pohybů na
devizových,
kryptoměnových i tradičních akciových trzích.
TradingView má mnoho výkonných funkcí: umožňuje nám sledovat aktiva na mnoha obchodních platformách a publikovat obchodní nápady v rámci své sociální sítě. V tomto článku se zaměříme na jeho přizpůsobitelnost. Budeme používat Pine Script, vlastní programovací jazyk TradingView, který nám poskytuje podrobnou kontrolu nad rozložením grafů.
Pojďme začít!
Pine Script je skriptovací jazyk, který lze použít k úpravě grafů TradingView. Platforma vás k tomu již vybavila mnoha funkcemi, ale Pine Script vám umožňuje postoupit ještě o krok dál. Ať už chcete změnit barvy
svíček nebo backtestovat novou strategii, Pine Editor vám umožní přizpůsobit si grafy v reálném čase podle vašich představ.
Samotný kód je výborně zdokumentován, takže si určitě přečtěte
uživatelskou příručku, kde najdete další informace. Naším cílem v tomto tutoriálu je probrat některé základy a představit ukazatele, které se mohou při
obchodování s kryptoměnami hodit.
Začít s Pine Script je neuvěřitelně jednoduché. Veškerý kód, který napíšeme, se spouští na serverech TradingView, takže můžeme přistupovat k editoru a vyvíjet své skripty z prohlížeče – bez nutnosti dalšího stahování nebo konfigurace.
V tomto tutoriálu vytvoříme graf měnového páru Bitcoin / Binance USD (BTCBUSD). Pokud ještě nemáte bezplatný účet, vytvořte si ho (k dispozici je i profi předplatné, ale pro tento návod není nutné).
Podívejte se na
tento odkaz a uvidíte graf, který se podobá následujícímu:
Váš graf bude pravděpodobně aktuálnější.
Zde chceme získat plnohodnotný graf – kliknutím na tlačítko jej otevřete. Ten nám mimo jiné nabízí mnohem podrobnější zobrazení, nástroje pro kreslení a možnosti vykreslování spojnic trendu.
Plnohodnotný graf. Časový rámec můžete upravit kliknutím na zobrazení nad zvýrazněnými kartami.
Nebudeme se zabývat tím, jak používat různé dostupné nástroje, ale pokud to s technickou analýzou myslíte vážně, vřele vám doporučujeme se s nimi seznámit. Vlevo dole (naznačeno na obrázku) uvidíte několik různých karet – klikněte na položku Pine Editor.
V tomto editoru se odehrává veškerá magie. Řekneme mu, co chceme udělat, a pak klikneme na tlačítko Přidat do grafu, aby se výše objevily naše komentáře. Všimněte si, že pokud do grafu zahrneme několik vysvětlivek najednou, může to být nepřehledné, a proto je mezi jednotlivými příklady odstraníme (klikněte pravým tlačítkem myši do grafu > Odstranit ukazatele).
Vidíte, že zde již máme několik řádků kódu. Klikneme na tlačítko Přidat do grafu a uvidíme, co se stane.
Pod původní graf se přidá druhý. Nový graf znázorňuje stejná data. Najeďte na položku Můj skript a kliknutím na křížek je odstraňte. Nyní se pustíme do kódu.
study("My Script")
Tento první řádek pouze nastavuje naše komentáře. Vyžaduje pouze název, kterým chceme ukazatel volat („My Script“, v tomto případě), ale můžeme přidat i některé nepovinné parametry. Jedním z nich je overlay, který říká programu TradingView, aby ukazatel umístil na stávající graf (místo do nového segmentu). Jak vidíte z našeho prvního příkladu, je výchozí hodnota false. Ačkoli jej nyní v akci neuvidíme, overlay=true přidá do stávajícího grafu ukazatel.
plot(close)
Tento řádek je pokyn k vykreslení uzavírací ceny
Bitcoinu.
Plot nám jednoduše poskytne čárový graf, ale můžeme si také zobrazit svíčky a sloupce, jak uvidíme za chvíli.
Nyní zkusíme následující:
//@version=4 study("My Script", overlay=true) plot(open, color=color.purple)
Po přidání by se měl zobrazit druhý graf (který vypadá jako původní posunutý doprava). Vše, co jsme udělali, je, že jsme místo toho vykreslili otevírací cenu, a protože otevírací cena aktuálního dne je uzavírací cenou předchozího dne, je logické, že mají totožný tvar.
Dobře! Zbavme se současných poznámek (nezapomeňte, že to provedeme kliknutím pravým tlačítkem myši a stisknutím příkazu Odstranit ukazatele). Najeďte na položku Bitcoin / BUSD a klikněte na tlačítko Skrýt, čímž vymažete i aktuální graf.
Mnoho obchodníků dává přednost svíčkovým grafům, protože nám poskytují více informací než jednoduchý graf, jako byl ten, který jsme právě vytvořili. Pojďme je tedy přidat.
//@version=4 study("My Script", overlay=true) plotcandle(open, high, low, close)
Je to dobrý začátek, ale kvůli nedostatku barev je to trochu nevýrazné. V ideálním případě bychom měli mít červené svíčky, pokud je otevírací cena větší než uzavírací cena pro daný časový rámec, a zelené, pokud uzavírací cena převyšuje otevírací cenu. Přidáme řádek nad funkci plotcandle():
//@version=4 study("My Script", overlay=true) colors = open >= close ? color.red : color.green plotcandle(open, high, low, close)
Ten se podívá na každou svíčku a zkontroluje, zda je otevírací cena větší nebo rovna uzavírací ceně. Pokud ano, znamená to, že ceny v daném období klesly, a proto svíčku zbarví do červena. V opačném případě ji obarví zeleně. Upravte funkci plotcandle() tak, aby předávala toto barevné schéma:
//@version=4 study("My Script", overlay=true) colors = open >= close ? color.red : color.green plotcandle(open, high, low, close, color=colors)
Pokud jste tak ještě neučinili, odstraňte stávající ukazatele a přidejte do grafu tento. Nyní bychom měli mít něco, co připomíná běžný svíčkový graf.
Krása!
Nějaké základy už tedy máme. Přejděme k našemu prvnímu vlastnímu ukazateli –
exponenciálnímu klouzavému průměru neboli EMA. Jedná se o cenný nástroj, protože nám umožňuje odfiltrovat případný šum trhu a vyhladit cenovou akci.
EMA se od jednoduchého klouzavého průměru (SMA) mírně liší tím, že větší váhu přikládá nejnovějším údajům. Má tendenci více reagovat na náhlé pohyby a často se používá pro krátkodobé hry (například při
denním obchodování).
Jednoduchý klouzavý průměr (SMA)
Mohli bychom také vykreslit SMA, abychom mohli poté oba porovnat. Do skriptu přidejte tento řádek:
plot(sma(close, 10))
Toto zobrazí průměr za předchozích deset dní. Změňte číslo v závorce, abyste viděli, jak se křivka změní při zohlednění různých délek.
SMA na základě předchozích deseti dnů.
Exponenciální klouzavý průměr (EMA)
Pochopení EMA bude trochu složitější, ale nemusíte se bát. Nejprve si rozebereme vzorec:
EMA = (uzavírací cena - EMA předchozího dne) * multiplikátor - EMA předchozího dne
Co nám to tedy říká? Pro každý den vypočítáme nový klouzavý průměr na základě klouzavého průměru z předchozího dne. Multiplikátor je to, co „váží“ poslední období, a vypočítá se podle následujícího vzorce:
Multiplikátor = 2 / (délka EMA + 1)
Stejně jako u jednoduchých klouzavých průměrů musíme určit, jak dlouhý bude EMA. Syntakticky je funkce pro vykreslení EMA podobná funkci SMA. Vykreslete ji vedle SMA, abyste je mohli porovnat:
//@version=4 study("My Script", overlay=true) plot(sma(close, 10)) plot(ema(close,10))
U obou typů MA je patrný mírný rozdíl.
Zabudované skripty
Zatím jsme kód psali ručně, abyste si ho mohli vyzkoušet. Pojďme si ale představit něco, co nám může ušetřit čas, zejména pokud píšeme složitější skripty a nechceme je dělat od začátku.
Vpravo nahoře v editoru klikněte na Nový. Zobrazí se rozbalovací nabídka s nejrůznějšími technickými ukazateli. Kliknutím na položku Exponenciální klouzavý průměr zobrazíte zdrojový kód ukazatele EMA.
Pokračujte a přidejte to do grafu.
Ten se od našeho liší – všimněte si funkce input(). Ty jsou z hlediska použitelnosti příjemné, protože na toto pole můžete kliknout…
...a snadno změnit některé hodnoty ve vyskakovacím okně kliknutím na kolečko Nastavení.
V dalším skriptu přidáme několik funkcí input(), abychom to demonstrovali.
Index relativní síly (RSI) je
dalším důležitým ukazatelem technické analýzy. Je známý jako
ukazatel hybnosti, což znamená, že měří rychlost, jakou jsou aktiva nakupována a prodávána. Skóre RSI, prezentované na stupnici od 0 do 100, se snaží informovat investory o tom, zda jsou aktiva překoupená nebo přeprodaná. Obvykle může být aktivum považováno za přeprodané, pokud má skóre menší nebo rovno 30, a může být překoupené se skóre větším nebo rovným 70.
Pokud přejdete do nabídky Nový > Strategie RSI, můžete se o tom přesvědčit. RSI se obecně měří po 14 obdobích (tj. 14 hodin nebo 14 dní), ale toto nastavení si můžete libovolně upravit tak, aby vyhovovalo vaší vlastní strategii.
Přidejte to do grafu. Nyní byste měli vidět několik zobrazených šipek (definovaných funkcí strategy.entry() v kódu). RsiLE indikuje potenciální příležitost k longování aktiva, protože může být přeprodané. RsiSE upozorňuje na možné body, ve kterých lze aktivum shortovat, když je překoupené. Všimněte si, že stejně jako u všech ukazatelů byste se na ně neměli nutně spoléhat jako na spolehlivý důkaz, že ceny budou klesat/růst.
Existuje způsob, jak naše vlastní ukazatele otestovat. Ačkoli minulé chování není zárukou budoucích výsledků, zpětné testování našich skriptů nám může poskytnout představu o tom, jak efektivní jsou při zachycování signálů.
Níže uvedeme příklad jednoduchého skriptu. Vytvoříme jednoduchou strategii, která vstoupí do dlouhé pozice, když cena BTC klesne pod 11 000 USD, a pozici opustí, když cena překročí 11 300 USD. Poté se můžeme podívat, jak by tato strategie byla historicky zisková.
//@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")
Zde jsme jako proměnné definovali entry a exit – obě jsou vstupy, což znamená, že je můžeme později v grafu změnit. Nastavili jsme také proměnnou price, která přebírá hodnotu uzavírací ceny pro každé období. Pak máme nějakou logiku v podobě příkazů if. Pokud je část v závorkách pravdivá, spustí se blok odsazený pod ní. V opačném případě bude přeskočen.
Pokud je tedy cena nižší nebo rovna požadovanému vstupu, první výraz se vyhodnotí jako pravdivý a my otevřeme dlouhou pozici. Jakmile se cena rovná nebo je vyšší než požadovaný výstup, spustí se druhý blok, který uzavře všechny otevřené pozice.
Graf budeme anotovat šipkami, které ukazují, kde jsme vstoupili/vystoupili, takže jsme zadali, jak tyto body označit pomocí parametru comment (v tomto příkladu „BuyTheDip“ a „SellTheNews“). Zkopírujte kód a přidejte jej do grafu.
Nyní můžete vidět ukazatele v grafu. Možná bude nutné zvětšení.
TradingView automaticky aplikuje vaše pravidla na starší data. Všimněte si také, že se přepne z Pine Editoru na kartu Tester strategie. Ta vám umožní zobrazit přehled vašich potenciálních zisků, seznam obchodů a jejich jednotlivé výkony.
Pozice, do kterých jsme vstoupili a ze kterých jsme vystoupili.
Je čas napsat vlastní skript s využitím některých konceptů, které jsme dosud viděli. Budeme kombinovat EMA a RSI a používat jejich hodnoty k obarvení svíček, čímž získáme poznatky, které můžeme snadno vizualizovat.
Toto by nemělo být chápáno jako finanční rada – neexistuje žádný objektivně správný způsob, jak tento ukazatel použít. Stejně jako všechny ostatní by měl být používán s dalšími nástroji k vytvoření vlastní strategie.
Nyní zapracujme na našem novém skriptu. Odstraňte z grafu všechny ukazatele a skryjte také graf Bitcoin/BUSD, abychom měli čisté plátno pro práci.
Začněme definicí naší „studie“. Klidně ji pojmenujte, jak chcete, jen nezapomeňte nastavit overlay=true.
study(title="Binance Academy Script", overlay=true)
Vzpomeňte si na náš vzorec EMA. Musíme zadat multiplikátor s délkou EMA. Udělejme z něj vstup, který vyžaduje celé číslo (tedy bez desetinných míst). Nastavíme také minimum, které může být (minval), a výchozí hodnotu (defval).
study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
Pomocí této nové proměnné můžeme vypočítat hodnotu EMA pro každou svíčku v našem grafu:
study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength)
Skvělé. Teď RSI. Podobným způsobem mu přidělíme délku:
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)
A nyní ji můžeme vypočítat:
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)
V této fázi sestavme logiku, která obarví svíčky v závislosti na hodnotách EMA a RSI. Vezměme situaci, kdy (a) uzavírací cena svíčky přesahuje hodnotu EMA, a (b) kdy je hodnota RSI vyšší než 50.
Proč? No, možná se rozhodnete, že tyto ukazatele lze použít ve spojení, abyste věděli, kdy je třeba Bitcoin longovat nebo shortovat. Můžete si například myslet, že splnění obou těchto podmínek znamená, že je vhodná doba pro vstup do dlouhé pozice. Nebo naopak, můžete ho použít k tomu, abyste věděli, kdy nedělat shortování, i když ostatní ukazatele říkají něco jiného.
Náš další řádek tedy bude vypadat takto:
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
Pokud to přeložíme do češtiny, tak pouze říkáme, že pokud hodnota EMA překročí uzavírací cenu a skóre RSI překročí 50, svíčku obarvíme zeleně. V opačném případě ji zbarvíme červeně.
Poté vykreslete graf 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")
Nakonec vykreslete svíčky a nezapomeňte uvést parametr barvy:
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)
A to je skript! Přidejte jej do grafu a uvidíte jej v akci.
Graf BTC/BUSD s ukazatelem EMA/RSI.
V tomto článku jsme uvedli několik základních příkladů toho, co můžete dělat s Pine Editorem v aplikaci TradingView. Nyní byste si již měli být jisti, že dokážete vytvářet jednoduché poznámky k cenovým grafům a získávat tak další poznatky z vlastních ukazatelů.
Zde jsme se věnovali pouze několika ukazatelům, ale je snadné vytvořit i složitější – buď výběrem zabudovaných skriptů z nabídky Nový, nebo jejich vlastním napsáním.
Chybí vám inspirace? Následující články vám mohou poskytnout nápady pro váš další projekt: