이동 평균 크로스오버 전략

저자:차오장, 날짜: 2023-09-21 10:28:27
태그:

전반적인 설명

이것은 일반적인 이동 평균 크로스오버 거래 전략이다. 빠른 이동 평균과 느린 이동 평균의 크로스오버 포인트를 거래 신호로 사용합니다. 빠른 이동 평균이 아래에서 느린 이동 평균보다 높을 때 구매 신호로 간주됩니다. 빠른 이동 평균이 위에서 느린 이동 평균보다 낮을 때 판매 신호로 간주됩니다. 이 전략은 두 개의 이동 평균을 결합하여 시장 소음을 효과적으로 필터하고 트렌드를 식별 할 수 있습니다.

전략 원칙

이 전략의 주요 단계는 다음과 같습니다.

  1. 빠른 이동 평균 기간 fastMA와 느린 이동 평균 기간 slowMA를 설정합니다.

  2. 입력 타입 Type=1은 간단한 이동 평균이고 Type=2는 기하급수적인 이동 평균이다.

  3. 시작과 끝 시간대를 설정합니다.

  4. 크로스오버 함수를 정의합니다. 빠른 신호가 느린 신호를 넘을 때 구매 신호를 생성합니다. 빠른 신호가 느린 신호를 넘을 때 판매 신호를 생성합니다.

  5. 크로스오버 기능이 트리거되면 백테스트 시간 범위 내에서 긴 오더를 열거나 짧은 오더를 닫습니다.

  6. 백테스트 창이 끝나거나 크로스오버 함수가 아래로 넘어가면 긴 클로즈 명령을 내립니다.

  7. 빠르게 움직이는 평균을 그래프로 그려 보세요.

이 전략은 보유 기간 내 트렌드를 결정하고 그에 따라 거래 신호를 생성하기 위해 빠른 이동 평균과 느린 이동 평균의 교차를 사용합니다. 백테스트 시간 창은 실제 거래를 시뮬레이션합니다.

이점 분석

이 전략의 장점:

  1. 이동 평균은 트렌드를 결정하고 무작위 변동을 필터링하는 데 효과적입니다.

  2. 빠른 이동 평균과 느린 이동 평균의 조합은 트렌드 변화를 식별 할 수 있습니다.

  3. 이동 평균의 매개 변수는 다른 기간의 흐름에 적응하도록 조정할 수 있습니다.

  4. 단순 평균과 기하급수적인 이동 평균을 선택할 수 있습니다.

  5. 백테스트 기능은 전략 매개 변수를 테스트하고 최적화 할 수 있습니다.

  6. 단순하고 명확한 논리, 이해하기 쉽고 실행하기 쉽습니다.

  7. 이동 평균 차트를 그리면 트렌드와 효과를 시각적으로 결정할 수 있습니다.

위험 분석

이 전략의 몇 가지 위험:

  1. 범위에 제한된 기간 동안 잘못된 신호를 생성할 수 있습니다.

  2. 이동평균은 지연효과가 있고, 전환점을 놓칠 수도 있습니다.

  3. 이동평균의 크로스오버에만 의존하고 다른 지표나 필터가 없습니다.

  4. 거래 비용을 고려하지 않습니다.

  5. 손해를 막는 전략이 없습니다.

  6. 불합리한 매개 변수 설정은 전략 성능에 영향을 줄 수 있습니다.

  7. 백테스트 시간 범위의 잘못된 선택은 과장 조정으로 이어질 수 있습니다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. MACD, RSI와 같은 다른 지표를 추가하여 신호를 확인하고 정확도를 향상시킵니다.

  2. 단일 손실을 통제하기 위해 스톱 로스 전략을 추가합니다.

  3. 다른 기간에 대한 이동 평균 매개 변수를 최적화합니다.

  4. 시장 조건에 따라 포지션 크기를 추가합니다.

  5. 거래 비용을 고려하고, 입구와 출구 지점을 조정합니다.

  6. 더 긴 시간 프레임을 테스트 너무 적합하지 않도록.

  7. 계속적으로 파라미터를 최적화합니다. 전진 분석을 통해요.

요약

이동평균 크로스오버 전략은 트렌드를 따르는 간단한 실용적인 전략이다. 무작위 변동을 필터링하고 트렌드 방향을 식별할 수 있다. 그러나 그것은 또한 후퇴 효과와 같은 몇 가지 문제를 가지고 있으며, 다른 지표와 결합되어야 한다. 지속적인 최적화와 테스트는 전략 성능을 향상시키고 라이브 트레이딩에 더 신뢰할 수 있게 한다. 전반적으로, 이 전략은 트렌드 결정에 대한 상대적으로 낮은 요구 사항으로 투자자에게 적합하다.


/*backtest
start: 2023-09-13 00:00:00
end: 2023-09-20 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// strategy("MavCrossover v2", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

// Revision:        1
// Author:          @ToS_MavericK

// === INPUT SMA ===
fastMA  = input(defval = 13,  title = "FastMA", minval = 1, step = 1)
slowMA  = input(defval = 144,  title = "SlowMA", minval = 1, step = 1)
Type    = input(defval = 1,  title = "Type (1 = SMA, 2 = EMA)", minval = 1, maxval = 2, step = 1)
SlowMAIsFactor = input(false)

slowMA := SlowMAIsFactor == true ? round(fastMA * slowMA) : slowMA

// === INPUT BACKTEST RANGE ===
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear  = input(defval = 2018, title = "From Year", minval = 2012)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear    = input(defval = 2020, title = "To Year", minval = 2012)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"

// === MA SETUP ===
fast = Type == 1 ? sma(close, fastMA) : ema(close, fastMA)
slow = Type == 1 ? sma(close, slowMA) : ema(close, slowMA)

// === EXECUTION ===
strategy.entry("L", strategy.long, when = crossover(fast, slow) and window())   // buy long when "within window of time" AND crossover
strategy.close("L", when = crossunder(fast, slow) or time > finish)             // sell long when window ends OR crossunder         

plot(fast, title = 'FastMA', color = yellow, linewidth = 2, style = line)  // plot FastMA
plot(slow, title = 'SlowMA', color = aqua, linewidth = 2, style = line)    // plot SlowMA

더 많은