다중 이동 평균 추세 모멘텀 식별 및 손절매 거래 시스템

EMA SMA
생성 날짜: 2024-11-25 11:09:00 마지막으로 수정됨: 2024-11-25 11:09:00
복사: 0 클릭수: 431
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

다중 이동 평균 추세 모멘텀 식별 및 손절매 거래 시스템

개요

이 전략은 4배 지수 이동 평균 ((EMA) 에 기반한 트렌드 추적 시스템으로 9, 21, 50, 200 주기 EMA의 교차와 배열을 통해 시장의 트렌드를 식별하고, 백분율 스톱로즈와 결합하여 위험을 제어한다. 전략은 4개의 평행선의 배열 순서를 판단하여 시장의 트렌드 방향을 결정한다. 단기 평행선이 장기 평행선 위에 있을 때 더 많이 입주하고, 반대로 공백을 하고, 동시에 고정 백분율 스톱로즈를 설정하여 위험을 제어한다.

전략 원칙

이 전략은 4개의 다른 주기의 지수 이동 평균을 사용해서 (9,21,50,200) 이평선 사이의 관계를 관찰하여 시장의 흐름을 판단한다. 9일 EMA가 21일 EMA 위에 있을 때, 21일 EMA가 50일 EMA 위에 있을 때, 50일 EMA가 200일 EMA 위에 있을 때, 시스템은 시장이 강렬한 상승 추세에 있다고 생각하고, 더 많이 발행한다.

전략적 이점

  1. 다중 평균선 교차는 더 신뢰할 수 있는 트렌드 확인 신호를 제공하며, 가짜 브레이크의 위험을 줄입니다.
  2. 다른 주기적 평균의 배열을 통해 트렌드 강도를 판단하여 시장 소음을 효과적으로 필터링 할 수 있습니다.
  3. 고정 비율의 스톱 로즈 설정은 명확한 리스크 제어 메커니즘을 제공합니다
  4. 전략 논리는 간단하고 명확하며 이해하기 쉽고 실행이 가능합니다.
  5. 여러 시장과 시간대에 적용 가능하며, 강력한 보편성

전략적 위험

  1. 불안한 시장에서 빈번하게 잘못된 신호가 발생하여 연속적인 정지 손실을 초래할 수 있습니다.
  2. 평균선 시스템은 추세 초기의 중요한 가격 변화를 놓칠 수 있습니다.
  3. 고정 비율의 단축 손실은 모든 시장 환경과 변동성 조건에 적합하지 않을 수 있습니다.
  4. 마켓의 변동율이 손해배상 설정에 미치는 영향을 고려하지 않고
  5. 수익 목표 설정의 부재로 인해 수익이 효율적으로 실현되지 않을 수 있습니다.

전략 최적화 방향

  1. ATR 지표의 동적으로 조정되는 중지 거리를 도입하여 시장의 변동성에 더 잘 적응하도록합니다.
  2. 입시 신호 품질을 높이기 위해 ADX 지표와 같은 트렌드 강도 필터를 추가합니다.
  3. 이동성 손해배상 장치를 추가하여 기존의 수익을 더 잘 보호합니다.
  4. 트렌드를 확인하는 보조적인 지표로 거래량 지표를 도입
  5. 수익 목표를 추가하거나 이동 차단 메커니즘을 고려하십시오.
  6. 특정 시장 특성에 더 적합한 평균 주기 변수를 최적화

요약하다

이것은 구조가 온전한 트렌드 추적 거래 시스템으로, 다중 평균의 조합 사용으로 비교적 신뢰할 수 있는 트렌드 식별 메커니즘을 제공하며, 일정한 퍼센티지 스톱로스를 사용하여 위험을 통제한다. 시스템이 다소 뒤처져 있지만, 합리적인 매개 변수 최적화와 추가 지표의 보충을 통해 전략의 안정성과 수익성을 더욱 향상시킬 수 있다. 이 전략은 특히 변동성이 큰 시장과 중장기 트렌드 추적 거래에 적합하다.

전략 소스 코드
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-23 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("4 EMA Strategy with Stop Loss", overlay=true)

// Define the EMA lengths
ema1_length = input(9, title="EMA 1 Length")
ema2_length = input(21, title="EMA 2 Length")
ema3_length = input(50, title="EMA 3 Length")
ema4_length = input(200, title="EMA 4 Length")

// Calculate the EMAs
ema1 = ta.ema(close, ema1_length)
ema2 = ta.ema(close, ema2_length)
ema3 = ta.ema(close, ema3_length)
ema4 = ta.ema(close, ema4_length)

// Plot EMAs on the chart
plot(ema1, color=color.blue, title="EMA 9")
plot(ema2, color=color.orange, title="EMA 21")
plot(ema3, color=color.green, title="EMA 50")
plot(ema4, color=color.red, title="EMA 200")

// Define conditions for Buy and Sell signals
buy_condition = (ema1 > ema2 and ema2 > ema3 and ema3 > ema4)
sell_condition = (ema1 < ema2 and ema2 < ema3 and ema3 < ema4)

// Input stop loss percentage
stop_loss_perc = input(2.0, title="Stop Loss %")

// Execute buy signal
if (buy_condition)
    strategy.entry("Buy", strategy.long)
    
    // Set stop loss at a percentage below the entry price
    strategy.exit("Sell", "Buy", stop=strategy.position_avg_price * (1 - stop_loss_perc / 100))

// Execute sell signal
if (sell_condition)
    strategy.entry("Sell", strategy.short)

    // Set stop loss at a percentage above the entry price
    strategy.exit("Cover", "Sell", stop=strategy.position_avg_price * (1 + stop_loss_perc / 100))