Co je Pine Script?

Pine Script je skriptovací jazyk používaný k úpravě vašich grafů na platformě TradingView. Platforma vám k tomu poskytuje mnoho funkcí, ale Pine Script vám umožní jít směrem k vašemu cíli. Ať už chcete změnit barvy grafů cenových akcí nebo otestovat novou strategii, editor Pine vám pomůže přizpůsobit grafy v reálném čase, jak uznáte za vhodné.

Kód je pěkně zdokumentován, takže se určitě podívejte do uživatelské příručky, kde najdete další informace. Prostřednictvím tohoto tutoriálu se snažíme probrat některé základy a poskytnout ukazatele, které mohou být užitečné při obchodování s digitálními měnami.

příprava

Začít používat Pine Script je velmi snadné. Jakýkoli kód, který napíšeme, běží na serverech TradingView, takže můžeme používat editor a vyvíjet skripty z prohlížeče – není potřeba žádné další stahování nebo konfigurace.

V tomto tutoriálu vytvoříme graf pro měnový pár Bitcoin/Binance USD (BTCBUSD). Pokud ještě nemáte účet, můžete pokračovat a vytvořit si jej zdarma (k dispozici je také profesionální předplatné, které však není pro tuto příručku nutné).

Klikněte na tento odkaz a uvidíte graf podobný následujícímu:

Váš graf bude pravděpodobně propracovanější.

Zde bychom chtěli plně vybavený graf – kliknutím na tlačítko se k němu dostanete. To nám poskytuje podrobnější přehled a nástroje pro kreslení a také možnosti kreslení trendových čar mimo jiné.

Plně vybavený graf. Časový rámec můžete upravit kliknutím na zobrazení nad zvýrazněnými kartami.

Nebudeme diskutovat o tom, jak používat různé dostupné nástroje, ale pokud máte zájem o technickou analýzu, důrazně doporučujeme, abyste si je prohlédli, abyste se s nimi seznámili. Vlevo dole (na obrázku zvýrazněno) najdete několik různých záložek – klikněte na Pine Editor.

Editor borovice

Tento editor vám nabízí řadu okouzlujících funkcí. Řekneme mu, co chceme udělat, a poté klikněte na Přidat do grafu, aby se naše komentáře zobrazily nahoře. Upozorňujeme, že graf se může stát neuspořádaným, pokud zadáte více komentářů najednou, takže je mezi příklady odstraníme (klikněte pravým tlačítkem na graf > Odebrat indikátory).

Můžete vidět, že již máme dva řádky kódů. Klikněte na Přidat do grafu, abyste viděli, co se stane.

Pod původní graf je přidán druhý graf. Nový graf bude představovat stejná data. Přesuňte kurzor myši na tlačítko Můj skript a kliknutím na elipsu ji odstraňte. Pojďme diskutovat o kódu podrobněji.

studium ("Můj skript")

První řádek nastavuje naše komentáře. Vyžaduje pouze název, který chcete, aby se indikátor nazval (v tomto případě „Můj skript“), ale můžeme přidat i některé volitelné proměnné. Jednou z takových proměnných je overlay, která říká platformě, aby umístila indikátor do aktuálního grafu (spíše než do nového sektoru). Jak můžete vidět v prvním příkladu, výchozí hodnota je false. Takže to teď neuvidíme, overlay=true přidá indikátor do aktuálního grafu.

spiknutí (zavřít)

Tento řádek je instrukce k vykreslení závěrečné ceny bitcoinu. Graf nám poskytuje spojnicový graf, ale můžeme také zobrazit cenovou akci a sloupcové grafy, jak uvidíme za chvíli.

Nyní zkusme následující:

//@version=4 study("Můj skript", overlay=true) plot(open, color=color.purple)

Jakmile přidáte tento symbol, měli byste vidět druhý graf (vypadá to, že původní graf se posunul na pravou stranu). Vše, co jsme udělali, bylo místo toho vykreslit otevírací cenu, protože otevírací cena aktuálního dne je zavírací cena předchozího dne, dává smysl, aby měly podobný tvar.

Dobrý! Zbavme se stávajících komentářů (nezapomeňte, že to uděláme kliknutím pravým tlačítkem myši a stisknutím tlačítka Odebrat indikátory). Najeďte myší na BTC/BUSD a poté klikněte na tlačítko Skrýt pro smazání aktuálního grafu.

