Ce este Pine Script?
Pine Script este un limbaj de scripting folosit pentru a vă modifica graficele pe platforma TradingView. Platforma vă oferă multe funcții pentru a face acest lucru, dar Pine Script vă permite să vă îndreptați spre obiectivul dvs. Indiferent dacă doriți să schimbați culorile graficelor de acțiune a prețurilor sau să testați o nouă strategie, editorul Pine vă va ajuta să vă personalizați graficele în timp real după cum credeți de cuviință.
Codul este bine documentat, așa că asigurați-vă că consultați ghidul utilizatorului pentru mai multe informații. Prin acest tutorial, ne propunem să discutăm câteva elemente de bază și să oferim indicatori care pot fi utili în tranzacționarea cu monede digitale.
pregătire
Este foarte ușor să începeți să utilizați Pine Script. Orice cod pe care îl scriem rulează pe serverele TradingView, astfel încât să putem folosi editorul și să dezvoltăm scripturi din browser – nu este necesară descărcarea sau configurarea suplimentară.
În acest tutorial, vom crea un grafic pentru perechea valutară Bitcoin/Binance USD (BTCBUSD). Dacă nu aveți deja un cont, puteți continua și să creați unul gratuit (este disponibil și un abonament profesional, dar nu este necesar pentru acest ghid).
Urmați acest link și veți vedea o diagramă similară cu următoarea:

Graficul dvs. va fi probabil mai sofisticat.
Aici ne dorim o diagramă complet - faceți clic pe butonul pentru a-l accesa. Acest lucru ne oferă o imagine de ansamblu mai detaliată și instrumente de desen, precum și opțiuni pentru trasarea liniilor de tendință, printre alte caracteristici.

Grafic complet prezentat. Puteți edita intervalul de timp făcând clic pe vizualizările de deasupra filelor evidențiate.
Nu vom discuta despre cum să folosiți diferitele instrumente disponibile, dar dacă sunteți interesat de analiza tehnică, vă recomandăm să le verificați pentru a vă familiariza cu ele. În stânga jos (evidențiat în imagine), veți găsi câteva file diferite – faceți clic pe Pine Editor.
Pine editor

Acest editor vă oferă un set de caracteristici fermecătoare. Îi vom spune ce vrem să facem, apoi facem clic pe Adăugare la diagramă pentru a vedea comentariile noastre apar în partea de sus. Rețineți că graficul poate deveni neîngrijit dacă introduceți mai multe comentarii simultan, așa că le vom elimina între exemple ( faceți clic dreapta pe diagramă > Eliminați indicatorii).
Puteți vedea că avem deja două linii de coduri. Să facem clic pe Adăugare la diagramă pentru a vedea ce se întâmplă.

