다중 이동 평균 골든 크로스 배치 이익 실현 전략

EMA
생성 날짜: 2024-12-20 16:54:43 마지막으로 수정됨: 2024-12-20 16:54:43
복사: 4 클릭수: 407
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

다중 이동 평균 골든 크로스 배치 이익 실현 전략

개요

이 전략은 다중 지수 이동 평균 (EMA) 을 기반으로 한 트렌드 추적 거래 시스템이다. 그것은 EMA25, EMA50, EMA100의 세 개의 평행선이 형성된 황금 교차선을 사용하여 강력한 상승 추세를 확인하고 가격이 EMA25을 돌파 할 때 대량으로 진입한다. 전략은 동적 스톱 손실과 대량 스톱을 사용하여 위험을 관리하고 수익을 얻는다.

전략 원칙

전략의 핵심 논리는 다음과 같은 핵심 부분으로 구성됩니다.

  1. 트렌드 확인: 3개의 다른 주기 ((25,50,100) 의 EMA를 사용하여, 단기 평균선이 중기 평균선 위에 있고, 중기 평균선이 장기 평균선 위에 있을 때, 금색 십자 형태를 형성하여, 상승 경향을 확인한다.
  2. 진입 신호: 금의 교차를 형성하는 기초에 따라, 종결 가격이 상향으로 EMA25을 돌파할 때, 두 배의 각각 50%의 포지션 진입을 더한다.
  3. 스톱 로즈 설정: 지난 20주기의 최저 가격에 기반한 동적 스톱 로즈 설정, 그리고 가짜 브레이크를 방지하기 위해 추가적인 버퍼 영역 ((0.0003) 을 추가한다.
  4. 분량 정지: 두 개의 다른 배수 ((1.0과 1.5배) 의 정지 목표를 설정하고, 첫 번째 포지션은 낮은 정지 목표를 달성하면 퇴장하고, 두 번째 포지션은 높은 정지 목표를 달성하면 퇴장한다.
  5. 트렌드 종료 보호: 가격이 EMA100을 넘어갈 때, 트렌드 반전의 손실을 막기 위해 모든 포지션의 평소 신호를 쏘아 올립니다.

전략적 이점

  1. 다중 확인 메커니즘: 다중 평균 선의 조합을 통해, 가짜 신호를 효과적으로 필터링하여 거래의 신뢰성을 향상시킬 수 있다.
  2. 다이내믹 리스크 관리: 실시간 시장 변동에 따라 스톱피스가 동적으로 조정되며, 더 적응력이 강하다.
  3. 분기 창고 및 정지: 분기 운영을 통해 수익의 일부를 잠금 할 수 있지만 수익이 계속 실행되어 수익을 극대화 할 수 있습니다.
  4. 트렌드 보호 장치: 트렌드 반전의 경계선으로 장기 평균선을 설정하여 급격한 회수를 피하기 위해 적시에 손실을 막을 수 있습니다.

전략적 위험

  1. 지연성 위험: 평균선 지표 자체는 지연성을 가지고 있으며, 진입 시기가 늦어지고 최적의 매수점을 놓칠 수 있다.
  2. 흔들림 시장의 위험: 가로 수평 흔들림 시장에서, 빈번한 가짜 돌파는 연속적인 손실을 초래할 수 있다.
  3. 고정된 스톱 손실 버퍼 구역 위험: 고정된 스톱 손실 버퍼 구역을 사용하는 것은 모든 시장 환경에 적합하지 않을 수 있다.
  4. 자금 관리 위험: 고정된 50% 포지션 분배는 충분히 유연하지 않을 수 있습니다.

전략 최적화 방향

  1. 동적 변수 최적화: 시장의 변동에 따라 수평선 주기 및 스톱손실 버퍼존을 자동으로 조정할 수 있다.
  2. 시장 환경 필터: 트렌드 강도 및 변동률 지표를 추가하여 다른 시장 환경에서 전략 매개 변수를 조정합니다.
  3. 포지션 관리 최적화: 변동율과 계좌 순액에 따라 포지션 크기를 동적으로 조정한다.
  4. 진출 시점 최적화: 다른 기술 지표 (RSI, MACD 등) 와 결합하여 진출 시점을 최적화 할 수 있다.
  5. 제동방법 최적화: 모바일 제동 장치가 도입되어 이미 유리한 제도를 더 잘 보호할 수 있다.

요약하다

이 전략은 다중 평평선 조합과 분기 운영 방식을 통해 비교적 완전한 트렌드 추적 거래 시스템을 구축한다. 전략의 장점은 트렌드 추적과 위험 관리의 여러 핵심 요소를 결합한다는 데 있다. 그러나 실제 시장 상황에 따라 변수 최적화 및 규칙 개선을 여전히 필요로 한다. 제안된 최적화 방향을 통해 전략은 다양한 시장 환경에서 안정적인 성능을 유지할 수 있을 것으로 보인다.

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

//@version=6
strategy("Golden Cross with Customizable TP/SL", overlay=true)

// Parameters for EMA
ema_short_length = 25
ema_mid_length = 50
ema_long_length = 100

// Parameters for stop-loss and take-profit
lookback_bars = input.int(20, title="Lookback bars for lowest low")
pip_buffer = input.float(0.0003, title="Stop-loss buffer (pips)")  // Fixed default pip value (e.g., 3 pips for 5-digit pairs)
tp_multiplier1 = input.float(1.0, title="Take-profit multiplier 1")
tp_multiplier2 = input.float(1.5, title="Take-profit multiplier 2")

// Calculate EMAs
ema25 = ta.ema(close, ema_short_length)
ema50 = ta.ema(close, ema_mid_length)
ema100 = ta.ema(close, ema_long_length)

// Golden Cross condition (EMA25 > EMA50 > EMA100)
golden_cross = ema25 > ema50 and ema50 > ema100

// Entry condition: Candle crosses above EMA25 after a golden cross
cross_above_ema25 = ta.crossover(close, ema25)
entry_condition = golden_cross and cross_above_ema25

// Stop-loss and take-profit calculation
lowest_low = ta.lowest(low, lookback_bars)
var float entry_price = na
var float stop_loss = na
var float take_profit1 = na
var float take_profit2 = na

if (entry_condition)
    entry_price := close
    stop_loss := lowest_low - pip_buffer
    take_profit1 := entry_price + (entry_price - stop_loss) * tp_multiplier1
    take_profit2 := entry_price + (entry_price - stop_loss) * tp_multiplier2
    strategy.entry("Buy1", strategy.long, qty=0.5)  // First 50%
    strategy.entry("Buy2", strategy.long, qty=0.5)  // Second 50%

// Separate exit conditions for each entry
cross_below_ema100 = ta.crossunder(close, ema100)
exit_condition1 = close >= take_profit1
exit_condition2 = close >= take_profit2
exit_condition_sl = close <= stop_loss

if (exit_condition1 or cross_below_ema100)
    strategy.close("Buy1")
if (exit_condition2 or cross_below_ema100 or exit_condition_sl)
    strategy.close("Buy2")

// Plot EMAs
plot(ema25, color=color.blue, title="EMA 25")
plot(ema50, color=color.orange, title="EMA 50")
plot(ema100, color=color.red, title="EMA 100")