Creează propriul indicator - I
Până acum, ai folosit indicatori complet pre-scrisi, prin intermediul funcției add.indicator(). Acum e momentul să scrii și să aplici propriul tău indicator.
Funcția ta indicator va calcula media aritmetică a doi indicatori diferiți, pentru a crea un RSI de 3,5. Iată cum funcționează:
- Primești o serie de prețuri.
- Calculezi RSI 3.
- Calculezi RSI 4.
- Returnezi media lui RSI 3 și RSI 4.
Acest RSI poate fi considerat un RSI 3,5, deoarece este mai lung decât un RSI 3 și mai scurt decât un RSI 4. Prin mediere, indicatorul ia în calcul impactul zilei de acum patru zile, rămânând totodată mai rapid decât un simplu RSI 4 și eliminând zgomotul specific atât RSI 3, cât și RSI 4.
În acest exercițiu, vei crea o funcție pentru acest indicator numită calc_RSI_avg() și o vei adăuga la strategia ta strategy.st. Toate pachetele necesare sunt deja încărcate.
Acest exercițiu face parte din cursul
Tranzacționare financiară în R
Instrucțiuni pentru exercițiu
- Creează și denumește o funcție
calc_RSI_avgcu trei argumente:price,n1șin2, în această ordine. - Calculează un RSI cu lookback
n1, pe care îl vei numiRSI_1. - Calculează un RSI cu lookback
n2, pe care îl vei numiRSI_2. - Calculează media lui
RSI_1șiRSI_2. Numește rezultatulRSI_avg. - Setează numele coloanei din
RSI_avglaRSI_avgfolosind colnames(), apoi returneazăRSI_avg. - Adaugă acest indicator la strategia ta folosind valorile
n1 = 3șin2 = 4. Etichetează indicatorul cuRSI_3_4.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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 = ___)