Un al doilea grafic este adăugat sub diagrama originală. Noul grafic va reprezenta aceleași date. Deplasați mouse-ul peste butonul My Script și faceți clic pe punctele de suspensie pentru a-l elimina. Să discutăm codul mai detaliat.
studiază ("Scriptul meu")
Prima linie stabilește comentariile noastre. Este nevoie doar de numele pe care doriți să-l numească indicatorul („Scriptul meu”, în acest caz), dar există și câteva variabile opționale pe care le putem adăuga. O astfel de variabilă este suprapunerea, care îi spune platformei să plaseze indicatorul pe graficul curent (mai degrabă decât pe un sector nou). După cum puteți vedea în primul exemplu, este implicit false. Deci, nu îl vom vedea rulând acum, overlay=true adaugă indicatorul la graficul curent.
complot (închidere)
Această linie este instrucțiunea de a reprezenta un grafic prețul de închidere al Bitcoin. Graficul ne oferă o diagramă cu linii, dar putem afișa și acțiunea prețului și diagrame cu bare, așa cum vom vedea într-un moment.
Acum să încercăm următoarele:
//@version=4 studiu(„Scriptul meu”, suprapunere=adevărat) complot(deschis, culoare=culoare.violet)
Odată ce adăugați acest simbol, ar trebui să vedeți un al doilea grafic (se pare că diagrama originală s-a mutat în partea dreaptă). Tot ce am făcut a fost să tragem prețul de deschidere, deoarece prețul de deschidere din ziua curentă este prețul de închidere din ziua anterioară, este logic să aibă o formă similară.
Bun! Să scăpăm de comentariile existente (rețineți că facem acest lucru făcând clic dreapta și apăsând Eliminați indicatori). Mutați mouse-ul peste BTC/BUSD și apoi faceți clic pe butonul Ascunde pentru a șterge și graficul curent.
Mulți comercianți preferă diagramele cu acțiunea prețului, deoarece ne oferă mai multe informații decât un simplu desen așa cum tocmai am făcut-o. Să le adăugăm mai jos.
//@version=4 studiu(„Scriptul meu”, suprapunere=adevărat) plotcandle(deschis, înalt, scăzut, închidere)
Un început bun, dar lipsa de culoare îl face puțin plictisitor. În mod ideal, ar trebui să avem lumânări roșii atunci când prețul de deschidere este mai mare decât prețul de închidere într-un anumit interval de timp și lumânări verzi când prețul de închidere depășește prețul de deschidere. Vom adăuga o linie deasupra proprietății candle plot():
//@version=4 studiu(„Scriptul meu”, suprapunere=adevărat) culori = deschis >= închidere ? color.red : culoare.verde plotlumânare (deschis, înalt, scăzut, închidere)
Acest lucru se întâmplă în fiecare diagramă de acțiune a prețului, precum și verificarea dacă prețul de deschidere este mai mare sau egal cu prețul de închidere. În acest caz, înseamnă că prețurile au scăzut într-o anumită perioadă, deci graficul acțiunii prețului va fi colorat în roșu. În caz contrar, va fi colorat în verde. Modificați funcția drawcandle() pentru a introduce schema de culori:
//@version=4 studiu(„Scriptul meu”, suprapunere=adevărat) culori = deschis >= închidere ? color.red: color.green plotcandle (deschis, înalt, scăzut, închidere, culoare = culori)
Eliminați indicatorii existenți dacă nu i-ați eliminat deja și adăugați acest indicator în diagramă. Ar trebui să avem ceva care să reprezinte un grafic normal al acțiunii prețului.

Desenarea mediilor mobile (MA)
Avem câteva elemente de bază mai jos. Să trecem la primul indicator personalizat – Media mobilă exponențială sau EMA. Este un instrument valoros care ne permite să eliminăm distragerile pieței și să facem mai ușor să înțelegem mișcările pieței.
Media mobilă exponențială este ușor diferită de media mobilă simplă (SMA), deoarece această medie se concentrează pe cele mai recente date. Tinde să reacționeze la mișcările bruște și este de obicei folosit în tranzacții pe termen scurt (trading zilnic, de exemplu).
Medie mobilă simplă (SMA)
De asemenea, am putea desena o medie mobilă simplă, așa că ar trebui să le comparăm mai târziu. Adăugați această linie la scriptul dvs.:
plot(sma(close, 10))
Aceasta reprezintă media ultimelor 10 zile. Ajustați numărul din paranteze pentru a vedea cât de mult se schimbă curba atunci când sunt luate în considerare diferite perioade.

Media mobilă simplă se bazează pe ultimele 10 zile.
Media mobilă exponențială (EMA)
Media mobilă exponențială poate fi puțin dificil de înțeles, dar nu vă faceți griji. Să luăm în considerare ecuația în detaliu:
EMA = (Închidere - EMA din ziua anterioară) * Multiplicator - EMA din ziua anterioară
Deci ce ne spune asta? Ei bine, noua medie mobilă a fiecărei zile este calculată pe baza mediei mobile a zilei precedente. Multiplicatorul este „ponderea datelor” din cea mai recentă perioadă și este calculat prin următoarea ecuație:
Multiplicator = 2 / (Lungimea EMA + 1)
Pentru mediile mobile simple, trebuie să stabilim cât de mult va dura media mobilă exponențială. Din punct de vedere structural, graficul mediei mobile exponențiale este similar cu graficul mediei mobile simple. Desenați-o lângă media mobilă simplă, astfel încât să le puteți compara:
//@version=4 studiu(„Scriptul meu”, suprapunere=adevărat) plot(sma(close, 10)) plot(ema(close,10))

Puteți vedea o mică diferență între cele două tipuri de medii mobile.
Scripturi încorporate
Am scris de mână codul până acum, așa că sunteți familiarizat cu el. Dar haideți să oferim ceva care vă va ajuta să economisiți timp, mai ales dacă scriem scripturi mai complexe și nu vrem să o facem de la zero.
Faceți clic pe butonul Nou situat în partea dreaptă sus a editorului dvs. Veți vedea un meniu derulant cu toate tipurile diferite de indicatori tehnici. Faceți clic pe Exponential Moving Average pentru a vedea codul sursă pentru indicatorul Exponential Moving Average.

Apoi adăugați-l în diagramă.
Acesta este diferit de propriile noastre coduri – veți observa proprietățile input(). Este excelent pentru utilizare, deoarece puteți face clic pe această casetă...

De asemenea, puteți modifica cu ușurință unele dintre valorile din fereastra pop-up făcând clic pe rotița de setări.

Vom adăuga două proprietăți input() în următorul script pentru a demonstra cum se face acest lucru.
Graficul indicelui de forță relativă (RSI).
Indicele de putere relativă (RSI) este unul dintre indicatorii de bază în analiza tehnică. Este cunoscut ca un indicator de impuls, ceea ce înseamnă că măsoară rata la care activele sunt cumpărate și vândute. Evaluare pe o scară de la 0 la 100, scorul RSI încearcă să spună investitorilor dacă un activ este supracumpărat sau supravândut. De obicei, un activ este considerat supravândut dacă scorul său este mai mic sau egal cu 30 și este considerat supracumpărat dacă scorul său este mai mare sau egal cu 70.
Dacă accesați Nou > Strategie RSI, puteți vedea acest lucru personal. RSI este măsurat pe 14 perioade (adică 14 ore sau 14 zile), dar aveți libertatea de a ajusta această setare pentru a se potrivi propriei strategii.
Adăugați asta la diagramă. Ar trebui să vedeți acum câteva săgeți (identificate prin proprietatea enter.strategy() din cod). RsiLE indică oportunități potențiale de cumpărare pentru activ, deoarece acesta poate deveni într-o zonă de supravânzare. În timp ce RsiSE evidențiază punctele potențiale de vânzare ale activului atunci când se află în zona de supracumpărare. Vă rugăm să rețineți că, la fel ca toți indicatorii, nu ar trebui să se bazeze pe aceștia ca dovadă definitivă a creșterii sau scăderii prețurilor.
Efectuați un backtest
Există o modalitate care ne permite să testăm indicatori personalizați. Deși performanța trecută nu este o garanție a rezultatelor viitoare, procesul de backtesting scripturilor ne oferă o idee despre cât de eficiente sunt acestea la recepția semnalelor.
Mai jos este un exemplu de script simplu. Vom crea o strategie simplă pentru a intra într-o tranzacție lungă atunci când prețul Bitcoin scade sub 11.000 USD și vom ieși din tranzacție atunci când prețul depășește 11.300 USD. Astfel, putem ști cât de profitabilă a fost această strategie din punct de vedere istoric.
//@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 (preț >= ieșire) strategy.close_all(comment="SellTheNews")
Aici am definit punctele de intrare și de ieșire ca variabile - ambele sunt intrări, ceea ce înseamnă că le putem modifica pe diagramă mai târziu. De asemenea, am stabilit o variabilă de preț, care înregistrează prețul de închidere pentru fiecare perioadă. Astfel, există ceva logic în utilizarea instrucțiunilor if. Dacă partea dintre paranteze este adevărată, blocul indentat va fi activat. În caz contrar, va fi omis.
De asemenea, dacă prețul scade sau este egal cu prețul de intrare dorit, expresia va fi evaluată ca adevărată și vom deschide o tranzacție de cumpărare. Odată ce prețul este egal sau depășește prețul de ieșire necesar, al doilea bloc va fi activat, precum și închiderea tuturor tranzacțiilor deschise.
Vom adăuga comentarii la diagramă folosind săgeți pentru a indica punctele de intrare și de ieșire, așa că am denumit aceste puncte în cadrul de comentarii (în acest exemplu, „Buy Dip” și „Sell on News”). Copiați simbolul și adăugați-l în diagramă.

