Как да създадете TA индикатори в TradingView
Начало
Статии
Как да създадете TA индикатори в TradingView

Как да създадете TA индикатори в TradingView

Средно ниво
Публикувано Aug 28, 2020Актуализирано Jun 15, 2023
13m

Въведение

Без правилните инструменти за търговия не можете да провеждате ефективен технически анализ. Силната стратегия за търговия ще ви помогне да избегнете често срещани грешки, да подобрите управлението на риска и да увеличите способността си да идентифицирате и да се възползвате от възможностите.
За мнозина TradingView е платформата за графики. Предлагайки център от инструменти за технически анализ, мощното уеб приложение HTML5 се използва от милиони за проследяване на движенията на форекс, криптовалутите и традиционните фондови пазари.
TradingView има много мощни функции: позволява ни да проследяваме активи в множество платформи за търговия и да публикуваме идеи за търговия в социалната мрежа. В тази статия ще се съсредоточим върху неговата адаптивност. Ще използваме Pine Script, собственият език за програмиране на TradingView, който ни предоставя детайлен контрол върху оформленията на нашите диаграми.

Да започваме!


Какво е Pine Script?

Pine Script е скриптов език, който може да се използва за промяна на вашите графики на TradingView. Платформата вече ви предоставя много функции, за да го направите, но Pine Script ви позволява да направите още една крачка напред. Независимо дали искате да промените цветовете на вашите свещници или да тествате нова стратегия, Pine Editor ще ви позволи да персонализирате вашите графики в реално време, както сметнете за добре.
Самият код е отлично документиран, така че не забравяйте да разгледате ръководството за потребителя за повече информация. Нашата цел в този урок е да обсъдим някои от основите и да представим индикатори, които могат да бъдат полезни за търговия с криптовалута.


Настройка

Невероятно лесно е да започнете с Pine Script. Всеки код, който пишем, се изпълнява на сървърите на TradingView, така че можем да имаме достъп до редактора и да разработваме нашите скриптове от браузър – без да се изисква допълнително изтегляне или конфигурация.

В този урок ще начертаем валутната двойка Bitcoin/Binance USD (BTCBUSD). Ако все още нямате такъв, продължете и създайте безплатен акаунт (има и професионален абонамент, но той не е необходим за това ръководство). 
Следвайте тази връзка и ще видите диаграма, наподобяваща следната:


Вашият вероятно ще бъде по-актуален.


Тук искаме да получим пълнофункционалната диаграма – щракнете върху бутона, за да получите достъп до нея. Това ни дава много по-подробен изглед, инструменти за рисуване и опции за начертаване на линиите на тренда, наред с други неща.


Пълнофункционалната диаграма. Можете да коригирате времевата рамка, като щракнете върху изгледите над маркираните раздели.


Няма да обсъждаме как да използвате различните налични инструменти, но ако се занимавате сериозно с техническия анализ, силно ви съветваме да се запознаете с тях. В долния ляв ъгъл (очертан на изображението) ще видите няколко различни раздела – щракнете върху Редактор Pine.


Редакторът Pine



Този редактор е мястото, където се случва магията. Ще му кажем какво искаме да направим, след което щракнете върху Добавяне към диаграмата, за да видите нашите пояснения да се показват по-горе. Имайте предвид, че нещата могат да се объркат, ако включим няколко пояснения наведнъж, така че ще ги премахнем между примерите (щракнете с десния бутон върху диаграмата > Премахване на индикатори).
Можете да видите, че вече имаме няколко реда код там. Нека щракнем върху Добавяне към диаграмата, за да видим какво се случва.



Втора диаграма се добавя под оригинала. Новата диаграма представлява същите данни. Задръжте курсора на мишката върху Моят скрипт и кликнете върху кръста, за да го премахнете. Сега, нека се поразровим в кода.
study("My Script")
Този първи ред просто настройва нашата анотация. Изисква само името, което искате да извикате на индикатора („Моят скрипт“, в този случай), но има и някои допълнителни параметри, които можем да добавим. Едно от тях е наслагване, което казва на TradingView да постави индикатора върху съществуващата графика (вместо в нов сегмент). Както можете да видите от първия ни пример, по подразбиране е false. Въпреки че сега няма да го видим в действие, overlay=true добавя индикатора към съществуващата диаграма.
plot(close)
Този ред е инструкцията за начертаване на цената на затваряне на биткойн. plot просто ни дава линейна диаграма, но можем да покажем и свещници и барове, както ще видим скоро. 

Сега нека опитаме следното:

//@version=4 study("My Script", overlay=true) plot(open, color=color.purple)
След като добавите това, трябва да видите втора диаграма (която изглежда сякаш оригиналът е изместен надясно). Вместо това всичко, което направихме, е да начертаем цената на отваряне и тъй като отварянето на текущия ден е затваряне на предишния, има смисъл те да имат идентична форма.
Добре! Нека се отървем от текущите пояснения (не забравяйте, че правим това, като щракнете с десния бутон на мишката и натиснете Премахване на индикаторите). Задръжте курсора на мишката върху Bitcoin / BUSD и щракнете върху бутона Скрий, за да изчистите и текущата графика.

