레인보우 오실레이터 거래 전략
1
Follow
1802
Followers
개요
레인보우 오실레이터(Rainbow Oscillator) 거래 전략은 여러 개의 지수 이동 평균과 오실레이터 지표를 활용하여 다층적 변동 채널을 구축하고, 명확한 수준의 매수/매도 신호를 생성하는 추세 추종형 전략입니다. 해당 전략은 RSI, CCI, 스토캐스틱(Stochastic) 및 MA 조합 지표를 종합적으로 활용하여 시장의 전반적인 추세와 과매수/과매도 구간을 판단하며, 다중 요인 평가형 전략에 속합니다.
전략 원리
- RSI, CCI, 스토캐스틱 세 가지 지표값의 가중 평균을 계산하여 종합 오실레이터 지표 Magic을 구축합니다.
- Magic 지표에 여러 번의 지수 평활화를 적용하여 sampledMagicFast와 sampledMagicSlow 두 개의 곡선을 생성합니다.
- sampledMagicFast는 빠른 평균선을 나타내고, sampledMagicSlow는 느린 평균선을 나타냅니다.
- sampledMagicFast가 sampledMagicSlow를 상향 돌파하면 매수 신호가 발생합니다.
- sampledMagicFast가 sampledMagicSlow를 하향 돌파하면 매도 신호가 발생합니다.
- 마지막 봉의 sampledMagicFast가 이전 봉 대비 변화 방향을 계산하여 현재 추세를 판단합니다.
- 추세 방향과 sampledMagicFast 및 sampledMagicSlow의 교차 상황에 따라 진입 및 청산 시점을 결정합니다.
전략 장점
- 여러 지표를 종합적으로 활용하여 시장의 전반적인 추세를 판단함으로써 신호 정확도를 높입니다.
- 평활화된 MA 지표를 기반으로 신호 노이즈를 효과적으로 억제합니다.
- 오실레이터 신호가 단계적으로 명확히 전달되어 조작이 용이합니다.
- 추세 필터를 결합하여 추세 추종 또는 반전 매매 방식으로 구성할 수 있습니다.
- 과매수/과매도 구간의 강도를 사용자 정의할 수 있어 적응성이 뛰어납니다.
전략 리스크
- 파라미터 설정 오류로 인해 곡선이 너무 평활화되어 최적의 진입 시점을 놓칠 수 있습니다.
- 과매수/과매도 구간 설정이 부적절하면 공회仓位 기간이 너무 길어질 수 있습니다.
- 다중 요인 평가에서 일부 지표가 실패하면 신호 유효성이 약화될 수 있습니다.
대응 해결 방법:
- 파라미터를 최적화하여 곡선의 평활도가 적절하도록 조정합니다.
- 과매수/과매도 구간 강도를 조정하여 공회仓位 비율을 낮춥니다.
- 각 지표의 예측 능력을 테스트하고 가중치를 조정합니다.
전략 최적화 방향
- 시장 상황에 따라 지표 파라미터를 동적으로 조정합니다.
- 머신러닝 방법을 도입하여 지표 가중치 조합을 자동 최적화합니다.
- 거래량 및 변동성 등의 요인을 추가하여 진입 신호를 필터링합니다.
요약
레인보우 오실레이터 전략은 다양한 지표 신호를 종합하고 지수 평활화 처리를 통해 안정성을 높입니다. 해당 전략은 추세 및 변동장에 적응할 수 있도록 구성할 수 있으며, 특정 품목의 변동 움직임에만 사용할 수도 있습니다. 파라미터 최적화 및 지표 확장을 통해 신호 품질을 더욱 향상시킬 수 있습니다. 전반적으로 이 전략은 논리가 명확하고 사용법이 간단하며 쉽게 익힐 수 있습니다.
Source
Pine
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © businessduck
//@version=5
strategy("Rainbow Oscillator [Strategy]", overlay=false, margin_long=100, margin_short=100, initial_capital = 2000)
bool trendFilter = input.bool(true, 'Use trend filter')
float w1 = input.float(0.33, 'RSI Weight', 0, 1, 0.01)
float w2 = input.float(0.33, 'CCI Weight', 0, 1, 0.01)
float w3 = input.float(0.33, 'Stoch Weight', 0, 1, 0.01)
int fastPeriod = input.int(16, 'Ocillograph Fast Period', 4, 60, 1)
int slowPeriod = input.int(22, 'Ocillograph Slow Period', 4, 60, 1)Strategy parameters
Related strategies
Comment
All comments (0)
No data
- 1

