이 전략은
이중 이동 평균 전략의 기본 논리는 다음과 같습니다.
위의 거래 신호가 발생하면 쉽게 시각 판단을 위해 차트에 관련 표시를 할 것입니다. 이것은 이중 이동 평균 전략의 전체 작업 흐름입니다.
이중 이동 평균 전략의 가장 큰 장점은 트렌드 지표와 과잉 구매 / 과잉 판매 지표를 효과적으로 결합하여 거래 신호를 더 신뢰할 수 있다는 것입니다. 구체적으로 다음과 같은 주요 장점이 있습니다.
거짓 신호를 줄이십시오. RSI와 MA의 조합은 신호를 서로 확인하고 단일 지표로 생성된 거짓 신호를 피할 수 있습니다.
승률을 향상시킵니다. 단일 RSI 또는 MA 전략에 비해 이중 이동 평균 전략은 더 수익성있는 기회를 얻을 수 있습니다.
강한 적응력 이 전략은 두 가지 매개 변수를 사용 합니다. 조작이 간단하고 비용이 저렴하며 다른 시장 환경에 적응합니다.
최적화하기 쉽습니다. RSI와 MA의 사이클 매개 변수를 조정함으로써 더 많은 품종에 최적화하고 적응하는 것이 편리합니다.
이중 이동 평균 전략의 많은 장점에도 불구하고 실제 적용에서 위험을 완전히 피할 수 없습니다. 주요 위험은 다음과 같습니다.
MA는 역사적인 평균 가격을 사용하며 최신 가격 변화에 뒤떨어질 수 있습니다.
RSI는 잘못된 신호로 이어지는 잘못된 파장을 경험할 수 있습니다.
급변하는 시장에 적응할 수 없어 손실을 멈추는 경향이 있습니다.
부적절한 매개 변수 설정도 전략 성능에 큰 영향을 줄 수 있습니다.
이에 대응하기 위해, 우리는 주로 다음과 같은 측면에서 위험을 통제합니다:
최신 가격 변화에 따라 주기 매개 변수를 조정하기 위해 적응형 MA를 사용하십시오.
단일 손실을 통제하기 위해 스톱 손실 메커니즘을 증가시킵니다.
테스트를 위한 최적의 파라미터 조합을 선택하기 위해 파라미터 최적화
단계적 스톱 손실을 채택하여 부분 수익을 확보하고 위험을 줄이십시오.
이중 이동 평균 전략의 잠재적인 문제에 대해서는 다음과 같은 차원에서 최적화를 고려합니다.
가격 트렌드 변화를 더 빨리 파악하기 위해 일반적인 MA 대신 적응형 MA를 사용하십시오.
가짜 브레이크오웃을 피하기 위해 볼륨 지표 검증을 늘리십시오. 예를 들어, 닫기 가격과 거래 부피가 함께 상승 할 때만 구매하십시오.
유효하지 않은 신호를 필터링하기 위해 다른 지표를 결합합니다. 예를 들어 MACD 또는 KD 지표를 확인합니다.
최적의 매개 변수 조합을 찾기 위해 매개 변수 설정 범위를 최적화합니다. 백테스팅은 전략의 가장 높은 수익 매개 변수 범위를 찾을 수 있습니다.
적응적 매개 변수 최적화를 위해 기계 학습 기술을 사용하십시오. 실시간 시장 조건에 따라 최적 매개 변수를 선택할 수 있습니다.
위의 최적화를 통해 이중 이동 평균 전략의 실시간 성능을 크게 향상시킬 것으로 예상됩니다.
이중 이동 평균 전략은 RSI와 MA 지표의 장점을 통합합니다. 두 가지의 협력을 통해 더 정확하고 신뢰할 수있는 거래 신호를 생성 할 수 있습니다. 단일 기술 지표 전략과 비교하면 이중 이동 평균 전략은 더 높은 신호 정확성, 더 적은 잘못된 신호, 쉬운 최적화 및 기타 장점을 가지고 있습니다. 그러나 잘못된 작동의 위험을 완전히 피할 수 없습니다. 또한 몇 가지 특정 위험 관리 조치를 제안했습니다. 또한이 전략에 대해 더 이상 최적화 할 수있는 차원이 있습니다. 적응 지표, 다른 보조 검증 지표, 매개 변수 최적화 및 기타 방법을 결합함으로써 전략의 수익률을 더욱 향상시킬 것으로 예상됩니다. 일반적으로이 전략은 양적 거래에 대한 간단하고 실용적인 기술 분석 솔루션을 제공합니다.
/*backtest start: 2023-10-31 00:00:00 end: 2023-11-30 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="RSI + MA", shorttitle="RSI + MA") reverseTrade = input(false, title = "Use Reverse Trade?") lengthRSI = input(14, minval=1, title="RSI Length") sourceRSI = input(close, "RSI Source", type = input.source) showMA = input(true, title="Show MA") lengthMA = input(9, minval=1, title="MA Length") offsetMA = input(title="MA Offset", type=input.integer, defval=0, minval=-500, maxval=500) up = rma(max(change(sourceRSI), 0), lengthRSI) down = rma(-min(change(sourceRSI), 0), lengthRSI) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) ma = sma(rsi, lengthMA) plot(showMA ? ma : na, "MA", color=color.blue, linewidth=2, style=0, offset=offsetMA) plot(rsi, "RSI", color=#9915FF, linewidth=1, style=0) band1 = hline(70, "Upper Band", color=#C0C0C0, linestyle=2, linewidth=1) band0 = hline(30, "Lower Band", color=#C0C0C0, linestyle=2, linewidth=1) fill(band1, band0, color=color.new(#9915FF,95), title="Background") buy = reverseTrade ? rsi[1] < ma[1] and rsi > ma : rsi[1] > ma[1] and rsi < ma sell = reverseTrade ? rsi[1] > ma[1] and rsi < ma : rsi[1] < ma[1] and rsi > ma strategy.entry("Buy", true, when = buy) strategy.entry("Sell", false, when = sell)