모멘텀 진동률 기반 최적화 전략
개요
해당 전략은 모멘텀 지표인 변동률(ROC)을 최적화하여 개선한 전략입니다. 원래의 ROC 전략과 비교하여 다음과 같은 최적화를 수행했습니다.
- 최대 과거 ROC 값을 도입하여 현재 ROC를 최대 과거 ROC와 동적으로 비교하여 모멘텀 상대값을 구합니다.
- 모멘텀 상대값을 평활화하여 신호를 생성합니다.
- 매수/매도 신호 임계값을 추가합니다.
이러한 최적화를 통해 많은 무효 신호를 필터링하여 전략을 더욱 안정적이고 신뢰할 수 있게 만듭니다.
전략 원리
이 전략의 핵심 지표는 변동률(ROC)입니다. ROC는 일정 기간 동안 주가의 변화 속도를 측정합니다. 이 전략은 먼저 9주기의 ROC 값을 계산합니다. 그런 다음 과거 200주기 동안 이 ROC 지표의 최대값을 기록하고, 현재 ROC가 과거 최대 ROC에서 차지하는 비율을 계산하여 모멘텀의 상대적 강도를 얻습니다. 예를 들어, 과거 200일 동안 ROC가 최대 100에 도달한 적이 있다면, 당일 ROC가 80일 때 상대 강도는 80%입니다.
이 상대 강도는 길이 10의 SMA를 통해 평활화되어 단기 변동을 필터링하고 부드러운 곡선을 얻습니다. 평활 곡선이 3일 연속 상승하고 값이 -80% 미만일 때 주가 하락세가 둔화되기 시작하여 바닥 징후가 나타난 것으로 판단하여 매수합니다. 평활 곡선이 3일 연속 하락하고 값이 80% 초과일 때 주가 상승세가 둔화되기 시작하여 고점 징후가 나타난 것으로 판단하여 포지션을 청산합니다.
장점 분석
이 전략은 원래의 ROC 전략에 비해 다음과 같은 주요 장점이 있습니다.
- 과거 ROC 최대값과의 비교를 도입하여 모멘텀 지표의 상대적 높이를 잘 측정하고, 절대값이 높지 않은 무효 신호를 필터링할 수 있습니다.
- 평활화 처리를 통해 노이즈를 걸러내어 신호를 더욱 안정적이고 신뢰할 수 있게 만듭니다.
- 매수/매도 임계값을 설정하여 불필요한 거래를 줄입니다.
전반적으로 이 전략은 ROC 지표를 효과적으로 2차 가공하여 실전 거래에 더 적합하게 만듭니다.
위험 분석
이 전략은 주로 다음과 같은 위험이 있습니다.
- ROC 지표는 시장 추세를 확정할 수 없으며 일정한 오해의 소지가 있습니다. 강세장과 약세장 전환 시기에 이 전략이 실패할 수 있습니다.
- 매수/매도 임계값이 완벽하지 않습니다. 임계값이 너무 높거나 낮게 설정되면 전략 성과에 영향을 미칩니다.
- SMA 매개변수 설정이 적절하지 않으면 전략 효과에 영향을 미칩니다.
위험을 줄이기 위해 추세 지표를 결합하여 큰 추세를 판단하고, 임계값 매개변수를 조정하여 최적의 매개변수를 테스트하며, SMA 주기 매개변수를 최적화하는 것을 고려할 수 있습니다.
최적화 방향
이 전략은 다음과 같은 방향으로 최적화할 수 있습니다.
- 추세 지표를 결합하여 시장의 전반적인 흐름을 판단하고 강세장/약세장 전환 시에 무효화되는 것을 방지합니다.
- 다양한 ROC 길이 매개변수와 매수/매도 임계값 매개변수를 테스트하여 최적의 매개변수 조합을 찾습니다.
- SMA 평활 매개변수를 최적화하여 최적의 매개변수를 찾습니다.
- 손절 메커니즘을 추가합니다.
요약
이 전략은 ROC 지표를 기반으로 2차 개발한 최적화 전략입니다. 과거 최대값 비교, SMA 평활화, 매수/매도 임계값 등의 방법을 도입하여 무효 신호를 필터링하고 전략을 더욱 안정적으로 만듭니다. 주요 장점은 신호 품질이 높아 실전 거래에 적합하다는 점입니다. 향후 추세 결합, 매개변수 최적화 등을 통해 개선하여 전략 성과를 더욱 향상시킬 수 있습니다.
/*backtest
start: 2024-02-12 00:00:00
end: 2024-02-19 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title="Rate Of Change Mod Strategy", shorttitle="ROC", format=format.price, precision=2)
//length = input.int(9, minval=1)
//source = input(close, "Source")- 1