Mnoho obchodníků dává přednost grafům cenových akcí, protože nám poskytují více informací než jednoduchý výkres, jako jsme právě udělali my. Pojďme je přidat níže.

//@version=4 study("Můj skript", overlay=true) plotcandle(otevřená, vysoká, nízká, zavřená)

Dobrý začátek, ale kvůli nedostatku barev je to trochu nudné. V ideálním případě bychom měli mít červené svíčky, když je otevřená cena vyšší než uzavírací cena během určitého časového rámce, a zelené svíčky, když uzavírací cena převyšuje otevřenou cenu. Přidáme řádek nad vlastnost candle plot():

//@version=4 study("Můj skript", overlay=true) barvy = otevřít >= zavřít ? color.red : color.green plotcandle (otevřít, vysoko, nízko, zavřít)

To se děje v každém grafu cenové akce a také při kontrole, zda je otevírací cena větší nebo rovna zavírací ceně. V tomto případě to znamená, že ceny za určité období klesly, takže graf cenových akcí bude zbarven červeně. Jinak bude zbarven do zelena. Upravte funkci drawcandle() a zadejte barevné schéma:

//@version=4 study("Můj skript", overlay=true) barvy = otevřít >= zavřít ? color.red : color.green plotcandle(open, high, low, close, color=colors)

Odstraňte stávající indikátory, pokud jste je ještě neodstranili, a přidejte tento indikátor do grafu. Měli bychom mít něco, co představuje normální graf cenové akce.

Kreslení klouzavých průměrů (MA)

Níže uvádíme některé základy. Přejděme k prvnímu vlastnímu ukazateli – exponenciálnímu klouzavému průměru neboli EMA. Je to cenný nástroj, který nám umožňuje eliminovat rušivé vlivy na trhu a usnadňuje pochopení pohybů trhu.

Exponenciální klouzavý průměr se mírně liší od jednoduchého klouzavého průměru (SMA), protože se tento průměr zaměřuje na nejnovější data. Má tendenci reagovat na náhlé pohyby a obvykle se používá při krátkodobých obchodech (například denní obchodování).

Jednoduchý klouzavý průměr (SMA)

Můžeme také nakreslit jednoduchý klouzavý průměr, takže bychom je měli později porovnat. Přidejte do skriptu tento řádek:

plot(sma(zavřít, 10))

To představuje průměr za předchozích 10 dní. Upravte číslo v závorce, abyste viděli, jak moc se křivka změní, když se vezmou v úvahu různá období.

Jednoduchý klouzavý průměr je založen na předchozích 10 dnech.

Exponenciální klouzavý průměr (EMA)

Exponenciální klouzavý průměr může být trochu obtížné pochopit, ale nebojte se. Podívejme se podrobně na rovnici:

EMA = (Zavřít – EMA předchozího dne) * Násobitel – EMA předchozího dne

Co nám to tedy říká? No, každý den nový klouzavý průměr se vypočítá na základě klouzavého průměru předchozího dne. Multiplikátor je „váha dat“ za poslední období a počítá se podle následující rovnice:

Multiplikátor = 2 / (délka EMA + 1)

U jednoduchých klouzavých průměrů musíme určit, jak dlouho bude exponenciální klouzavý průměr trvat. Z hlediska struktury je graf exponenciálního klouzavého průměru podobný jednoduchému grafu klouzavého průměru. Nakreslete jej vedle jednoduchého klouzavého průměru, abyste je mohli porovnat:

//@version=4 study("Můj skript", overlay=true) plot(sma(zavřít, 10)) plot(ema(zavřít,10))

Mezi těmito dvěma typy klouzavých průměrů můžete vidět nepatrný rozdíl.

Vložené skripty

Kód jsme doposud psali ručně, abyste jej dobře znali. Ale pojďme nabídnout něco, co pomůže ušetřit čas, zvláště při psaní složitějších skriptů, a nechceme to dělat od začátku.

Klikněte na tlačítko Nový v pravém horním rohu vašeho editoru. Zobrazí se rozbalovací nabídka se všemi různými typy technických indikátorů. Kliknutím na Exponenciální klouzavý průměr zobrazíte zdrojový kód indikátoru Exponenciální klouzavý průměr.

Poté jej přidejte do grafu.

To se liší od našich vlastních kódů – všimnete si vlastností input(). Je to skvělé pro použití, protože můžete kliknout na toto pole…

Některé hodnoty ve vyskakovacím okně můžete také snadno změnit kliknutím na kolečko nastavení.

V následujícím skriptu přidáme dvě vlastnosti input(), abychom ukázali, jak to udělat.

Graf indexu relativní síly (RSI).

Index relativní síly (RSI) je jedním ze základních ukazatelů technické analýzy. Je známý jako indikátor hybnosti, což znamená, že měří rychlost, za kterou se aktiva kupují a prodávají. Hodnocení na stupnici od 0 do 100 se skóre RSI snaží investorům sdělit, zda je aktivum překoupené nebo přeprodané. Aktivum se obvykle považuje za přeprodané, pokud je jeho skóre menší nebo rovno 30, a za překoupené, pokud je jeho skóre vyšší nebo rovno 70.

Pokud půjdete do New > RSI Strategy, můžete to vidět sami. RSI se měří během 14 období (tj. 14 hodin nebo 14 dní), ale toto nastavení si můžete upravit tak, aby vyhovovalo vaší vlastní strategii.

Přidejte to do grafu. Nyní byste měli vidět nějaké šipky (identifikované vlastností enter.strategy() v kódu). RsiLE ukazuje potenciální nákupní příležitosti pro aktivum, protože se může stát v přeprodané zóně. Zatímco RsiSE zdůrazňuje potenciální prodejní místa aktiva, když je v překoupené zóně. Vezměte prosím na vědomí, že stejně jako všechny ukazatele by se na ně nemělo spoléhat jako na definitivní důkaz rostoucích nebo klesajících cen.

Proveďte backtest

Existuje způsob, který nám umožňuje testovat vlastní indikátory. Přestože minulý výkon není zárukou budoucích výsledků, proces zpětného testování skriptů nám dává představu o tom, jak efektivní jsou při přijímání signálů.

Níže je uveden příklad jednoduchého skriptu. Vytvoříme jednoduchou strategii, jak vstoupit do dlouhého obchodu, když cena bitcoinu klesne pod 11 000 $ a opustit obchod, když cena překročí 11 300 $. Můžeme tedy vědět, jak zisková byla tato strategie historicky.

//@version=4 strategy("ToDaMoon", overlay=true) enter = input(11000) exit = input(11300) price = close if (cena <= enter)     strategy.entry("BuyTheDip", strategy.long , comment="BuyTheDip") if (cena >= exit)     strategy.close_all(comment="SellTheNews")

Zde jsme definovali vstupní a výstupní body jako proměnné – obě jsou vstupy, což znamená, že je můžeme později v grafu změnit. Nastavili jsme také cenovou proměnnou, která zaznamenává uzavírací cenu pro každé období. Na použití příkazů if je tedy něco logického. Pokud je část v závorce pravdivá, bude aktivován odsazený blok. V opačném případě bude přeskočen.

Také pokud cena klesne nebo se rovná požadované vstupní ceně, výraz bude vyhodnocen jako pravdivý a otevřeme nákupní obchod. Jakmile se cena vyrovná nebo překročí požadovanou výstupní cenu, bude aktivován druhý blok a také uzavření všech otevřených obchodů.

Do grafu přidáme komentáře pomocí šipek, které označují vstupní a výstupní body, proto jsme tyto body pojmenovali v rámečku komentářů (v tomto příkladu „Koupit pokles“ a „Prodej na novinky“). Zkopírujte symbol a přidejte jej do grafu.

Nyní můžete vidět ukazatele na grafu. Možná budete muset oddálit, abyste se podívali.

TradingView aplikuje vaše pravidla na starší data. Také si všimnete přechodu z editoru Pine na záložku Tester strategií. To vám umožní vidět přehled potenciálních zisků, seznam obchodů a jejich příslušnou výkonnost.

Obchody, do kterých jsme vstupovali a vystupovali.

Propojte položky dohromady

Je čas napsat vlastní program s využitím některých dosud popsaných konceptů. Budeme kombinovat exponenciální klouzavý průměr a RSI pomocí jejich hodnoty, abychom obarvili grafy cenových akcí a získali myslitelný přehled.

