Så här skapar du TA-indikatorer i TradingView
Hem
Artiklar
Så här skapar du TA-indikatorer i TradingView

Så här skapar du TA-indikatorer i TradingView

Medelnivå
Publicerad Aug 28, 2020Uppdaterad Jun 15, 2023
13m

Introduktion

Utan rätt handelsverktyg kan du inte genomföra en effektiv teknisk analys. En stark handelsstrategi hjälper dig att undvika vanliga misstag, förbättra din riskhantering och öka din förmåga att identifiera och dra nytta av möjligheter.

För många är TradingView den bästa diagramplattformen. Den kraftfulla HTML5-webbapplikationen erbjuder ett nav av tekniska analysverktyg och används av miljoner för att följa rörelser på valuta-, kryptovaluta- och traditionella aktiemarknader.

TradingView har många kraftfulla funktioner: det gör att vi kan följa tillgångar över många handelsplattformar och publicera handelsidéer inom dess sociala nätverk. I den här artikeln fokuserar vi på dess anpassningsbarhet. Vi kommer att använda TradingViews eget programmeringsspråk Pine Script, som ger oss detaljerad kontroll över våra diagramlayouter.

Nu kör vi!


Vad är Pine Script?

Pine Script är ett skriptspråk som kan användas för att ändra dina TradingView-diagram. Plattformen ger dig redan många funktioner för att göra detta, men Pine Script låter dig ta allt ett steg längre. Oavsett om du vill ändra färgerna på dina candlestickar eller testa en ny strategi gör Pine Editor det möjligt för dig att anpassa dina realtidsdiagram så som du tycker passar bäst.

Koden i sig är ordentligt dokumenterad, så se till att kolla in användarhandboken för mer information. Vårt mål i denna handledning är att gå igenom några av grunderna och introducera indikatorer som kan vara till nytta för kryptovalutahandel.


Konfigureringen

Det är otroligt enkelt att komma igång med Pine Script. All kod vi skriver körs på TradingViews servrar, så vi kan komma åt redigeraren och utveckla våra skript från en webbläsare – utan att någon extra nedladdning eller konfiguration krävs.

I den här handledningen ritar vi upp valutaparet Bitcoin/Binance USD (BTCBUSD). Om du inte redan har gjort det kan du skapa ett gratis konto (det finns också en pro-prenumeration tillgänglig, men den är inte nödvändig för den här guiden). 

Följ den här länken så ser du ett diagram som liknar detta:


BTCBUSD-diagram på tradingview

Ditt kommer förmodligen att vara en uppdaterad version.


Här vill vi få det fullständiga diagrammet – klicka på knappen för att komma åt det. Det ger oss en mycket mer detaljerad vy, ritverktyg och alternativ för att bland annat rita upp trendlinjer.


Fullständigt diagram på tradingview för BTCBUSD

Det fullständiga diagrammet. Du kan justera tidsperioden genom att klicka på vyerna ovanför de markerade flikarna.


Vi kommer inte att gå igenom hur du använder de olika tillgängliga verktygen, men om du är seriöst intresserad av teknisk analys rekommenderar vi starkt att du bekantar dig med dem. Längst ner till vänster (markerad i bilden) ser du några olika flikar – klicka på Pine Editor.


Pine Editor


skärmbild på pine editor


Det är i redigeringsprogrammet som magin uppstår. I redigeringsprogrammet berättar vi vad vi vill göra och klickar sedan på Lägg till i diagram varpå våra kommentarer visas ovan. Observera att det kan bli rörigt om vi inkluderar flera kommentarer samtidigt, så vi tar bort dem mellan exemplen (högerklicka i diagrammet > Ta bort indikatorer).

Du kan se att vi redan har ett par rader med kod där. Nu klickar vi på Lägg till i diagram för att se vad som händer.


Lägg till första skriptet i tradingview-diagrammet


Ett andra diagram läggs nu till under originalet. Det nya diagrammet representerar samma data. Håll muspekaren över Mitt skript och klicka på korset för att ta bort det. Låt oss nu titta närmare på koden.

study("My Script")

Den här första raden ställer bara in vår kommentar. Den kräver bara namnet som du vill kalla indikatorn ("My Script" i det här fallet), men det finns också några valfria parametrar som vi kan lägga till. En av dessa är overlay, som säger till TradingView att placera indikatorn på det befintliga diagrammet (istället för i ett nytt segment). Som du kan se från vårt första exempel är det som standard false. Även om vi inte kommer att se det hända nu, lägger overlay=true till indikatorn i det befintliga diagrammet.

plot(close)

Denna rad är instruktionen för att rita upp stängningspriset för Bitcoin. Plot ger oss helt enkelt ett linjediagram, men vi kan också visa candlestickar och staplar, vilket vi kommer att se inom kort. 

Låt oss nu prova följande:

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

När du har lagt till detta bör du se ett andra diagram (som ser ut som originalet fast flyttat till höger). Allt vi har gjort är att sätta in öppningspriset istället och eftersom den aktuella dagens öppningspris är föregående dags stängningspris har dessa så klart en identisk form.

Okej! Låt oss ta bort de nuvarande anteckningarna (kom ihåg att vi gör detta genom att högerklicka och välja Ta bort indikatorer). Håll muspekaren över Bitcoin/BUSD och klicka på knappen Dölj för att även rensa det aktuella diagrammet.

Många handlare föredrar candlestick-diagram eftersom de ger oss mer information än en enskild punkt som den vi just gjorde. Låt oss lägga till dem nu. 

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

Det är en bra början, men bristen på färger gör det lite tråkigt. Helst bör vi ha röda ljus när det öppningspriset är högre än stängningspriset för den givna tidsperioden och gröna om stängningspriset överstiger öppningspriset. Vi lägger till en rad ovanför funktionen plotcandle() så här:

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

Denna kod tittar på varje candlestick och kontrollerar om öppningspriset är högre eller lika med stängningspriset. Om så är fallet betyder det att priserna har sjunkit under perioden, så detta färgar din candlestick röd. Annars kommer färgen att bli grön. Ändra funktionen plotcandle() för att använda detta färgschema:

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

Ta bort de aktuella indikatorerna om du inte redan har gjort det och lägg till denna i diagrammet. Nu borde vi ha något som liknar ett vanligt candlestick-diagram.


Candlestick-diagram på tradingview

Snyggt!


Rita upp glidande medelvärden (moving averages/MA)

Nu har vi gått igenom grunderna. Låt oss gå vidare till vår första anpassade indikator – det exponentiella glidande medelvärdet, som på engelska heter Exponential Moving Average och därför förkortas EMA. Detta är ett värdefullt verktyg som gör att vi kan filtrera bort allt marknadsbrus och jämna ut prishändelserna. 

EMA skiljer sig något från det enkla glidande medelvärdet (Simple Moving Average/SMA), eftersom det lägger större vikt vid de senaste uppgifterna. Det tenderar att vara mer reaktivt mot plötsliga rörelser och används ofta för kortsiktig handel (till exempel under dagshandel).


Det enkla glidande medelvärdet (Simple Moving Average/SMA)

Vi kan lika gärna rita upp SMA, så att vi kan jämföra de två. Lägg till den här raden i ditt skript:

plot(sma(close, 10))

Detta ritar upp genomsnittet av de föregående tio dagarna. Justera antalet inom parentesen för att se hur kurvan förändras när du tar hänsyn till olika perioder.


Enkelt glidande medelvärde baserat på de föregående 10 dagarna

SMA, baserat på de föregående tio dagarna.


Det exponentiella glidande medelvärdet (EMA)

EMA är lite svårare att förstå, men oroa dig inte. Låt oss gå igenom formeln först:

EMA = (stängningspriset - föregående dags EMA) * Multiplikator - föregående dags EMA

Ok, så vad säger detta oss? För varje dag beräknar vi ett nytt glidande medelvärde baserat på föregående dags. Multiplikatorn är det som "väger in" den senaste perioden och beräknas med följande formel:

Multiplikator = 2 / (EMA_s längd + 1)

Precis som med enkla glidande medelvärden måste vi ange hur lång EMA kommer att vara. Syntaktiskt liknar funktionen för att rita upp EMA funktionen för SMA. Rita upp det tillsammans med SMA så att du kan jämföra de två:

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


EMA och SMA på ett tradingview-diagram

Du kan se en liten skillnad i de två MA-typerna.


➠ Vill du komma igång med kryptovaluta? Köp bitcoin på Binance!


Inbyggda skript

Hittills har vi skrivit vår kod manuellt, så att du kan få en känsla för hur det fungerar. Men låt oss presentera något som kan spara tid, särskilt om vi skriver mer komplexa skript och inte vill skriva dem från grunden.

Klicka på Ny högst upp till höger i din redigerare. Du ser nu en rullgardinsmeny med alla typer av olika tekniska indikatorer. Klicka på Moving Average Exponential för att se källkoden för en EMA-indikator.



Exponentiellt glidande medelvärde i pine script

Lägg nu till detta i diagrammet.


Den här skiljer sig från vår – du kommer att märka funktionerna input(). Dessa är bra ur ett användbarhetsperspektiv, eftersom du kan klicka på den här rutan …


Ändra ett diagram i tradingview-gränssnittet


… och enkelt ändra några av värdena i ett popup-fönster genom att klicka på hjulet inställningar.


ändra indata på EMA


Vi lägger till ett par input()-funktioner i vårt nästa skript för att visa detta.


Rita upp indikatorn för relativt styrkeindex (RSI)

Relativt styrkeindex (RSI) är en annan viktig indikator inom teknisk analys. Den är känd som en momentumindikator, vilket innebär att den mäter takten med vilken tillgångar köps och säljs. RSI-poängen mäts på en skala från 0 till 100 och försöker informera investerare om huruvida tillgångar är överköpta eller översålda. Vanligtvis kan en tillgång betraktas som översåld om den har mindre eller lika med 30 poäng, och den kan vara överköpt med större eller lika med 70 poäng.

Om du går till New > RSI Strategy kan du se detta själv. RSI mäts vanligtvis i perioder på 14 (det vill säga 14 timmar eller 14 dagar), men du kan själv justera den inställningen så att den passar din egen strategi.

Lägg till detta i diagrammet. Du bör se några pilar som visas nu (vilka definieras av funktionen strategy.entry() i koden). RsiLE indikerar en potentiell möjlighet att köpa tillgången, eftersom den kan vara översåld. RsiSE ger möjliga punkter där tillgången kan blankas när den är överköpt. Observera att du, precis som med alla andra indikatorer, inte nödvändigtvis bör lita på dessa som idiotsäkra bevis på att priserna kommer att öka eller sjunka.


Vi testar våra skript

Det finns ett sätt för oss att testa våra anpassade indikatorer. Även om tidigare resultat inte är någon garanti för framtida resultat, kan ett test av våra skript ge oss en uppfattning om hur effektiva de är på att ge oss signaler. 

Vi ger ett exempel på ett enkelt skript nedan. Vi kommer att skapa en enkel strategi som går in i en lång position när BTC-priset faller under 11 000 dollar och lämnar positionen när priset överstiger 11 300 dollar. Vi kan då se hur lönsam denna strategi skulle ha varit, historiskt sett.

//@version=4 strategy("ToDaMoon", overlay=true) enter = input(11000) exit = input(11300) price = close if (price = exit)     strategy.close_all(comment="SellTheNews")Här har vi definierat ingång och utgång som variabler - båda är indata, vilket innebär att vi kan ändra dem i diagrammet senare. Vi ställer också in prisvariabeln, som tar stängningspriset för varje period. Sedan har vi lite logik i form av if-uttalanden. Om delen inom parentes är sann, kommer det indragna blocket under den att köras. Annars hoppas detta över.Så om priset är mindre än eller lika med det vi angav utvärderas det första uttrycket som sant och vi öppnar en lång position (köper). När priset är lika med eller överstiger det vi angav aktiveras det andra blocket och stänger alla öppna positioner. Vi kommenterar diagrammet med pilar som visar var vi har gått in i och ut ur en position, så vi har angett vad som ska märka dessa punkter med kommentarsparametern (i det här exemplet "BuyTheDip" och "SellTheNews"). Kopiera koden och lägg till den i diagrammet.
Du kan nu se indikatorerna i diagrammet. Du kanske behöver zooma ut.
TradingView tillämpar automatiskt dina regler på äldre data. Du kommer även märka att den växlar från Pine Editor till fliken Strategy Tester . Detta gör att du kan få en översikt över dina potentiella vinster, en lista över handel och var och en av deras individuella resultat.
Positioner vi har gått in i och ut ur.
Prova allt tillsammansDet är nu dags att skriva vårt eget skript genom att använda några av de begrepp vi har sett hittills. Vi ska kombinera EMA och RSI och använda deras värderingar för att färga candlestickar, vilket ger statistik som vi enkelt kan visualisera. Detta ska inte tolkas som ekonomisk rådgivning – det finns inget objektivt korrekt sätt att använda denna indikator. Precis som med alla andra bör den användas med andra verktyg, så att du kan utveckla din egen strategi.Låt oss nu arbeta med vårt nya skript. Ta bort alla dina indikatorer från diagrammet och dölj dessutom Bitcoin/BUSD-diagrammet, så att vi har en ren yta att arbeta med.Låt oss börja med att definiera vår studie. Namnge den gärna vad du vill, se bara till att ange overlay=true.study(title="Binance Academy Script", overlay=true)Kom ihåg vår EMA-formel från tidigare. Vi måste förse multiplikatorn med EMA:s längd. Låt oss göra detta till indata som kräver ett heltal (inga decimaler alltså). Vi anger även ett minimum som det kan ha (minval) och ett standardvärde (defval).study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
Med hjälp av denna nya variabel kan vi beräkna EMA-värdet för varje ljus i vårt diagram:study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength)
Bra! Nu går vi vidare till RSI. Vi ger den en längd på ett liknande sätt: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)Och nu kan vi beräkna detta: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)Låt oss nu sätta ihop logiken som färgar våra candlestickar beroende på EMA- och RSI-värdena. Vi använder en situation där (a) ljusets stängningspris överstiger EMA och (b) där RSI är över 50.Varför? För att du kan bestämma att dessa indikatorer kan användas tillsammans, för att ange när du ska köpa eller blanka bitcoin. Du kanske till exempel tror att uppfyllandet av båda dessa villkor innebär att det är ett bra läge att köpa. Eller så kan du använda den för att informera dig om när du inte ska blanka, även om andra indikatorer säger något annat.Nästa rad kommer att se ut så här: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.redOm vi översätter detta till vanlig svenska säger vi helt enkelt att om EMA-värdet överstiger stängningspriset och RSI-poängen överstiger 50, kommer vi att färga ljuset grönt. Annars blir färgen grön. Nu ska vi rita upp ett 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")Slutligen ska vi rita upp ljusen och se till att inkludera parametern för färg: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)Och det är hela skriptet! Lägg till det i diagrammet för att se hur det fungerar.
Ett BTC/BUSD-diagram med EMA/RSI-indikatorn.
SammanfattningsvisI den här artikeln har vi gått igenom några grundläggande exempel på vad du kan göra med TradingViews Pine Editor. Nu bör du kunna göra enkla kommentarer i prisdiagram för att få ytterligare statistik från dina egna indikatorer.Vi har bara gått igenom några indikatorer här, men det är enkelt att göra några som är lite mer komplexa – antingen genom att välja de inbyggda skripten från New eller genom att skriva dem själv.Vill du ha lite inspiration? Följande artiklar kan säkert ge dig några idéer för ditt kommande projekt:En kort guide om den paraboliska SAR-indikatornEn guide till att bemästra Fibonacci RetracementVi förklarar ledande och eftersläpande indikatorerVi förklarar MACD-indikatorn