Hoe maak je TA-indicatoren op TradingView
Hoe maak je TA-indicatoren op TradingView
StartpaginaArtikelen

Hoe maak je TA-indicatoren op TradingView

Geavanceerd
2w ago
12m

Introductie

Zonder de juiste handels hulpmiddelen kunt u geen effectieve  technische analyse uitvoeren. Een sterke  handelsstrategie helpt u  veelvoorkomende fouten te voorkomen, uw  risicobeheer te verbeteren en uw vermogen om kansen te identificeren en te benutten te vergroten.
Voor velen is  TradingView het go-to-kaartplatform. De krachtige HTML5-webtoepassing biedt een grote hoeveelheid technische analyse hulpmiddelen en wordt door miljoenen gebruikt om bewegingen in de  Forex,  cryptocurrency en traditionele aandelenmarkten te volgen.
TradingView heeft veel krachtige functies: het stelt ons in staat activa op tal van handelsplatforms te volgen en handelsideeën te publiceren binnen zijn sociale netwerk. In dit artikel zullen we ons concentreren op de aanpasbaarheid ervan. We gebruiken  Pine Script, de eigen programmeertaal van TradingView, die ons gedetailleerde controle geeft over onze kaartlay-outs.

Laten we beginnen!


Wat is Pine Script?

Pine Script is een scripttaal die kan worden gebruikt om uw TradingView-grafieken te wijzigen. Het platform biedt je al veel functies om dit te doen, maar met Pine Script kun je nog een stap verder gaan. Of je nu de kleuren van je  candlesticks wilt veranderen of een nieuwe strategie wilt testen, de Pine Editor stelt je in staat om je real-time grafieken naar eigen inzicht aan te passen.
De code zelf is uitstekend gedocumenteerd, dus bekijk de  gebruikershandleiding voor meer informatie. Ons doel in deze tutorial is om enkele basisprincipes te bespreken en indicatoren te introduceren die van pas kunnen komen bij  cryptocurrency-handel.


De Beginselen

Het is ongelooflijk eenvoudig om aan de slag te gaan met Pine Script. Elke code die we schrijven, wordt uitgevoerd op de servers van TradingView, zodat we toegang hebben tot de editor en onze scripts kunnen ontwikkelen vanuit een browser zonder dat er extra download of configuratie vereist is.

In deze tutorial gaan we het valutapaar Bitcoin/Binance USD ( BTCBUSD) in kaart brengen. Als je er nog geen hebt, ga je gang en maak je een gratis account aan (er is ook een pro-abonnement beschikbaar, maar dit is niet nodig voor deze handleiding). 
Volg  deze link, en je ziet een grafiek die er ongeveer als volgt uitziet:


De chart vanuit de link zal waarschijnlijk meer up-to-date zijn.


Hier willen we de  volledig uitgeruste grafiek krijgen door op de knop te klikken om deze te openen. Dat geeft ons een veel gedetailleerder beeld, tekengereedschappen en opties om onder andere trendlijnen uit te zetten.


De volledige grafiek. U kunt het tijdsbestek aanpassen door op de weergaven boven de gemarkeerde tabbladen te klikken.


We zullen niet bespreken hoe u de verschillende beschikbare tools kunt gebruiken, maar als u serieus bent over technische analyse, raden we u ten zeerste aan om er vertrouwd mee te raken. Linksonder (omlijnd in de afbeelding) zie je een paar verschillende tabbladen, klik op  Pine Editor.


De Pine Editor



Deze editor is waar de magie gebeurt. We vertellen wat we willen doen en klikken vervolgens op  Toevoegen aan diagram om onze annotaties hierboven te zien verschijnen. Merk op dat dingen rommelig kunnen worden als we meerdere annotaties tegelijk opnemen, dus we zullen ze tussen de voorbeelden verwijderen ( klik met de rechtermuisknop in de grafiek & Indicatoren verwijderen).
Je kunt zien dat we daar al een paar regels code hebben. Laten we klikken op  Toevoegen aan diagram om te zien wat er gebeurt.



Een tweede grafiek wordt toegevoegd onder het origineel. De nieuwe grafiek geeft dezelfde gegevens weer. Plaats de muisaanwijzer op  Mijn script en klik op het kruisje om het te verwijderen. Laten we nu eens in de code kijken.
study("My Script")
Deze eerste regel is net onze annotatie aan het opzetten. Het vereist alleen de naam die u de indicator wilt noemen (in dit geval My Script), maar er zijn ook enkele optionele parameters die we kunnen toevoegen. Een daarvan is  overlay, die TradingView vertelt om de indicator op de bestaande grafiek te plaatsen (in plaats van in een nieuw segment). Zoals je kunt zien in ons eerste voorbeeld, is het standaard  false. Hoewel we het nu niet in actie zullen zien, voegt  overlay = true de indicator toe aan het bestaande diagram.
plot(close)
Deze regel is de instructie om de slotkoers van  Bitcoin uit te zetten.  plot geeft ons eenvoudig een lijndiagram, maar we kunnen ook kandelaars en balken weergeven, zoals we binnenkort zullen zien. 

Laten we nu het volgende proberen:

//@version=4
study("My Script", overlay=true)
plot(open, color=color.purple)
Zodra u dit hebt toegevoegd, zou u een tweede diagram moeten zien (dat eruitziet als het origineel naar rechts is verschoven). Het enige wat we hebben gedaan, is in plaats daarvan de  open prijs uitzetten, en aangezien de huidige dag open is, is het de dag van de vorige dag, is het logisch dat deze een identieke vorm hebben.
Oke! Laten we de huidige annotaties verwijderen (onthoud dat we dat doen door met de rechtermuisknop te klikken en op  Indicatoren verwijderen te drukken). Plaats de muisaanwijzer op  Bitcoin / BUSD en klik op de knop  Verbergen om ook de huidige grafiek te wissen.

Veel handelaren geven de voorkeur aan candlestick-grafieken, omdat ze ons meer informatie geven dan een simpele plot zoals we net deden. Laten we ze vervolgens toevoegen.

//@version=4
study("My Script", overlay=true)
plotcandle(open, high, low, close)
Het is een goed begin, maar het gebrek aan kleuren maakt het een beetje saai. Idealiter zouden we rode kaarsen moeten hebben als de opening groter is dan de sluiting voor het gegeven tijdsbestek, en groene als de sluiting groter is dan de opening. We voegen een regel toe boven de functie  plotcandle ():
//@version=4
study("My Script", overlay=true)
colors = open >= close ? color.red : color.green
plotcandle(open, high, low, close)

Deze kijkt naar elke candlestick en controleert of de opening groter of gelijk is aan de close. Als dat zo is, betekent dit dat de prijzen in de loop van de periode zijn gedaald, dus het zal de kandelaar rood kleuren. Anders kleurt het groen. Wijzig de functie plotcandle () om dit kleurenschema door te geven in:

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

Verwijder de huidige indicatoren als u dat nog niet heeft gedaan, en voeg deze toe aan de grafiek. Nu zouden we iets moeten hebben dat lijkt op een gewone candlestick-grafiek.


Mooi!


Plotting moving averages (MA)

We hebben een aantal basisprincipes. Laten we verder gaan met onze eerste aangepaste indicator, het  exponentieel voortschrijdend gemiddelde, of EMA. Dit is een waardevol hulpmiddel omdat het ons in staat stelt om marktruis weg te filteren en prijsacties glad te strijken. 
EMA verschilt enigszins van het eenvoudig voortschrijdend gemiddelde (SMA) doordat het meer gewicht hecht aan de meest recente gegevens. Het heeft de neiging om meer te reageren op plotselinge bewegingen en wordt vaak gebruikt voor kortetermijnspelen (bijvoorbeeld in day trading).


The simple moving average (SMA)

We kunnen net zo goed de SMA plotten, zodat we de twee daarna kunnen vergelijken. Voeg deze regel toe aan uw script:

plot(sma(close, 10))

We kunnen net zo goed de SMA plotten, zodat we de twee daarna kunnen vergelijken. Voeg deze regel toe aan uw script:


De SMA, gebaseerd op de afgelopen tien dagen.


The exponential moving average (EMA)

De EMA zal wat lastiger zijn om te begrijpen, maar maak je geen zorgen. Laten we eerst de formule opsplitsen:

EMA = (Close - Previous Day’s EMA) * Multiplier - Previous Day’s EMA

Dus, wat zegt dit ons? Welnu, voor elke dag berekenen we een nieuw moving average op basis van dat van de vorige dag. De vermenigvuldiger is wat de meest recente periode weegt, en wordt berekend met de volgende formule:

Multiplier = 2 / (Length of EMA + 1)

Net als bij eenvoudige moving averages, moeten we specificeren hoe lang de EMA zal zijn. Syntactisch is de functie om EMA te plotten vergelijkbaar met die van SMA. Zet het naast de SMA uit, zodat u de twee kunt vergelijken:

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


U kunt een klein verschil zien in de twee soorten MA.



Built-in scripts

Tot nu toe hebben we onze code handmatig geschreven, zodat u er een idee van kunt krijgen. Maar laten we iets introduceren dat ons tijd kan besparen, vooral als we complexere scripts schrijven en we ze niet helemaal opnieuw willen doen.

Klik rechtsboven in uw editor op  Nieuw. Je krijgt een dropdown-menu met allerlei verschillende technische indicatoren. Klik op  Moving Average Exponential om de broncode voor een EMA-indicator te zien.



Ga je gang en voeg dit toe aan de grafiek.


Deze is anders dan die van ons, u zult de  input () -functies opmerken. Deze zijn handig vanuit het oogpunt van bruikbaarheid, aangezien u op dit vakje kunt klikken



... en verander eenvoudig enkele waarden in een pop-upvenster door op  Instellingen te klikken.



We zullen een paar  input () -functies toevoegen in ons volgende script om dit te demonstreren.


Het uitzetten van de Relative Strength Index (RSI) -indicator

De  Relative Strength Index (RSI) is een andere  essentiële indicator in technische analyse. Het staat bekend als een  momentumindicator, wat betekent dat het de snelheid meet waarmee activa worden gekocht en verkocht. Gepresenteerd op een schaal van 0 tot 100, probeert een RSI-score beleggers te informeren over het feit of activa overbought of oversold zijn. Doorgaans kan een activum als oververkocht worden beschouwd als het een score lager dan of gelijk aan 30 heeft, en kan het worden overbought met een score hoger of gelijk aan 70.
Als je naar  Nieuwe RSI-strategie gaat, kun je dit zelf zien. RSI wordt over het algemeen gemeten over periodes van 14 (d.w.z. 14 uur of 14 dagen), maar je bent vrij om die instelling aan te passen aan je eigen strategie.
Voeg dit toe aan de grafiek. U zou nu een paar pijlen moeten zien verschijnen (gedefinieerd door de functie  strategy.entry () in de code).  RsiLE duidt op een potentiële kans om het item  long te geven, aangezien het mogelijk oververkocht is.  RsiSE wijst op mogelijke punten waarop een item  short kan worden gemaakt wanneer het te veel wordt gekocht. Merk op dat u, zoals bij alle indicatoren, niet noodzakelijkerwijs op deze indicatoren moet vertrouwen als onfeilbaar bewijs dat de prijzen zullen dalen / stijgen.


Backtesting

Er is een manier voor ons om onze aangepaste indicatoren te testen. Hoewel in het verleden behaalde resultaten geen garantie zijn voor toekomstige resultaten, kan het testen van onze scripts ons een idee geven van hoe effectief ze signalen oppikken

We geven hieronder een voorbeeld van een eenvoudig script. We gaan een eenvoudige strategie creëren die een longpositie ingaat wanneer de BTC-prijs onder $ 11.000 daalt en de positie verlaat wanneer de prijs $ 11.300 overschrijdt. We kunnen dan zien hoe winstgevend deze strategie historisch zou zijn geweest.

//@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")
Hier hebben we de  entry en  exit gedefinieerd omdat variabelen beide invoer zijn, wat betekent dat we ze later op de kaart kunnen wijzigen. We hebben ook de variabele  prijs ingesteld, die voor elke periode de afsluiting neemt. Dan hebben we wat logica in de vorm van  if -instructies. Als het gedeelte tussen haakjes waar is, wordt het ingesprongen blok eronder uitgevoerd. Anders wordt het overgeslagen.

Dus als de prijs lager is dan of gelijk is aan onze gewenste invoer, evalueert de eerste uitdrukking als waar en openen we een longpositie. Zodra de prijs gelijk is aan of hoger is dan de gewenste exit, wordt het tweede blok geactiveerd en worden alle open posities gesloten

We zullen de grafiek annoteren met pijlen die aangeven waar we zijn binnengekomen/verlaten, dus we hebben gespecificeerd wat we deze punten moeten labelen met de parameter  comment (in dit voorbeeld BuyTheDip en SellTheNews). Kopieer de code en voeg deze toe aan het diagram.


U kunt nu de indicatoren op de kaart zien. Mogelijk moet u uitzoomen.


TradingView past uw regels automatisch toe op oudere gegevens. U zult ook merken dat het overschakelt van de Pine Editor naar het tabblad  Strategietester. Hierdoor krijgt u een overzicht van uw potentiële winst, een lijst met transacties en elk van hun individuele prestaties.


Posities die we hebben ingenomen en zijn uitgestapt.


Samenvatting

Tijd om ons eigen script te schrijven door enkele van de concepten te gebruiken die we tot nu toe hebben gezien. We gaan EMA en RSI combineren en hun waarden gebruiken om kandelaars te kleuren, wat inzichten oplevert die we gemakkelijk kunnen visualiseren

Dit mag niet worden opgevat als financieel advies, er is geen objectief correcte manier om deze indicator te gebruiken. Zoals bij alle andere, moet het met andere tools worden gebruikt om uw eigen strategie te ontwikkelen.

Laten we nu aan ons nieuwe script werken. Verwijder al uw indicatoren uit de grafiek en verberg ook de Bitcoin/BUSD-grafiek, zodat we een schoon canvas hebben om aan te werken.

Laten we beginnen met het definiëren van onze studie. Voel je vrij om het te noemen wat je maar wilt, zorg ervoor dat je  overlay = true instelt.
study(title="Binance Academy Script", overlay=true)
Onthoud onze EMA-formule van eerder. We moeten de vermenigvuldiger voorzien van de lengte van de EMA. Laten we er een  invoer van maken die een geheel getal vereist (dus geen decimalen). We zullen ook een minimum instellen dat het kan zijn ( minval), en een standaardwaarde ( defval).
study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)


Met behulp van deze nieuwe variabele kunnen we de EMA-waarde voor elke kaars in onze grafiek berekenen:

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


Super goed. Op naar de RSI. We zullen het op dezelfde manier een lengte geven:

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)

En nu kunnen we het berekenen:

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)

Laten we in dit stadium de logica samenstellen die de candlesticks kleurt, afhankelijk van de EMA- en RSI-waarden. Laten we een situatie nemen waarin (a) de slotkoers van de candle hoger is dan de EMA en (b) waar de RSI hoger is dan 50.

Waarom? Welnu, u zou kunnen besluiten dat deze indicatoren in combinatie kunnen worden gebruikt om u te vertellen wanneer u Bitcoin moet long of short. U zou bijvoorbeeld kunnen denken dat het voldoen aan beide voorwaarden betekent dat het een goed moment is om een longpositie in te nemen. Of omgekeerd, u zou het kunnen gebruiken om u te informeren wanneer  niet short te gaan, zelfs als andere indicatoren anders aangeven.

Dus onze volgende regel ziet er als volgt uit:

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
Als we dit in gewoon Nederlands vertalen, zeggen we alleen dat als de EMA-waarde hoger is dan de slotkoers  en de RSI-score hoger is dan 50, we de candle groen kleuren. Anders kleuren we het rood. 

Zet vervolgens de EMA uit:

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")
Zet ten slotte de candles in kaart en zorg ervoor dat u de parameter  color opneemt:
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)

En dat is het script! Voeg het toe aan het diagram om het in actie te zien.


Een BTC / BUSD-grafiek met de EMA / RSI-indicator.


Tot slot

In dit artikel hebben we enkele basisvoorbeelden doorgenomen van wat u kunt doen met de Pine Editor van TradingView. Inmiddels zou u zeker moeten zijn van het maken van eenvoudige annotaties in prijsgrafieken om aanvullende inzichten uit uw eigen indicatoren te verkrijgen.

We hebben hier slechts interesse getoond in een paar indicatoren, maar het is gemakkelijk om complexere te bedenken door ofwel de ingebouwde scripts te selecteren uit  Nieuw of door ze zelf te schrijven.

Geen inspiratie? De volgende artikelen bieden u wellicht enkele ideeën voor uw volgende project: