Schrijf je eigen indicator - I
Tot nu toe heb je indicatoren gebruikt die volledig voor je waren voorgedefinieerd via de functie add.indicator(). Nu is het tijd om je eigen indicator te schrijven en toe te passen.
Je indicatorfunctie berekent het gemiddelde van twee verschillende indicatoren om een RSI van 3,5 te creëren. Zo pak je het aan:
- Neem een prijss reeks aan.
- Bereken RSI 3.
- Bereken RSI 4.
- Geef het gemiddelde van RSI 3 en RSI 4 terug.
Je kunt dit zien als een RSI 3,5, omdat hij langer is dan een RSI 3 en korter dan een RSI 4. Door te middelen houdt deze indicator rekening met de impact van vier dagen geleden, is hij nog steeds sneller dan een eenvoudige RSI 4, en haalt hij ook de ruis uit zowel RSI 3 als RSI 4.
In deze oefening maak je een functie voor deze indicator met de naam calc_RSI_avg() en voeg je die toe aan je strategie strategy.st. Alle relevante pakketten zijn ook al voor je geladen.
Deze oefening maakt deel uit van de cursus
Financieel traden in R
Oefeninstructies
- Maak en noem een functie
calc_RSI_avgmet drie argumentenprice,n1enn2, in die volgorde. - Bereken een RSI met lookback
n1met de naamRSI_1. - Bereken een RSI met lookback
n2met de naamRSI_2. - Bereken het gemiddelde van
RSI_1enRSI_2. Noem ditRSI_avg. - Stel de kolomnaam van
RSI_avgin opRSI_avgmet colnames(), en returnRSI_avg. - Voeg deze indicator toe aan je strategie met invoer
n1 = 3enn2 = 4. Label deze indicatorRSI_3_4.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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 = ___)