Много търговци предпочитат графиките на свещниците, тъй като те ни дават повече информация от обикновен сюжет като този, който току-що направихме. Нека ги добавим по-нататък. 

//@version=4 study("My Script", overlay=true) plotcandle(open, high, low, close)
Това е добро начало, но липсата на цветове го прави малко бледо. В идеалния случай трябва да имаме червени свещи, когато отварянето е по-голямо от затварянето за даден период от време, и зелени, ако затварянето надвишава отварянето. Ще добавим ред над функцията plotcandle():
//@version=4 study("My Script", overlay=true) colors = open >= close ? color.red : color.green plotcandle(open, high, low, close)

Това разглежда всеки свещник и проверява дали отварянето е по-голямо или равно на затварянето. Ако е така, това означава, че цените са паднали през периода, така че ще оцвети свещника в червено. В противен случай ще го оцвети в зелено. Променете функцията plotcandle(), за да предаде тази цветова схема в:

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

Премахнете текущите индикатори, ако все още не сте го направили, и добавете този към графиката. Сега трябва да имаме нещо, наподобяващо обикновена графика на свещниците.


Прекрасно!


Изобразяване на пълзящи средни (MA)

Разгледахме някои от основните неща. Нека да преминем към нашия първи персонализиран индикатор – експоненциалната пълзяща средна или EMA. Това е ценен инструмент, тъй като ни позволява да филтрираме всеки пазарен шум и да изгладим ценовото движение. 
EMA се различава леко от обикновената пълзяща средна (SMA), тъй като придава по-голяма тежест на най-новите данни. Тя има тенденция да бъде по-реактивна към внезапни движения и често се използва за краткосрочни игри (при дневната търговия, например).


Обикновената пълзяща средна (SMA)

Може и да начертаем SMA, само за да можем да сравним двете след това. Добавете този ред към вашия скрипт:

plot(sma(close, 10))

Това показва средната стойност за предходните десет дни. Настройте числото в скобите, за да видите как се променя кривата, когато се вземат предвид различни дължини.


SMA въз основа на предходните десет дни.


Експоненциалната пълзяща средна (EMA)

EMA ще бъде малко по-трудна за разбиране, но не се притеснявайте. Нека първо да разпределим формулата:

EMA = (Затваряне - EMA от предходния ден) * Множител - EMA от предходния ден

И така, какво ни казва това? Ами, за всеки ден изчисляваме нова пълзяща средна въз основа на тази от предходния ден. Множителят е това, което „претегля“ най-новия период и се изчислява по следната формула:

Множител = 2 / (дължина на EMA + 1)

Както при обикновените пълзящи средни, трябва да уточним колко дълга ще бъде EMA. Синтактично функцията за начертаване на EMA е подобна на тази на SMA. Начертайте я до SMA, за да можете да сравните двете:

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


Можете да видите лека разлика в двата вида MA.



Вградени скриптове

Досега сме написали нашия код ръчно, за да можете да го усетите. Но нека представим нещо, което може да ни спести време, особено ако пишем по-сложни скриптове и не искаме да ги правим от нулата.

В горната дясна част на вашия редактор щракнете върху Нов. Ще получите падащо меню с всички видове различни технически индикатори. Щракнете върху Експоненциална пълзяща средна, за да видите изходния код за индикатор EMA.



Продължете и добавете това към диаграмата.


Този е различен от нашия – ще забележите функциите input(). Те са хубави от гледна точка на използваемостта, тъй като можете да кликнете върху това поле...



...и лесно променяйте някои от стойностите в изскачащ прозорец, като щракнете върху колелото за настройки.



Ще добавим няколко функции input() в следващия ни скрипт, за да демонстрираме това.


Начертаване на индекса на относителна сила (RSI).

Индексът на относителна сила (RSI) е друг основен индикатор в техническия анализ. Той е известен като индикатор за инерция, което означава, че измерва скоростта, с която се купуват и продават активите. Представена по скала от 0 до 100, оценката на RSI се опитва да информира инвеститорите дали активите са свръхкупени или свръхпродадени. Обикновено един актив може да се счита за свръхпродаден, ако има резултат, по-малък или равен на 30, и може да бъде свръхкупен при резултат, по-голям или равен на 70.
Ако се насочите към Нов > Стратегия за RSI , можете да видите това сами. RSI обикновено се измерва за периоди от 14 (т.е. 14 часа или 14 дни), но вие сте свободни да настроите тази настройка, за да отговаря на вашата собствена стратегия.
Добавете това към диаграмата. Трябва да видите няколко стрелки, показани сега (дефинирани от функцията strategy.entry() в кода). RsiLE показва потенциална възможност за дългосрочен актив, тъй като може да бъде свръхпродаден. RsiSE акцентира върху възможни точки, в които да се заема къса позиция на актива, когато е свръхкупен. Имайте предвид, че както при всички индикатори, не трябва непременно да разчитате на тях като неопровержимо доказателство, че цените ще се намалят/увеличат.


Бектестинг

Има начин да тестваме нашите персонализирани индикатори. Въпреки че ефективността в миналото не е гаранция за бъдещи резултати, бектестингът на нашите скриптове може да ни даде представа колко ефективни са те при улавянето на сигнали. 

По-долу ще дадем пример за прост скрипт. Ще създадем ясна стратегия за влизане в дълга позиция, когато цената на BTC падне под 11 000 долара и излизане от позицията, когато цената надхвърли 11 300 долара. Тогава можем да видим колко печеливша би била тази стратегия в исторически план.

//@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")
Тук сме дефинирали влизането и излизането като променливи – и двете са входни данни, което означава, че можем да ги променим на графиката по-късно. Ние също така задаваме променливата цена, която приема затварянето за всеки период. След това, ние имаме няколко логически стъпки във формата if. Ако частта в скоби е вярна, тогава блокът с отстъп под нея ще бъде стартиран. В противен случай ще бъде пропуснат.

Така че, ако цената е по-малка или равна на желания от нас вход, първият израз се оценява като вярно и ние ще отворим дълга позиция. След като цената е равна или надвишава желания изход, вторият блок ще бъде задействан, затваряйки всички отворени позиции. 

Ще анотираме диаграмата със стрелки, които показват къде сме влезли/излезли, така че сме посочили какво да обозначим тези точки с параметъра за коментар (в този пример „BuyTheDip“ и „SellTheNews“). Копирайте кода и го добавете към диаграмата.


Вече можете да видите индикаторите на графиката. Може да се наложи да намалите мащаба.


TradingView автоматично прилага вашите правила към по-стари данни. Ще забележите също, че превключва от редактора Pine към раздела Тестер на стратегии. Това ви позволява да видите общ преглед на вашите потенциални печалби, списък на сделките и всяко от техните индивидуални представяния.


Позиции, в които сме влезли и излезли.


Да обобщим

Време е да напишем собствен скрипт, като използваме някои от концепциите, които сме виждали досега. Ще комбинираме EMA и RSI и ще използваме техните стойности за оцветяване на свещници, давайки прозрения, които можем лесно да визуализираме. 

Това не трябва да се тълкува като финансов съвет – няма обективно правилен начин да се използва този индикатор. Както при всички останали, той трябва да се използва с други инструменти за разработване на собствена стратегия.

Сега нека работим върху нашия нов скрипт. Премахнете всичките си индикатори от графиката и скрийте графиката на Bitcoin/BUSD също, така че да имаме чисто платно, върху което да работим.

Нека започнем с дефинирането на нашето изследване. Чувствайте се свободни да го именувате както искате, просто не забравяйте да зададете overlay=true.
study(title="Binance Academy Script", overlay=true)
Спомнете си нашата EMA формула от по-рано. Трябва да предоставим множителя с дължината на EMA. Нека го направим вход, който изисква цяло число (така че без десетични знаци). Също така ще зададем минимум, който може да бъде (minval) и стойност по подразбиране (defval).
study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)


Използвайки тази нова променлива, можем да изчислим стойността на EMA за всяка свещ в нашата диаграма:

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


Чудесно. Към RSI. Ще му дадем дължина по подобен начин:

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)

И сега можем да го изчислим:

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)

На този етап нека съставим логиката, която оцветява свещниците в зависимост от стойностите на EMA и RSI. Да вземем ситуация, при която (а) цената на затваряне на свещта надвишава EMA и (б) когато RSI е над 50.

Защо? Ами, може да решите, че тези индикатори могат да се използват във връзка, за да ви кажат кога да заемете къса или дълга позиция с биткойн. Например, може да си помислите, че удовлетворяването на двете от тези условия означава, че е подходящ момент да влезете в дълга позиция. Или обратното, може да го използвате, за да ви информира кога да  не влизате в къса позиция, дори ако други индикатори казват друго.

И така, следващият ни ред ще изглежда така:

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
Ако преведем това на обикновен език, ние просто казваме, че ако стойността на EMA надвиши цената на затваряне и RSI резултатът надхвърли 50, ще оцветим свещта в зелено. В противен случай ще го оцветим в червено. 

След това начертайте 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")
И накрая, начертайте свещите, като не забравяйте да включите параметъра на цвета:
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)

И това е скриптът! Добавете го към диаграмата, за да го видите в действие.


Графика на BTC/BUSD с индикатор EMA/RSI.


Заключителни мисли

В тази статия разгледахме някои основни примери за това, което можете да правите с Редактора Pine в TradingView. Вече трябва да сте уверени в правенето на прости пояснения към ценовите графики, за да получите допълнителна информация от собствените си индикатори.

Тук се интересуваме само от няколко индикатора, но е лесно да измислите по-сложни – или като изберете вградените скриптове от Нови или като ги напишете сами.

Липсва вдъхновение? Следните статии може да ви дадат някои идеи за следващия ви проект: