나만의 지표 코딩 - I
지금까지는 add.indicator() 함수를 사용해 이미 작성된 지표만 활용했어요. 이제 직접 지표를 만들고 적용해 볼 차례입니다.
이번에 만들 지표 함수는 두 가지 서로 다른 RSI를 평균 내어 RSI 3.5에 해당하는 값을 계산합니다. 단계는 다음과 같아요.
- 가격 시계열을 입력으로 받습니다.
- RSI 3을 계산합니다.
- RSI 4를 계산합니다.
- RSI 3과 RSI 4의 평균을 반환합니다.
이 RSI는 RSI 3보다 길고 RSI 4보다 짧기 때문에 RSI 3.5로 볼 수 있어요. 평균을 사용하면 4일 전의 영향을 반영하면서도 단순한 RSI 4보다 빠르게 반응하고, RSI 3과 RSI 4 각각의 노이즈도 줄일 수 있습니다.
이 연습 문제에서는 이 지표를 계산하는 calc_RSI_avg() 함수를 만들고, 이를 strategy.st 전략에 추가할 거예요. 필요한 패키지는 모두 로드되어 있습니다.
이 연습은 강의의 일부입니다
R로 배우는 금융 트레이딩
연습 안내
price,n1,n2의 순서로 세 개의 인수를 받는 함수calc_RSI_avg를 만들고 이름을 지정하세요.- 조회 기간이
n1인 RSI를 계산해RSI_1이라고 이름 붙이세요. - 조회 기간이
n2인 RSI를 계산해RSI_2라고 이름 붙이세요. RSI_1과RSI_2의 평균을 계산하세요. 이 값을RSI_avg라고 하세요.- colnames()를 사용해
RSI_avg의 열 이름을RSI_avg로 설정하고,RSI_avg를 반환하세요. - 이 지표를
n1 = 3,n2 = 4입력으로 전략에 추가하세요. 이 지표의 레이블은RSI_3_4로 지정하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# 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 = ___)