이중 이동 평균 크로스오버 전략 (Dual Moving Average Crossover Strategy) 은 트렌드 추후 전략이다. 이 전략은 시장 추세를 포착하기 위해 서로 다른 기간을 가진 두 개의 이동 평균을 사용합니다. 빠른 이동 평균이 느린 이동 평균보다 높을 때 긴 신호를 생성합니다. 빠른 이동 평균이 느린 이동 평균보다 낮을 때 짧은 신호를 생성합니다. 이 전략의 핵심 아이디어는 빠른 이동 평균이 가격 변화에 더 민감하고 시장 트렌드의 변화에 더 빠르게 반응 할 수 있으며 느린 이동 평균은 시장의 장기 트렌드를 반영합니다. 두 이동 평균의 크로스오버를 분석함으로써 시장 트렌드의 전환점을 결정하고 그에 따라 거래를 할 수 있습니다.
이 전략 코드에서는 두 개의 이동 평균을 사용합니다: 빠른 이동 평균 (전산 14 기간) 및 느린 이동 평균 (전산 28 기간). 이동 평균의 유형은 간단한 이동 평균 (SMA), 기하급수적인 이동 평균 (EMA), 가중화 이동 평균 (WMA), 상대적인 이동 평균 (RMA) 에서 선택할 수 있습니다.
전략의 주요 논리는 다음과 같습니다.
이 논리를 통해 전략은 시장의 주요 트렌드를 추적하여 상승 추세에서 긴 포지션을 보유하고 하락 추세에서 짧은 포지션을 보유하거나 포지션이 없습니다. 이동 평균 기간과 유형은 다른 시장과 거래 도구에 따라 조정 및 최적화 될 수 있습니다.
이러한 위험을 해결하기 위해 다음과 같은 조치를 취할 수 있습니다.
이러한 최적화는 다른 시장 조건에 더 잘 적응하기 위해 전략의 적응성과 안정성을 향상시킬 수 있습니다. 그러나 과도한 최적화가 전략의 과잉 적합성과 라이브 거래의 저성공을 초래할 수 있음을 또한 유의해야합니다. 샘플 외 데이터에 대한 추가 검증이 필요합니다.
이중 이동 평균 크로스오버 전략 (Dual Moving Average Crossover Strategy) 은 서로 다른 기간과 함께 두 개의 이동 평균의 크로스오버를 통해 트레이딩 신호를 생성하는 고전적인 트렌드 추후 전략이다. 간단한 논리, 구현이 쉽고 트렌딩 시장에 적합하다. 그러나 범위 제한 시장에서는 빈번한 거래와 연속적인 손실을 경험할 수 있다. 따라서 이 전략을 사용할 때 시장 특성에 따라 이동 평균 기간 매개 변수를 최적화하고 합리적인 스톱-로스 및 영업 수준을 설정하는 것이 필요하다. 또한 더 많은 기술 지표를 도입하고, 포지션 관리, 트렌드 결정 등을 최적화함으로써 전략의 적응성과 안정성을 향상시킬 수 있다. 그러나 과도한 최적화는 오버 피팅으로 이어질 수 있어 주의해야 한다. 전반적으로, 이중 이동 평균 크로스오버 전략은 학습과 연구를 가치가 있는 고전적인 전략이다. 지속적인 최적화와 개선을 통해 효과적인 거래 도구가 될 수 있다.
/*backtest start: 2024-02-09 00:00:00 end: 2024-03-10 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © z4011 //@version=5 strategy("#2idagos", overlay=true, margin_long=100, margin_short=100) allowShorting = input.bool(true, "Allow Shorting") fastMALength = input.int(14, "Fast MA Length") slowMALength = input.int(28, "Slow MA Length") fastMAType = input.string("Simple", "Fast MA Type", ["Simple", "Exponential", "Weighted", "Relative"]) slowMAType = input.string("Simple", "Fast MA Type", ["Simple", "Exponential", "Weighted", "Relative"]) float fastMA = switch fastMAType "Simple" => ta.sma(close, fastMALength) "Exponential" => ta.ema(close, fastMALength) "Weighted" => ta.wma(close, fastMALength) "Relative" => ta.rma(close, fastMALength) plot(fastMA, color = color.aqua, linewidth = 2) float slowMA = switch slowMAType "Simple" => ta.sma(close, slowMALength) "Exponential" => ta.ema(close, slowMALength) "Weighted" => ta.wma(close, slowMALength) "Relative" => ta.rma(close, slowMALength) plot(slowMA, color = color.blue, linewidth = 2) longCondition = ta.crossover(fastMA, slowMA) if (longCondition) strategy.entry("Long", strategy.long) shortCondition = ta.crossunder(fastMA, slowMA) and allowShorting if (shortCondition) strategy.entry("Short", strategy.short) closeCondition = ta.crossunder(fastMA, slowMA) and not allowShorting if (closeCondition) strategy.close("Long", "Close")