이중 이동 평균 추세 콜백 적응형 ATR 손절매 이익 및 손절매 양적 거래 전략

EMA MA ATR 趋势跟踪 回调策略 风险管理 止损 止盈
생성 날짜: 2025-03-03 09:49:20 마지막으로 수정됨: 2025-03-03 09:49:20
복사: 2 클릭수: 635
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

이중 이동 평균 추세 콜백 적응형 ATR 손절매 이익 및 손절매 양적 거래 전략 이중 이동 평균 추세 콜백 적응형 ATR 손절매 이익 및 손절매 양적 거래 전략

전략 개요

이 전략은 쌍평선 시스템 기반의 트렌드 추적 역전 거래 전략으로, ATR의 스톱 손실과 최적화된 스톱 비율 디자인을 결합한다. 전략의 핵심은 주 트렌드 방향을 식별하고, 트렌드 역전과 역전 시 거래에 진입하며, 시장의 변동성에 기반한 위험 관리 방법을 사용합니다. 이 전략은 빠른 평면과 느린 평면의 위치 관계를 통해 시장의 흐름을 판단하고, 트렌드 확인 후 역전 기회를 기다립니다. 가격이 역전에서 회복되어 빠른 평면을 통과하면 거래 신호가 발생한다.

전략 원칙

이 전략은 다음과 같은 핵심 원칙을 바탕으로 구성되었습니다.

  1. 트렌드 식별 메커니즘: 10주기 EMA ((고속선) 과 50주기 EMA ((오속선) 을 사용하여 쌍평등선 시스템을 구축한다. 빠른 선이 느린 선 위에 있을 때, 상승 추세로 판단되며, 빠른 선이 느린 선 아래에 있을 때, 하향 추세로 판단된다.

  2. 리콜 확인 논리: 상승 추세에서, 닫기 가격이 빠른 평균선보다 낮지만 최저 가격이 느린 평균선보다 여전히 높을 때, 잠재적인 구매 리바운드로 간주합니다. 하향 추세에서, 닫기 가격이 빠른 평균선보다 높지만 최고 가격이 느린 평균선보다 여전히 낮을 때, 잠재적인 판매 리바운드로 간주합니다.

  3. 입력 신호 생성:

    • 다중 헤드 입구: 상승 추세에서, 전 주기의 회전이 발생하고, 현재 주기의 오픈은 빠른 라인보다 낮지만 닫는 것은 빠른 라인보다 높으며, 상향 돌파구를 형성한다.
    • 空頭入場: 하향 추세에서, 전주기에는 반발이 발생하고, 현재주기 오픈은 빠른 선보다 높지만 클로징은 빠른 선보다 낮아, 하향 돌파구를 형성
  4. 위험 관리 시스템:

    • 스톱 로즈 설정: ATR 값 (((14주기) 을 기준으로 조정 가능한 배수 (((기본 2.0) 로 곱한다.
    • 막기 목표: 1: 2의 리스크 수익률을 적용하고, 막기 거리는 막기 거리의 2배입니다.

이 전략은 트렌드 상황에서 높은 확률로 회귀하는 진입점을 찾는 메커니즘을 구현하고, 가격 회귀가 평균선 근처에 있을 때까지 기다린 다음 회귀가 종료되는 신호가 나타날 때 진입하여 트렌드 추적의 장점을 극대화하면서 진입 비용을 절감한다.

전략적 이점

  1. 추세 확인과 회귀: 전략은 주 트렌드 방향에 따라 거래하는 것뿐만 아니라 회전을 기다리는 것으로 입문 지점을 낮추고 위험 수익률을 높인다. 간단한 트렌드 추적 전략과 비교하여 이러한 방법은 트렌드 고도 또는 낮은 지점 근처에 입문하는 것을 피할 수 있으며 역으로의 위험을 줄인다.

  2. 자율적 위험 관리: ATR 지표를 통해 스톱 라인을 동적으로 조정하면, 전략은 현재 시장의 변동성에 따라 리스크 노출을 조정할 수 있습니다. 이것은 변동성이 증가하면 자동으로 스톱 라인을 확장하고, 변동성이 감소하면 스톱 라인을 축소하여 시장의 소음으로 흔들리는 것을 효과적으로 방지합니다.

  3. 명확한 출입 및 출입 규칙: 전략은 명확한 입시 조건과 출전 규칙을 가지고 있으며, 주관적 판단과 감정적 방해를 줄여줍니다. 빠른 선과 종식 가격의 교차는 명확한 신호를 제공하여 전략의 실행을 더 간단하고 직접적으로 만듭니다.

  4. 위험과 이익의 최적화이 전략은 2배의 스톱로스 거리를 설정함으로써, 이득이 되는 리스크/이익 비율을 보장하고, 승률이 높지 않더라도 장기적으로 수익성을 유지할 수 있다.

  5. 자금 관리 통합: 전략은 기본으로 총 자본의 100%를 사용하며, 0.01%의 수수료 비용을 고려하여 실제 거래 결과에 더 가깝게 재검토합니다.

전략적 위험

  1. 시장의 부진: 명백한 추세가 없는 흔들리는 시장에서 이 전략은 빈번한 잘못된 신호를 생성할 수 있으며, 이로 인해 연속적인 스톱로스가 발생할 수 있다. 빠른 평균선과 느린 평균선이 자주 교차할 때, 추세를 판단하는 정확도가 떨어지고, 명확한 추세가 형성되기 전에 전략 운행을 중단하는 것이 좋습니다.

  2. 매개변수 최적화 위험: 평균선주기 ((10과 50) 와 ATR 배수 ((2.0) 의 선택은 전략의 성과에 중요한 영향을 미칩니다. 역사적 데이터에 과도한 적합성의 위험이 높기 때문에 다른 시장 조건과 시간 프레임에 대한 안정성 테스트를 수행하고 적응 또는 동적 파라미터를 사용하는 것을 고려하는 것이 좋습니다.

  3. 급격한 반전 위험: 강력한 트렌드가 급격히 역전되면, 전략이 새로운 트렌드에 적절하게 적응하지 못하여 큰 손실을 초래할 수 있습니다. 특히 가격이 스톱 영역을 뛰어 넘을 때 실제 스톱 손실은 예상보다 나쁠 수 있습니다.

  4. 유동성 위험: 유동성이 낮은 시장에서, 전략의 실제 실행 가격은 재검토 결과와 현저하게 차이가 있을 수 있습니다. 특히, 변동성이 급격히 증가할 때, 슬라이드 포인트는 스톱로스 및 스톱 실행이 바람직하지 않을 수 있습니다.

  5. 제한을 인식하는 회귀: 현재의 회귀 식별 메커니즘은 비교적 간단하며, 가격과 평균의 관계에만 의존하고, 모든 효과적인 회귀를 식별하지 못할 수도 있고, 복잡한 가격 구조를 잘못 판단할 수도 있다.

위험을 줄이는 방법은 다음과 같습니다: 필터 조건을 추가 (예: 변동률 필터), 다른 시장 단계에 맞는 최적화 파라미터를 추가, 트렌드 강도 확인 지표를 추가, 그리고 전체 포지션 거래가 아닌 부분 포지션 관리를 실시한다.

전략 최적화 방향

  1. 추세 강도 필터 추가: 현재 전략은 평균선 교차 판단 트렌드만을 사용하며, ADX, DMI 등의 트렌드 강도 지표를 필터링 조건으로 추가할 수 있으며, 강한 트렌드가 확인될 때만 거래를 실행하여 신호 품질을 향상시킵니다. 최적화 코드 예제:
adx = ta.adx(14)
strong_trend = adx > 25
long_entry = long_entry and strong_trend
short_entry = short_entry and strong_trend
  1. 동적으로 조정된 리스크/이익 비율: 현재 전략은 고정 1: 2 리스크 수익 비율을 사용하며, 시장의 변동성이나 추세 강도에 따라 동적으로 조정할 수 있으며, 강한 추세에서 더 큰 수익 목표를 사용하며, 약한 추세에서 더 보수적인 설정을 사용합니다.

  2. 다중 시간 프레임 분석: 더 큰 시간 프레임의 트렌드를 판단하여 필터링 조건으로 거래 방향이 더 큰 주기적 트렌드와 일치하는지 확인하고 역행 거래를 줄여줍니다. 더 큰 시간 프레임의 평균선 데이터를 도입하여 달성 할 수 있습니다.

  3. 응답 인식 메커니즘을 최적화: 현재 회귀를 식별하는 것은 비교적 간단하며, 회귀가 끝날 때를 보조하는 운동 지표 (RSI, 무작위 지표와 같은) 를 추가하거나, 지원/저항 수준을 추가 참조로 사용하는 것을 고려할 수 있습니다.

  4. 부분 포지션 관리 구현: 신호 강도, 시장의 변동성 또는 트렌드의 강도에 따라 거래당 자본 비율을 조정할 수 있습니다. 항상 100%의 자금을 사용하는 대신, 이는 위험을 분산시키고 자본 효율성을 최적화하는 데 도움이됩니다.

  5. 시간 필터를 도입: 시장 개시, 폐지 또는 중요한 뉴스 발표 전후 거래를 피하고, 비정상적인 변동으로 인한 위험을 줄여줍니다. 시간 조건 필터링 신호를 통해 구현할 수 있습니다.

  6. 이윤 보호 제도를 강화: 이동적 손실을 달성하거나 특정 수익 목표를 달성한 후에 수익의 일부를 보호하는 기능을 구현하고 전반적인 위험 관리 효과를 향상시킵니다.

요약하다

“쌍평준 트렌드 리커버스 자율 적응 ATR 중지 중지 손실 수량화 거래 전략”은 트렌드 추적과 리커버스 입구 장점을 결합한 완전한 거래 시스템이다. 이 전략은 빠른 느린 평준으로 트렌드 방향을 결정하고, 가격 리커버스가 평준 근처로 돌아간 후, 리커버스의 종료 징후가 나타나면 입시하며, ATR 기반의 동적 위험 관리 장치를 적용하는 것은 각 거래의 위험을 통제 할 수 있도록한다.

전략의 주요 장점은 낮은 비용 입시, 적응 가능한 위험 제어 및 명확한 거래 규칙으로 명확한 추세가있는 시장에서 사용하기에 적합합니다. 그러나, 흔들리는 시장에서 부실한 성능이있을 수 있으며, 신호 품질을 높이기 위해 추가 필터링 장치가 필요합니다.

미래 최적화 방향은 트렌드 강도 필터링을 늘리고, 위험 수익률을 동적으로 조정하고, 다중 시간 프레임 분석 및 조정 인식 메커니즘을 개선하는 등입니다. 이러한 최적화를 통해, 전략은 다양한 시장 환경에서 안정적인 성능을 유지하고, 장기적인 수익성을 향상시킬 것으로 예상됩니다.

이 전략은 기술적 분석의 여러 핵심 개념을 통합하여 트렌드 추적, 리워드 거래 및 위험 관리를 이해하는 거래자에게 좋은 참고 가치를 제공합니다. 그것은 개인 거래 스타일과 목표 시장 특성에 따라 추가로 사용자 정의 및 최적화 할 수있는 확장 가능한 프레임 워크를 제공합니다.

전략 소스 코드
/*backtest
start: 2024-03-02 00:00:00
end: 2024-04-02 19:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
// Pullback Strategy
strategy("Pullback Strategy", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.01)

// Inputs
i_fast_ma_length = input.int(10, "Fast MA Length", minval=1)
i_slow_ma_length = input.int(50, "Slow MA Length", minval=1)
i_atr_period = input.int(14, "ATR Period", minval=1)
i_sl_multiplier = input.float(2.0, "Stop Loss Multiplier", minval=0.1, step=0.1)

// Moving Averages
fast_ma = ta.ema(close, i_fast_ma_length)
slow_ma = ta.ema(close, i_slow_ma_length)

// Trend Determination
trend_up = fast_ma > slow_ma
trend_down = fast_ma < slow_ma

// ATR Calculation
atr = ta.atr(i_atr_period)

// Pullback in Progress for Long
pullback_in_progress = trend_up and close < fast_ma and low > slow_ma

// Long Entry Condition
long_entry = trend_up and pullback_in_progress[1] and open < fast_ma and close > fast_ma

// Rally in Progress for Short
rally_in_progress = trend_down and close > fast_ma and high < slow_ma

// Short Entry Condition
short_entry = trend_down and rally_in_progress[1] and open > fast_ma and close < fast_ma

// Long Entry and Exit
if long_entry
    entry_price = close
    stop_loss_price = entry_price - (atr * i_sl_multiplier)
    take_profit_price = entry_price + (2 * (entry_price - stop_loss_price))
    strategy.entry("Long", strategy.long)
    strategy.exit("Long Exit", "Long", stop=stop_loss_price, limit=take_profit_price)

// Short Entry and Exit
if short_entry
    entry_price = close
    stop_loss_price = entry_price + (atr * i_sl_multiplier)
    take_profit_price = entry_price - (2 * (stop_loss_price - entry_price))
    strategy.entry("Short", strategy.short)
    strategy.exit("Short Exit", "Short", stop=stop_loss_price, limit=take_profit_price)

// Plotting MAs
plot(fast_ma, color=color.orange, linewidth=2, title="Fast MA")
plot(slow_ma, color=color.red, linewidth=2, title="Slow MA")

// Plotting Entry Points
plotshape(long_entry, title="Long Entry", style=shape.triangleup, color=color.green, location=location.belowbar)
plotshape(short_entry, title="Short Entry", style=shape.triangledown, color=color.red, location=location.abovebar)