Nemělo by se to chápat jako finanční poradenství – protože neexistuje žádný objektivně definovaný správný způsob použití tohoto ukazatele. Podobně jako všechny ostatní ukazatele by měl být tento ukazatel používán ve spojení s dalšími nástroji k rozvoji vaší investiční strategie.

Začněme pracovat na novém skriptu. Odstraňte z grafu všechny indikátory a skryjte také graf BTC/BUSD, abychom měli prázdný graf, se kterým můžeme začít pracovat.

Začněme definováním studie. Můžete použít libovolný název, jen nezapomeňte nastavit overlay=true.

studie(title="Binance Academy Script", overlay=true)

Vzpomeňte si na rovnici exponenciálního klouzavého průměru, o které jsme hovořili dříve. Musíme poskytnout multiplikátoru data za období, které bude trvat exponenciální klouzavý průměr. Udělejme z něj vstupní pole, které vyžaduje celé číslo (proto žádná desetinná místa). Zadáme také minimální (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)

Hodnotu EMA pro každou svíčku v grafu můžeme vypočítat pomocí nové proměnné:

study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0) emaVal = ema(zavřít, emaLength)

úžasný. Ohledně indexu relativní síly (RSI). Období zadáme obdobným způsobem:

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

Nyní to 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(zavřít, emaLength) rsiLength = input (title="Délka RSI", typ=vstup.integer, defval=25, minval=0) rsiVal = rsi(zavřít, rsiLength)

V tomto okamžiku byste si měli uvědomit, že barvy grafů cenových akcí závisí na hodnotách EMA a RSI. Uvažujme příklad, kdy (a) uzavírací cena svíčky překročí EMA a (b) RSI je nad 50.

Proč? Můžete se rozhodnout, že tyto indikátory mohou být použity ve spojení, aby vám řekly, kdy koupit nebo prodat bitcoiny. Můžete si například myslet, že splnění obou podmínek znamená, že je vhodný čas vstoupit do dlouhého obchodu. Případně můžete použít indikátory, které vám připomenou, kdy byste neměli prodávat, i když jiné indikátory ukazují opak.

Takže následující řádek vypadá takto:

study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0) emaVal = ema(zavřít, emaLength) rsiLength = input (title="RSI Length", type=input.integer, defval=25, minval=0) rsiVal = rsi(zavřít, rsiLength) barvy = zavřít > emaVal a rsiVal > 50 ? barva.zelená : barva.červená

Pokud to přeložíme do jednoduché angličtiny, znamená to, že pokud EMA překročí uzavírací cenu a skóre RSI překročí 50, obarvíme svíčku na zeleno. Jinak bude zbarven do červena.

Poté vykreslete exponenciální klouzavý průměr:

study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0) emaVal = ema(zavřít, emaLength) rsiLength = input (title="RSI Length", type=input.integer, defval=25, minval=0) rsiVal = rsi(zavřít, rsiLength) barvy = zavřít > emaVal a rsiVal > 50 ? color.green : color.red plot(emaVal, "EMA")

Nakonec nakreslete svíčky a nezapomeňte uvést proměnnou barvy:

study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0) emaVal = ema(zavřít, emaLength) rsiLength = input (title="RSI Length", type=input.integer, defval=25, minval=0) rsiVal = rsi(zavřít, rsiLength) barvy = zavřít > emaVal a rsiVal > 50 ? color.green : color.red plot(emaVal, "EMA") plotcandle(open, high, low, close, color=colors)

A máte hotovo se scénářem! Přidejte to do svého grafu, abyste to viděli v akci.

Graf BTC/BUSD pomocí EMA/RSI.

Závěrečné myšlenky

V tomto článku jsme se podívali na některé základní příklady toho, co lze udělat pomocí Pine Editoru TradingView. Měli byste být schopni vytvářet jednoduché komentáře k cenovému grafu, abyste získali další informace o svých ukazatelích.

Zvýraznili jsme zde pouze dva indikátory, ale je snadné vytvořit složitější indikátory – ať už novým definováním vestavěných skriptů nebo jejich vlastním psaním.

Potřebujete inspirativní nápady? Následující články vám mohou pomoci získat nápady pro váš další projekt: