이중 이동 평균 풀백 반전 거래 전략: EMA 교차 및 백테스트 허용 범위에 기반한 추세 추종 시스템

EMA FAST EMA SLOW EMA 趋势跟踪 回调交易 风险控制 双均线 风险回报比 止损
생성 날짜: 2025-04-21 15:58:18 마지막으로 수정됨: 2025-04-21 15:58:18
복사: 0 클릭수: 431
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

이중 이동 평균 풀백 반전 거래 전략: EMA 교차 및 백테스트 허용 범위에 기반한 추세 추종 시스템 이중 이동 평균 풀백 반전 거래 전략: EMA 교차 및 백테스트 허용 범위에 기반한 추세 추종 시스템

개요

이진평선 회귀 역전 거래 전략은 지수 이동 평균 (((EMA) 을 기반으로 한 트렌드 추적 시스템이며, 핵심적인 사고방식은 “매번의 평균선 교차를 쫓는 대신, 시장 회귀를 기다린 후 빠른 EMA 라인을 확인한 후 다시 진입한다”는 것이다. 이 전략은 기술 분석의 평선 교차 신호와 가격 회귀 확인 메커니즘을 결합하여, 합리적인 회귀 격차, 리스크 수익률 및 일일 거래 횟수 제한을 설정하여, 트렌드 전환 후 회귀 지점에 대해 높은 확률 거래를 한다. 이 전략은 200주기 및 800주기의 EMA를 기준으로 하여, 빠른 EMA (((200주기)) 를 천천히 통과한 후 가격 회귀를 기다린 후 빠른 가격 회귀를 기다린 후 0.2%의 임의의 임의의 임의의 임의의 임의의 임의의 임의의 임의의 임의의 임의의 임의의 임의의 임의의 임의의 임의의 임의의 임의의의 임의의의 임의의의 임의의의의 임의의의 임의의의의

전략 원칙

이 전략의 핵심 원칙은 다음과 같은 기술 분석 개념에 기반합니다.

  1. 평선 교차 신호 인식전략: 200주기 및 800주기 EMA를 사용하여 시장의 전반적인 트렌드 방향을 결정한다. 빠른 EMA ((200) 를 통과하면 느린 EMA ((800) 를 통과하면, 시스템이 다중 트렌드로 인식되기 시작하며, 빠른 EMA를 통과하면 느린 EMA를 통과하면, 시스템이 공중 트렌드로 인식되기 시작한다. 이 단계는 트렌드를 결정하는 것뿐이며 거래를 유발하지 않는다.

  2. 트렌드 상태 추적이 전략은 부어 변수 ((in_bullish_trend 및 in_bearish_trend) 를 통해 현재 트렌드 상태를 지속적으로 추적하여 확인된 트렌드 방향에서만 거래되도록 합니다.

  3. 다시 호출 확인 메커니즘: 전통적인 평행선 교차 전략과 달리, 이 전략은 교차점에 직접 입문하지 않고, 빠른 EMA 근처에 가격 회정을 기다린다. 구체적으로, 가격과 빠른 EMA 사이의 오차 비율이 기본 회수 용량 (설정 0.2%) 보다 작을 때, 시스템은 회전이 확인된 것으로 간주하고, 이 때 거래 신호를 유발한다.

  4. 위험 제어 장치전략: 매 거래에 고정 비율의 중지 (설정값 0.5%) 과 위험과 수익률 (설정값 4: 1) 에 기반한 중지 레벨을 설정한다. 동시에, 하루에 최대 거래 수를 제한하여 과도한 거래를 피한다 (설정값 2번).

  5. 날짜 전환 재배치전략: 매일 거래가 시작될 때 거래 카운터를 재설정하여 거래 빈도 제한을 일일로 계산하십시오.

전략적 이점

코드의 심층적인 분석을 통해, 이 전략은 다음과 같은 중요한 장점을 가지고 있다:

  1. 트렌드 확인 후 거래: 전략은 오직 평균선 교차로 트렌드 방향을 확인한 후에만 입시를 고려하며, 정리 시장에서 자주 거래되는 손실을 피한다.

  2. 승률을 높이기 위해 재발전: 가격 회귀를 기다리면서 중요한 지지/저항점 (빠른 EMA) 에 도달하여 거래의 성공 가능성을 높이고, 가격의 과도한 연장 시 출입으로 인한 위험을 피할 수 있습니다.

  3. 명확한 위험 관리: 각 거래에는 미리 정의된 스톱로스 및 스톱 레벨이 있으며, 리스크-리드 비율은 4:1로 설정되어, 승률이 높지 않더라도 장기적인 수익 가능성을 보장합니다.

  4. 과도한 거래 보호하루 최대 거래 횟수를 제한하여 변동성 시장에서 과도한 거래를 방지하여 거래 비용을 절감하고 전체 전략의 안정성을 향상시킵니다.

  5. 비주얼 트레이딩 신호전략: 태그와 배경 색상의 변화를 사용하여 트레이딩 신호와 포지션 상태를 직관적으로 표시하여 분석 및 실시간 모니터링을 가능하게 합니다.

  6. 매개 변수 조정: 모든 핵심 매개 변수, EMA 주기, 리테크 용량 차, 리스크 수익률, 스톱 로즈 비율 및 최대 하루 거래 횟수 등은 입력 상자에서 조정할 수 있으며, 전략은 매우 적응성을 갖는다.

전략적 위험

이 전략은 합리적으로 설계되었지만, 다음과 같은 잠재적인 위험들이 있습니다.

  1. 트렌드 반전 후기 인식더 긴 기간의 EMA를 사용하기 때문에 (200과 800) 전략이 트렌드 반전을 식별할 때 상당한 지연이있을 수 있으며, 이는 트렌드 초기의 일부 상황을 놓치게됩니다. 해결 방법: 더 짧은 기간의 지표와 결합된 지표 보조 판단을 고려하거나 시장 특성에 따라 EMA 주기를 조정할 수 있습니다.

  2. 가짜 침입 위험위기 시장에서 EMA 교차는 종종 잘못된 신호로 인해 잘못된 신호로 이어질 수 있습니다. 해결 방법: 교차 확인 메커니즘을 추가 할 수 있습니다. 예를 들어, 교차 후 가격이 일정 시간 동안 트렌드 방향을 유지하도록 요구하거나 거래량 확인을 증가시킬 수 있습니다.

  3. 좁은 변동 아래의 빈번한 발사: 낮은 변동률 환경에서는 가격이 EMA 근처에서 자주 변동할 수 있으며, 회귀 조건을 충족 한 후 빠르게 떠나며 무효 신호를 형성한다. 해결 방법: 변동률 필터를 추가하거나, 낮은 변동률 환경에서는 회귀 용량 차이를 요구한다.

  4. 고정 손실 위험전략: 고정 비율의 스톱로드를 사용하며 시장의 변동성 차이를 고려하지 않습니다. 이는 높은 변동성 시장에서 중단 손실이 너무 작고 자주 유발 될 수 있습니다. 해결 방법: ATR을 사용하여 스톱 레벨을 동적으로 조정하는 것을 고려할 수 있습니다.

  5. 단일 기술 지표 의존전략은 주로 EMA 지표에 의존하며, 다차원적인 시장 분석이 부족합니다. 해결 방법: 신호 확인을 위해 다른 유형의 지표 (동량 지표, 변동률 지표와 같은) 와 결합을 고려하십시오.

전략 최적화 방향

위와 같은 분석을 바탕으로 전략은 다음과 같은 방향으로 최적화될 수 있습니다.

  1. 동적 변수 조정: 고정된 재측정 용량 차수 및 정지 비율을 시장의 변동률 (ATR와 같은) 에 기반한 동적 조정으로 변경하여 다른 시장 환경에 적응합니다. 시장의 변동 특성이 시간이 지남에 따라 변하기 때문에 고정된 매개 변수가 모든 시장 조건에 적용되지 않을 수 있습니다.

  2. 다중 시간 프레임 분석: 더 높은 시간 프레임의 추세에 대한 판단을 높이고, 전체적인 추세 방향으로만 거래하고, 큰 추세에서 역거래를 피한다. 이러한 최적화는 신호의 질을 높이고, 역거래의 위험을 줄일 수 있다.

  3. 거래량 확인: 입시 신호 생성 시 거래량 확인 조건을 추가합니다. 예를 들어, 회귀 지점에서 배급 지원 / 저항 돌파구를 요구합니다. 거래량은 가격 변화의 동력 원천이며 거래량 분석과 함께 신호의 효과를 높일 수 있습니다.

  4. 이윤/손실 대비 동적 조정4: 고정된 4:1 비율을 사용하는 대신 시장의 변동성 및 역사적 가격 구조에 따라 리스크/수익 비율을 동적으로 조정합니다. 이것은 전략이 시장의 다양한 단계와 특성에 더 잘 적응하도록 할 수 있습니다.

  5. 필터링 조건을 추가: 시장 트렌드 강도 지표 ((ADX와 같은) 를 필터로 추가하여 강한 트렌드 시장에서만 전략을 시작합니다. 이렇게하면 약한 트렌드 또는 흔들림 시장에서 너무 많은 가짜 신호가 발생하지 않습니다.

  6. 일부 수익 잠금 메커니즘: 추가된 분량 정지 기능으로, 가격이 특정 수익 수준을 달성했을 때 수익의 일부를 잠금하고 나머지 부분은 추세를 추적하기 위해 계속 유지한다. 이 메커니즘은 단기 수익과 장기 추세를 추적하는 요구를 균형을 잡을 수 있다.

  7. 리포트 시간대 최적화거래 시간 필터를 추가하여 시장 개시와 종료 전의 높은 변동성을 피하거나 특정 효율적인 거래 시간에 집중하십시오. 다양한 시간대의 시장 효율성과 특성은 크게 다르므로 전략 논리에 가장 적합한 시간대의 거래를 선택하면 전체 성능을 향상시킬 수 있습니다.

요약하다

쌍평선 회귀 역전 거래 전략은 평선 교차 신호와 가격 회귀 확인 메커니즘을 결합하여 전체적인 트렌드 추적 거래 시스템을 만듭니다. 이 전략은 명확한 입출장 논리뿐만 아니라 훌륭한 자금 관리 및 위험 제어 메커니즘을 갖추고 있습니다. 그것의 핵심 장점은 ‘확인 대기’의 개념에 있습니다.

그러나, 전략은 긴 주기 EMA에 대한 의존, 단일 기술 지표 판단, 고정 파라미터 설정과 같은 한계가 있습니다. 동적 파라미터 조정, 다중 시간 프레임 분석, 거래량 확인 및 트렌드 강도 필터링과 같은 최적화 조치를 도입함으로써 전략의 적응성과 안정성을 더욱 향상시킬 수 있습니다. 특히 높은 변동성 또는 추세가 불확실한 시장 환경에서 이러한 최적화 조치는 더 큰 역할을 할 것입니다.

결국, 이 전략은 균형 잡힌 입수와 안정적인 거래 사고방식을 나타내고, 어느 정도의 위험 감수성이 있는 동시에 중·장기적으로 안정적인 수익을 추구하는 거래자에게 적합하다. 합리적인 매개 변수 설정과 지속적인 전략 최적화를 통해 다양한 시장 환경에서 비교적 안정적인 성능을 유지할 수 있다.

전략 소스 코드
/*backtest
start: 2025-04-13 00:00:00
end: 2025-04-15 10:00:00
period: 2m
basePeriod: 2m
exchanges: [{"eid":"Futures_Binance","currency":"TRX_USD"}]
*/

//@version=6
strategy("200/500 EMA Retest Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=1)

// INPUTS
ema_fast_length = input.int(200, title="Fast EMA Length")
ema_slow_length = input.int(500, title="Slow EMA Length")
retest_tolerance = input.float(0.002, title="Retest Tolerance (%)") // 0.2% by default
risk_reward_ratio = input.float(4.0, title="Risk-Reward Ratio (TP:SL)")
stop_loss_perc = input.float(0.005, title="Stop Loss % (e.g., 0.5%)") // 0.5% default
max_trades_per_day = input.int(2, title="Max Trades Per Day")

// EMA CALCULATIONS
ema_fast = ta.ema(close, ema_fast_length)
ema_slow = ta.ema(close, ema_slow_length)

// PLOT EMAs
plot(ema_fast, color=color.blue)
plot(ema_slow, color=color.orange)

// CROSS DETECTION
bullish_cross = ta.crossover(ema_fast, ema_slow)
bearish_cross = ta.crossunder(ema_fast, ema_slow)

// STATE TRACKING
var bool in_bullish_trend = false
var bool in_bearish_trend = false
var int trades_today = 0

if ta.change(time("D")) != 0

    trades_today := 0

if bullish_cross
    in_bullish_trend := true
    in_bearish_trend := false

if bearish_cross
    in_bullish_trend := false
    in_bearish_trend := true

// RETEST CONDITION
bullish_retest = in_bullish_trend and (math.abs(close - ema_fast) / ema_fast <= retest_tolerance)
bearish_retest = in_bearish_trend and (math.abs(close - ema_fast) / ema_fast <= retest_tolerance)

// ENTRIES WITH SL/TP AND TRADE LIMIT
if bullish_retest and trades_today < max_trades_per_day
    strategy.entry("Long", strategy.long)
    strategy.exit("Long TP/SL", from_entry="Long", stop=close * (1 - stop_loss_perc), limit=close * (1 + stop_loss_perc * risk_reward_ratio))
    label.new(bar_index, low, "BUY", color=color.green, style=label.style_label_up, textcolor=color.white, size=size.small)
    trades_today += 1

if bearish_retest and trades_today < max_trades_per_day
    strategy.entry("Short", strategy.short)
    strategy.exit("Short TP/SL", from_entry="Short", stop=close * (1 + stop_loss_perc), limit=close * (1 - stop_loss_perc * risk_reward_ratio))
    label.new(bar_index, high, "SELL", color=color.red, style=label.style_label_down, textcolor=color.white, size=size.small)
    trades_today += 1

// BACKGROUND COLOR WHEN IN POSITION
bgcolor(strategy.position_size > 0 ? color.new(color.green, 90) : na)
bgcolor(strategy.position_size < 0 ? color.new(color.red, 90) : na)

// ALERTS
if bullish_retest
    alert("BUY Retest Triggered!", alert.freq_once_per_bar)

if bearish_retest
    alert("SELL Retest Triggered!", alert.freq_once_per_bar)