이중 이동 평균 크로스오버 전략

저자:차오장, 날짜: 2024-03-11 12:06:22
태그:

img

전략 개요

이중 이동 평균 크로스오버 전략 (Dual Moving Average Crossover Strategy) 은 트렌드 추후 전략이다. 이 전략은 시장 추세를 포착하기 위해 서로 다른 기간을 가진 두 개의 이동 평균을 사용합니다. 빠른 이동 평균이 느린 이동 평균보다 높을 때 긴 신호를 생성합니다. 빠른 이동 평균이 느린 이동 평균보다 낮을 때 짧은 신호를 생성합니다. 이 전략의 핵심 아이디어는 빠른 이동 평균이 가격 변화에 더 민감하고 시장 트렌드의 변화에 더 빠르게 반응 할 수 있으며 느린 이동 평균은 시장의 장기 트렌드를 반영합니다. 두 이동 평균의 크로스오버를 분석함으로써 시장 트렌드의 전환점을 결정하고 그에 따라 거래를 할 수 있습니다.

전략 원칙

이 전략 코드에서는 두 개의 이동 평균을 사용합니다: 빠른 이동 평균 (전산 14 기간) 및 느린 이동 평균 (전산 28 기간). 이동 평균의 유형은 간단한 이동 평균 (SMA), 기하급수적인 이동 평균 (EMA), 가중화 이동 평균 (WMA), 상대적인 이동 평균 (RMA) 에서 선택할 수 있습니다.

전략의 주요 논리는 다음과 같습니다.

  1. 빠른 이동 평균과 느린 이동 평균의 값을 계산
  2. 빠른 이동 평균이 느린 이동 평균을 넘으면 긴 신호를 생성하고 긴 지위를 개척합니다.
  3. 만약 빠른 이동 평균이 느린 이동 평균 아래로 넘어가고 단축이 허용되면 (allowShorting=true) 단축 신호를 생성하고 단축 포지션을 개설합니다.
  4. 만약 빠른 이동 평균이 느린 이동 평균 아래로 넘어가고 단축이 허용되지 않는다면 (allowShorting=false), 긴 포지션을 닫습니다.

이 논리를 통해 전략은 시장의 주요 트렌드를 추적하여 상승 추세에서 긴 포지션을 보유하고 하락 추세에서 짧은 포지션을 보유하거나 포지션이 없습니다. 이동 평균 기간과 유형은 다른 시장과 거래 도구에 따라 조정 및 최적화 될 수 있습니다.

전략적 장점

  1. 단순하고 명확한 논리, 이해하기 쉽고 실행하기 쉬운
  2. 트렌딩 시장에 적합하며 중장기 시장 트렌드를 효과적으로 파악 할 수 있습니다.
  3. 조정 가능한 매개 변수, 다른 시장과 거래 도구에 적합
  4. 시장 특성과 개인 선호도에 따라 단축을 허용할지 유연하게 선택할 수 있습니다.
  5. 이동 평균은 널리 사용되고 검증된 고전적인 기술 분석 지표입니다.

전략 위험

  1. 범주형 시장에서는 이동평균의 교차가 빈번하게 발생하면 거래가 빈번해지고 거래 비용이 증가할 수 있습니다.
  2. 빠른 이동 평균이 너무 짧게 선택되거나 느린 이동 평균이 너무 길게 선택되면 신호 지연을 유발하고 최고의 거래 기회를 놓칠 수 있습니다.
  3. 시장 트렌드가 역전되면 전략은 연속 손실을 겪을 수 있습니다.
  4. 고정 이동 평균 기간 매개 변수는 시장의 역동적 변화에 적응하지 못할 수 있습니다.

이러한 위험을 해결하기 위해 다음과 같은 조치를 취할 수 있습니다.

  1. 시장 특성에 따라 이동 평균 기간 매개 변수를 최적화하고 빠른 이동 평균과 느린 이동 평균에 적합한 길이를 선택합니다.
  2. 범위에 제한된 시장에서는 ATR 필터링이나 이동 평균 크로스오버 각 필터링과 같은 필터링 조건을 추가하는 것을 고려하십시오.
  3. 단일 거래 위험을 통제하기 위해 합리적인 스톱 로스 및 수익을 취하는 수준을 설정
  4. 정기적인 백테스트 및 평가 수행 및 시장 변화에 따라 전략 매개 변수를 조정

전략 최적화

  1. MACD 및 RSI와 같은 더 많은 기술적 지표를 도입하여 다중 요소 전략을 구축하고 신호 정확도를 향상시킵니다.
  2. 포지션 관리 최적화, 예를 들어, 동적으로 포지션 크기를 조정하기 위해 ATR 또는 변동성 같은 요소를 고려
  3. 범위에 묶인 시장의 경우 ADX와 같은 트렌드 결정 지표를 도입하여 빈번한 거래를 피하는 것을 고려하십시오.
  4. 기계 학습 또는 최적화 알고리즘을 사용하여 최적의 매개 변수 조합을 자동으로 찾습니다.

이러한 최적화는 다른 시장 조건에 더 잘 적응하기 위해 전략의 적응성과 안정성을 향상시킬 수 있습니다. 그러나 과도한 최적화가 전략의 과잉 적합성과 라이브 거래의 저성공을 초래할 수 있음을 또한 유의해야합니다. 샘플 외 데이터에 대한 추가 검증이 필요합니다.

요약

이중 이동 평균 크로스오버 전략 (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")


더 많은