Crea il tuo indicatore - I
Finora hai utilizzato indicatori già pronti tramite la funzione add.indicator(). Ora è il momento di scrivere e applicare un tuo indicatore.
La tua funzione di indicatore calcolerà la media di due indicatori diversi per creare un RSI di 3,5. Ecco come:
- Prendi in input una serie di prezzi.
- Calcola RSI 3.
- Calcola RSI 4.
- Restituisci la media tra RSI 3 e RSI 4.
Questo RSI può essere visto come un RSI 3,5, perché è più lungo di un RSI 3 e più corto di un RSI 4. Facendo la media, questo indicatore tiene conto dell'impatto di quattro giorni fa pur rimanendo più veloce di un semplice RSI 4, e inoltre riduce il rumore sia di RSI 3 sia di RSI 4.
In questo esercizio creerai una funzione per questo indicatore chiamata calc_RSI_avg() e la aggiungerai alla tua strategia strategy.st. Tutti i pacchetti necessari sono già caricati per te.
Questo esercizio fa parte del corso
Trading finanziario in R
Istruzioni dell'esercizio
- Crea e assegna il nome
calc_RSI_avga una funzione con tre argomenti, nell'ordineprice,n1en2. - Calcola un RSI con lookback
n1chiamatoRSI_1. - Calcola un RSI con lookback
n2chiamatoRSI_2. - Calcola la media di
RSI_1eRSI_2. ChiamalaRSI_avg. - Imposta il nome di colonna di
RSI_avgsuRSI_avgusando colnames() e restituisciRSI_avg. - Aggiungi questo indicatore alla tua strategia usando come input
n1 = 3en2 = 4. Etichetta questo indicatoreRSI_3_4.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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 = ___)