Kā veidot TA indikatorus ar TradingView?
Sākums
Raksti
Kā veidot TA indikatorus ar TradingView?

Kā veidot TA indikatorus ar TradingView?

Vidēji sarežģītas tēmas
Publicēts Aug 28, 2020Atjaunināts Jun 15, 2023
13m

Ievads

Bez atbilstošiem tirdzniecības rīkiem nav iespējams veikt efektīvu tehnisko analīzi. Spēcīga tirdzniecības stratēģija palīdzēs tev izvairīties no ierastām kļūdām, pilnveidot savu risku pārvaldību un spēju identificēt un izmantot iespējas.

Daudzi grafiku veidošanai izvēlas platformu TradingView. Šo jaudīgo HTML5 tīmekļa lietotni, kas piedāvā plašu dažādu tehniskās analīzes rīku klāstu, izmanto miljoniem lietotāju, lai sekotu līdzi cenas izmaiņām Forex, kriptovalūtu un tradicionālajos akciju tirgos.

TradingView piedāvā daudz efektīvu funkciju un ļauj sekot līdzi aktīviem dažādās tirdzniecības platformās, kā arī publicēt tirdzniecības idejas platformas sociālajā tīklā. Šajā rakstā pievērsīsimies šīs platformas pielāgojamībai. Mēs izmantosim Pine Script – TradingView programmēšanas valodu, kas nodrošina detalizētu kontroli pār taviem grafiku izkārtojumiem.

Ķersimies klāt!


Kas ir Pine Script?

Pine Script ir skriptu valoda, kuru var izmantot, lai modificētu tavus TradingView grafikus. Šajā platformā jau ir pieejams daudz dažādu funkciju, kas palīdz to veikt, taču Pine Script nodrošina vēl plašākas iespējas. Neatkarīgi no tā, vai vēlies tikai pamainīt sveču krāsu vai arī grasies retrospektīvi pārbaudīt savu jauno stratēģiju, Pine Editor ļaus tev pēc saviem ieskatiem pielāgot reāllaika grafikus.

Pats kods ir lieliski dokumentēts, tāpēc papildinformācijai vari skatīt šo lietotāja rokasgrāmatu. Šīs pamācības mērķis ir apskatīt pamatus un iepazīstināt ar indikatoriem, kas var būt noderīgi kriptovalūtu tirdzniecībā.


Iestatīšana

Sākt darbu ar Pine Script ir neticami vienkārši. Jebkurš mūsu rakstītais kods tiek izpildīts TradingView serveros, tāpēc mēs varam piekļūt rediģēšanas rīkam un izstrādāt savus skriptus, izmantojot pārlūkprogrammu – nav jāveic nekādas papildu lejupielādes vai konfigurēšanas.

Šajā pamācībā veidosim grafiku Bitcoin/Binance USD (BTCBUSD) valūtu pārim. Ja tev vēl nav konta, izveido bezmaksas kontu (ir pieejams arī abonements profesionāliem lietotājiem, taču šai pamācībai tas nebūs nepieciešams). 

Seko šai saitei, un tu redzēsi grafiku, kas līdzīgs šim:


BTCBUSD grafiks platformā TradingView

Tavs grafiks, visticamāk, saturēs aktualizētus datus.


Tagad atvērsim grafiku ar pilnu funkciju klāstu – noklikšķini uz šīs pogas, lai tam piekļūtu. Tādējādi iegūstam daudz detalizētāku skaitu ar zīmēšanas rīkiem, iespējām attēlot tendenču līknes u. c. funkcijām.


BTCBUSD grafiks ar pilnu funkciju klāstu platformā TradingView

Grafiks ar pilnu funkciju klāstu. Lai pielāgotu laika periodu, noklikšķini uz skatiem virs izceltajām cilnēm.


Mēs neapskatīsim, kā izmantot pieejamos dažādos rīkus, taču, ja esi nolēmis nopietni pievērsties tehniskajai analīzei, iesakām tos apgūt. Apakšējā kreisajā pusē (atzīmēts attēlā) ir pieejamas vairākas cilnes – noklikšķini uz Pine Editor.


Pine Editor


pine editor ekrānuzņēmums


Visa burvība notiek šajā rediģēšanas rīkā. Mums ir jādara tam zināms, ko vēlamies izdarīt, un tad jānoklikšķina uz Pievienot grafikam, lai mūsu anotācijas tiktu parādītas augstāk. Ņem vērā, ka grafiks var kļūt nepārskatāms, ja vienlaikus pievienosim vairākas anotācijas, tāpēc pēc katra piemēra mēs tās noņemsim (ar labo taustiņu noklikšķinot grafikā > Noņemt indikatorus).

Šobrīd ir jau redzamas dažas koda rindiņas. Noklikšķināsim uz Pievienot grafikam un apskatīsim, kas notiks.


Pirmā skripta pievienošana TradingView grafikam


Zem sākotnējā grafika tiek pievienots vēl viens. Jaunajā grafikā tiek rādīti tie paši dati. Novieto kursoru virs Mans skripts un noklikšķini uz krustiņa, lai to noņemtu. Tagad iedziļināsimies kodā.

study("Mans skripts")

Pirmajā rindiņā tiek vienkārši izveidota mūsu anotācija. Tajā ir jānorāda nosaukums, kādu vēlamies piešķirt savam indikatoram (šajā gadījumā – "Mans skripts"), taču ir iespējams pievienot arī dažus papildu parametrus. Viens no tiem ir overlay jeb pārklājums, kā rezultātā TradingView attēlos šo indikatoru esošajā grafikā (nevis jaunā segmentā). Kā redzams pirmajā piemērā, pēc noklusējuma tam ir iestatīts false jeb "nepatiess". Lai gan pašlaik mēs neredzam, kā tas darbojas, overlay=true pievieno indikatoru esošajam grafikam.

plot(close)

Šī rindiņa dod norādījumu attēlot grafikā Bitcoin slēgšanas cenu. plot vienkārši veido līknes diagrammu, taču, kā drīzumā redzēsim, ir iespējams arī veidot sveču vai stabiņu diagrammu. 

Tagad izmēģināsim sekojošo:

//@version=4 study("Mans skripts", overlay=true) plot(open, color=color.purple)

Pievienojot šādu kodu, tiks parādīts otrs grafiks (tas līdzināsies sākotnējam grafikam, kas pabīdīts pa labi). Ar šo darbību mēs attēlojām atvēršanas, nevis slēgšanas cenu, un, tā kā šodienas atvēršanas cena ir vienāda ar vakardienas slēgšanas cenu, tad ir loģiski, ka forma ir vienāda.

Labi! Tagad noņemsim anotācijas (atceries, ka, lai to izdarītu, ir jānoklikšķina ar labo taustiņu un tad jāizvēlas Noņemt indikatorus). Novieto kursoru virs Bitcoin/BUSD un tad noklikšķini uz pogas Slēpt, lai nodzēstu esošo grafiku.

Daudzi tirgotāji dod priekšroku sveču grafikiem, jo tie sniedz vairāk informācijas nekā vienkārša diagramma, kas līdzinās mūsu iepriekš apskatītajai. Tagad pievienosim šādus grafikus. 

//@version=4 study("Mans skripts", overlay=true) plotcandle(open, high, low, close)

Sākums ir labs, taču krāsu trūkuma dēļ grafiks izskatās visai blāvs. Ideālajā gadījumā būtu jāizmanto sarkanas sveces tad, ja atvēršanas cena ir augstāka par slēgšanas cenu, un zaļas sveces tad, ja slēgšanas cena ir augstāka par atvēršanas cenu. Pievienosim rindiņu virs funkcijas plotcandle():

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

Šī funkcija katrai svecei pārbaudīs, vai tās atvēršanas cena ir lielāka par vai vienāda ar slēgšanas cenu. Ja atbilde būs pozitīva, tas nozīmēs, ka cena šajā periodā ir kritusies, un svece tiks attēlota sarkanā krāsā. Pretējā gadījumā sveces krāsa būs zaļa. Veic izmaiņas funkcijā plotcandle() , lai ieviestu šo krāsu shēmu:

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

Ja tas vēl nav paveikts, noņem esošos indikatorus un pievieno grafikam šo. Tagad mums vajadzētu iegūt parastam sveču grafikam līdzīgu attēlu.


Sveču grafiks platformā TradingView

Skaisti!


Mainīgo vidējo vērtību (MVV) attēlošana grafikā

Esam apguvuši dažas pamatfunkcijas. Tagad ķersimies pie pirmā pielāgotā indikatora – eksponenciālās mainīgās vidējās vērtības jeb EMVV. Šis ir vērtīgs rīks, jo ļauj atsijāt nevajadzīgo tirgus informāciju un izlīdzināt cenas kustību. 

EMVV nedaudz atšķiras no vienkāršās mainīgās vidējās vērtības (VMVV), jo lielāka nozīme tiek piešķirta nesenākiem datiem. Šis indikators parasti ir jutīgāks pret pēkšņām cenas kustībām un bieži tiek izmantots īstermiņa darījumiem (piemēram, dienas tirdzniecībā).


Vienkāršā mainīgā vidējā vērtība (VMVV)

Mēs varētu attēlot grafikā arī VMVV, lai varētu vēlāk tās abas salīdzināt. Pievieno skriptam šo rindiņu:

plot(sma(close, 10))

Tādējādi grafikā tiek attēlota iepriekšējo desmit dienu vidējā vērtība. Pamaini iekavās norādīto skaitli, lai apskatītu, kā mainās līkne pie atšķirīga ilguma.


Iepriekšējo 10 dienu vienkāršā mainīgā vidējā vērtība

VMVV, pamatojoties uz iepriekšējo desmit dienu datiem.


Eksponenciālā mainīgā vidējā vērtība (EMVV)

EMVV indikatoru ir nedaudz grūtāk izprast, taču neraizējies. Vispirms rūpīgi apskatīsim formulu:

EMVV = (slēgšanas cena – iepriekšējās dienas EMVV) * reizinātājs – iepriekšējās dienas EMVV

Tātad, ko mēs šeit redzam? Katrai dienai tiek aprēķināta jauna mainīgā vidējā vērtība, pamatojoties uz iepriekšējās dienas EMVV. Reizinātājs "sver" pēdējo periodu un tiek aprēķināts ar šādu formulu:

Reizinātājs = 2 / (EMVV garums + 1)

Līdzīgi kā ar vienkāršo mainīgo vidējo vērtību, arī šajā gadījumā ir jānorāda, cik gara būs EMVV. No sintakses skatpunkta, EMVV attēlošanas funkcija ir līdzīga VMVV funkcijai. Attēlosim to līdzās VMVV, lai varētu tās abas salīdzināt:

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


EMVV un VMVV TradingView grafikā

Var redzēt nelielu atšķirību starp abu veidu mainīgajām vidējām vērtībām.


➠ Vēlies sākt izmantot kriptovalūtas? Pērc Bitcoin platformā Binance!


Iebūvētie skripti

Līdz šim mēs rakstījām savu kodu manuāli, lai tu varētu to labāk izprast. Taču tagad apskatīsim funkciju, kas var ietaupīt laiku, jo īpaši tad, ja rakstām sarežģītākus skriptus un nevēlamies to darīt no nulles.

Rediģēšanas rīka augšējā labajā pusē noklikšķināsim uz Jauns. Tiks parādīta nolaižamā izvēlne ar dažādiem tehniskajiem indikatoriem. Noklikšķini uz Eksponenciālā mainīgā vidējā vērtība], lai apskatītu EMVV indikatora pirmkodu.



Eksponenciālā mainīgā vidējā vērtība Pine Script skriptā

Pievienosim to grafikam.


Šis kods atšķiras no mūsu veidotā – kā var redzēt, tajā ir arī funkcijas input(). Tās ir ērtas lietotājam, jo tu vari noklikšķināt uz šī lodziņa...


Grafika rediģēšana TradingView saskarnē


...un viegli mainīt vērtības uznirstošajā logā, noklikšķinot uz iestatījumu ritentiņa.


EMVV ievades datu maiņa


Savā nākamajā skriptā pievienosim dažas funkcijas input(), lai to nodemonstrētu.


Relatīvā spēka indeksa (RSI) indikatora attēlošana grafikā

Relatīvā spēka indekss (RSI) ir vēl viens svarīgs tehniskās analīzes indikators. To dēvē par dinamikas indikatoru, jo tas mēra aktīvu iegādes un pārdošanas intensitāti. RSI tiek izteikts skalā no 0 līdz 100, un tas informē investorus par to, vai aktīvi ir pārvērtēti vai nenovērtēti. Parasti uzskata, ka aktīvs ir nenovērtēts, ja tā rādītājs nepārsniedz 30, vai pārvērtēts, ja rādītājs ir lielāks vai vienāds ar 70.

Atverot sadaļu Jauns > RSI stratēģija, vari par to pārliecināties. Parasti RSI mēra 14 vienību periodos (proti, 14 dienu vai 14 stundu periodā), taču tu vari pielāgot šo iestatījumu atbilstoši savai stratēģijai.

Pievienosim to grafikam. Tagad tev vajadzētu redzēt vairākas bultiņas (ko definē funkcija strategy.entry() kodā). RsiLE norāda uz iespēju atvērt aktīvam garo pozīciju, jo tas, iespējams, ir nenovērtēts. RsiSE norāda uz iespējamiem īso pozīciju atvēršanas brīžiem, kad aktīvs ir pārvērtēts. Ņem vērā, ka, tāpat kā ar visiem indikatoriem, tev nevajadzētu uzskatīt šos indikatorus kā garantiju, ka cenas pazemināsies vai paaugstināsies.


Retrospektīvā pārbaude

Pastāv veids, kā pārbaudīt mūsu pielāgotos indikatorus. Lai gan iepriekšējie rezultāti negarantē rezultātus nākotnē, skriptu retrospektīvā pārbaude var sniegt priekšstatu par to, cik efektīvi tie spēj uztvert signālus. 

Zemāk apskatīsim vienkārša skripta piemēru. Mēs izveidosim vienkāršu stratēģiju, atbilstoši kurai tiks atvērta garā pozīcija brīdī, kad BTC cena nokritīs zem 11 000 $, un aizvērsim pozīciju, kad cena pārsniegs 11 300 $. Mēs varam redzēt, cik ienesīga šī stratēģija būtu bijusi vēsturiski.

//@version=4 strategy("ToDaMoon", overlay=true) enter = input(11000) exit = input(11300) price = close if (price = exit)     strategy.close_all(comment="SellTheNews")Šajā gadījumā mēs definējām pozīcijas atvēršanu jeb entry un pozīcijas aizvēršanu jeb exit kā mainīgos lielumus – tie abi ir ievades dati, kas nozīmē, ka vēlāk grafikā varam tos mainīt. Mēs iestatījām arī mainīgo lielumu "cena" jeb price, kas atbilst katra perioda slēgšanas cenai. Pēc tam ir norādīta noteikta loģika, izmantojot noteikumus ar if ("ja"). Ja izpildās iekavās norādītais nosacījums, tad tiek izpildīta skripta daļa, kas atrodas zem tā. Pretējā gadījumā tā tiek izlaista.Tātad, ja cena būs zemāka par vēlamo vērtību vai vienāda ar to, pirmais nosacījums tiks novērtēts kā patiess un tiks atvērta garā pozīcija. Ja cena būs vienāda ar vēlamo vērtību vai to pārsniegs, tiks izpildīta otra skripta daļa un visas atvērtās pozīcijas tiks aizvērtas. Mēs atzīmēsim grafikā bultiņas, lai norādītu pozīciju atvēršanas un aizvēršanas brīžus, tāpēc esam norādījuši ar komentāra parametru comment, kā šos punktus apzīmēt (šajā piemērā: "BuyTheDip" un " SellTheNews"). Nokopē kodu un pievieno to grafikam.
Tagad grafikā ir redzami šie indikatori. Iespējams, būs nepieciešams veikt tālummaiņu.
TradingView automātiski piemēro tavus noteikumus senākiem datiem. Tāpat pamanīsi, ka notiek pārslēgšanās no Pine Editor uz stratēģijas pārbaudes cilni. Tādējādi tu vari redzēt pārskatu par savu iespējamo peļņu, tirdzniecības darījumu sarakstu un to individuālos rezultātus.
Pozīcijas, kuras tika atvērtas un aizvērtas.
Apkoposim iegūtās zināšanasIr pienācis laiks rakstīt savu skriptu, izmantojot dažus no apgūtajiem jēdzieniem. Mēs apvienosim EMVV un RSI un izmantosim šīs vērtības, lai iekrāsotu sveces, iegūstot viegli vizualizējamu informāciju. To nevajadzētu uztvert kā finanšu padomu – nav viena pareizā veida, kā izmantot šo indikatoru. Kā ar visiem citiem indikatoriem, ir ieteicams to izmantot kombinācijā ar citiem rīkiem, lai izstrādātu savu stratēģiju.Tagad pievērsīsimies sava jaunā skripta izstrādei. Noņem no grafika visus savus indikatorus un paslēp arī Bitcoin/BUSD grafiku, lai mūsu priekšā būtu tīrs audekls, ar ko strādāt.Vispirms nosauksim mūsu darbu. Vari piešķirt tam jebkādu nosaukumu, tikai atceries, ka ir jāiestata overlay=true.study(title="Binance Akadēmijas skripts", overlay=true)Atceries EMVV formulu, kuru iepriekš apskatījām. Mums ir jānorāda reizinātājs ar EMVV garumu. Iestatīsim ievades datus vesela skaitļa formātā (bez cipariem aiz komata). Norādīsim arī minimālo vērtību (minval) un noklusējuma vērtību (defval).study(title="Binance Akadēmijas skripts", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
Izmantojot šo jauno mainīgo, varam aprēķināt EMVV katrai svecei mūsu grafikā:study(title="Binance Akadēmijas skripts", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength)
Lieliski! Tagad pievērsīsimies RSI. Līdzīgā veidā noteiksim tā garumu:study(title="Binance Akadēmijas skripts", 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)Un tagad varam to aprēķināt:study(title="Binance Akadēmijas skripts", 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)Šajā brīdī pievienosim loģiku, kas iekrāso sveces atkarībā no EMVV un RSI vērtībām. Pieņemsim situāciju, kad (a) sveces slēgšanas cena pārsniedz EMVV un (b) RSI pārsniedz 50.Kāpēc? Jo tu varētu izlemt vienlaicīgi izmantot abus šos indikatorus, lai palīdzētu tev izvēlēties brīdi Bitcoin īso vai garo pozīciju atvēršanai. Piemēram, tu varētu uzskatīt, ka, ja abi šie nosacījumi tiek izpildīti, tas ir labs brīdis, lai atvērtu garu pozīciju. Vai otrādi – tu varētu izmantot šo informāciju, lai zinātu, kad neatvērt īso pozīciju – pat tad, ja citi indikatori liecina par pretējo.Tātad mūsu nākamā rindiņa būs šāda:study(title="Binance Akadēmijas skripts", 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.redTulkojot to vienkāršā valodā, mēs būtībā pasakām, ka tad, ja EMVV vērtība pārsniegs slēgšanas cenu un RSI rādītājs pārsniegs 50, svece tiks iekrāsota zaļā krāsā. Pretējā gadījumā sveces krāsa būs sarkana. Un tagad atzīmēsim EMVV:study(title="Binance Akadēmijas skripts", 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, "EMVV")Visbeidzot, atzīmēsim sveces, obligāti iekļaujot arī krāsas parametru color:study(title="Binance Akadēmijas skripts", 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, "EMVV") plotcandle(open, high, low, close, color=colors)Un skripts ir gatavs! Pievieno to grafikam, lai redzētu, kā tas darbojas.
BTC/BUSD grafiks ar EMVV/RSI indikatoru.
NoslēgumāŠajā rakstā apskatījām dažus vienkāršus piemērus tam, kā var izmantot TradingView Pine Editor rīku. Tagad tev vajadzētu spēt pārliecinoši izveidot vienkāršas anotācijas cenas grafikos, lai iegūtu papildu informāciju, izmantojot savus indikatorus.Šajā rakstā pievērsāmies vien pāris indikatoriem, taču var viegli veidot arī sarežģītākus skriptus, atlasot skriptu sagataves sadaļā Jauns vai rakstot skriptu patstāvīgi.Vēlies nedaudz iedvesmas? Šie raksti varētu sniegt idejas tavam nākamajam projektam:Īsa pamācība par parabolisko SAR indikatoruCeļvedis Fibonači korekcijas rīka apguveiApsteidzošo un atpaliekošo indikatoru skaidrojumsMACD indikatora skaidrojums