Acum puteți vedea indicatorii pe diagramă. Poate fi necesar să micșorați pentru a arunca o privire.
TradingView vă aplică regulile datelor mai vechi. Veți observa, de asemenea, o tranziție de la editorul Pine la fila Strategy Tester. Acest lucru vă permite să vedeți o imagine de ansamblu asupra profiturilor potențiale, o listă de tranzacții și performanța acestora.

Tranzacții în care am intrat și am ieșit.
Conectați elementele împreună
Este timpul să scriem propriul program folosind unele dintre conceptele descrise până acum. Vom combina atât Media mobilă exponențială, cât și RSI folosind valoarea lor pentru a colora graficele de acțiune a prețului și pentru a obține o perspectivă imaginabilă.
Acest lucru nu trebuie interpretat ca un sfat financiar, deoarece nu există o modalitate corectă definită în mod obiectiv de a utiliza acest indicator. Similar tuturor celorlalți indicatori, acest indicator ar trebui utilizat împreună cu alte instrumente pentru a vă dezvolta strategia de investiții.
Să începem să lucrăm la noul script. Eliminați toți indicatorii din grafic și ascundeți și graficul BTC/BUSD, astfel încât să avem un grafic gol cu care să începem să lucrați.
Să începem prin a defini studiul. Puteți folosi orice nume doriți, doar asigurați-vă că setați overlay=true.
studiază(titlu="Scriptul Academiei Binance", suprapunere=adevărat)
Amintiți-vă de ecuația mediei mobile exponențiale despre care am vorbit mai devreme. Trebuie să furnizăm multiplicatorului date pentru perioada pe care o va lua media mobilă exponențială. Să facem din acesta un câmp de intrare care necesită un număr întreg (prin urmare, fără zecimale). De asemenea, vom specifica o valoare minimă (minval) și o valoare implicită (defval).
study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
Putem calcula valoarea EMA pentru fiecare lumânare de pe grafic folosind noua variabilă:
study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength)
uimitor. În ceea ce privește Indicele de rezistență relativă (RSI). Vom intra în perioada într-un mod similar:
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)
Acum putem calcula ca:
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)
În acest moment, ar trebui să știți că culorile graficelor de acțiune a prețului depind de valorile EMA și RSI. Să luăm în considerare un exemplu când (a) prețul de închidere al lumânării traversează EMA și (b) RSI este peste 50.
De ce? Ei bine, puteți decide că acești indicatori pot fi folosiți împreună pentru a vă spune când să cumpărați sau să vindeți Bitcoin. De exemplu, ați putea crede că îndeplinirea ambelor condiții înseamnă că este un moment bun pentru a intra într-o tranzacție lungă. Alternativ, puteți folosi indicatori pentru a vă reaminti când nu ar trebui să vindeți, chiar dacă alți indicatori arată contrariul.
Deci, următoarea linie arată astfel:
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 și rsiVal > 50 ? culoare.verde : culoare.roșu
Dacă traducem acest lucru în limba engleză simplă, înseamnă că dacă EMA depășește prețul de închidere și scorul RSI depășește 50, vom colora lumânarea în verde. În caz contrar, va fi colorat în roșu.
Apoi, graficați media mobilă exponențială:
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 și rsiVal > 50 ? color.green : color.red plot(emaVal, "EMA")
În cele din urmă, desenați lumânările, asigurându-vă că includeți variabila de culoare:
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 și rsiVal > 50 ? color.green : color.red plot(emaVal, "EMA") plotcandle(deschis, înalt, scăzut, închidere, culoare=culori)
Și ai terminat cu scenariul! Adăugați asta în diagramă pentru a-l vedea în acțiune.

Grafic BTC/BUSD folosind EMA/RSI.
Gânduri de încheiere
În acest articol, am analizat câteva exemple de bază despre ceea ce se poate face folosind Editorul Pine de la TradingView. Ar trebui să puteți face comentarii simple asupra graficului de preț pentru a obține informații suplimentare de la indicatorii dvs.
Am evidențiat doar doi indicatori aici, dar este ușor să creați indicatori mai complexi - fie definind din nou scripturile încorporate, fie scriindu-le singur.
Ai nevoie de idei inspiraționale? Următoarele articole vă pot ajuta să obțineți câteva idei pentru următorul dvs. proiect:

