Koda din egen indikator – I
Hittills har du använt indikatorer som redan är färdigskrivna, via funktionen add.indicator(). Nu är det dags att skriva och tillämpa en egen indikator.
Din indikatorfunktion beräknar medelvärdet av två olika indikatorer för att skapa ett RSI på 3,5. Så här fungerar det:
- Ta emot en prisserie.
- Beräkna RSI 3.
- Beräkna RSI 4.
- Returnera medelvärdet av RSI 3 och RSI 4.
Detta RSI kan ses som ett RSI 3,5, eftersom det är längre än RSI 3 men kortare än RSI 4. Genom att ta medelvärdet tar indikatorn hänsyn till påverkan från fyra dagar sedan, men reagerar ändå snabbare än ett enkelt RSI 4. Dessutom minskar brus från både RSI 3 och RSI 4.
I den här övningen skapar du en funktion för denna indikator som kallas calc_RSI_avg() och lägger till den i din strategi strategy.st. Alla relevanta paket är redan inlästa åt dig.
Den här övningen är en del av kursen
Finansiell handel i R
Övningsinstruktioner
- Skapa och namnge en funktion
calc_RSI_avgmed tre argument:price,n1ochn2, i den ordningen. - Beräkna ett RSI med tillbakablicksperiod
n1och döp det tillRSI_1. - Beräkna ett RSI med tillbakablicksperiod
n2och döp det tillRSI_2. - Beräkna medelvärdet av
RSI_1ochRSI_2. Kalla dettaRSI_avg. - Sätt kolumnnamnet för
RSI_avgtillRSI_avgmed hjälp av colnames() och returneraRSI_avg. - Lägg till indikatorn i din strategi med indata
n1 = 3ochn2 = 4. Ge indikatorn etikettenRSI_3_4.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# Write the calc_RSI_avg function
calc_RSI_avg <- function(price, n1, n2) {
# RSI 1 takes an input of the price and n1
RSI_1 <- RSI(price = price, n = ___)
# RSI 2 takes an input of the price and n2
RSI_2 <- RSI(price = price, n = ___)
# RSI_avg is the average of RSI_1 and RSI_2
RSI_avg <- (___ + ___)/2
# Your output of RSI_avg needs a column name of RSI_avg
colnames(RSI_avg) <- "___"
return(___)
}
# Add this function as RSI_3_4 to your strategy with n1 = 3 and n2 = 4
add.indicator(strategy.st, name = ___, arguments = list(price = quote(Cl(mktdata)), n1 = ___, n2 = ___), label = ___)