다중 기간 추세 추적 및 확률적 진동 최적화 전략

EMA ATR MTS
생성 날짜: 2025-02-18 15:09:41 마지막으로 수정됨: 2025-02-18 15:09:41
복사: 1 클릭수: 349
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

다중 기간 추세 추적 및 확률적 진동 최적화 전략

개요

이 전략은 다주기 분석에 기반한 트렌드 추적 거래 시스템으로, 지수 이동 평균 ((EMA) 와 무작위 지표 ((Stochastic) 를 결합하여 거래 방향과 진입 시기를 결정한다. 이 전략은 15분 주기로 트렌드 방향을 확인하고 1-5분 주기로 특정 진입 기회를 찾고, 엄격한 위험 관리와 분기 수익을 통해 거래 성능을 최적화한다.

전략 원칙

이 전략은 다단계 거래 조건 검증 메커니즘을 사용합니다.

  1. 트렌드 확인: 50주기 EMA를 기준으로 트렌드 방향을 판단하고, EMA 위에 있는 가격이 상승 트렌드로 간주되며, 반대로 하락 트렌드로 간주됩니다.
  2. 진입 조건: 트렌드 방향을 확인한 후, 무작위 지표 ((14,3,3) 를 사용하여 오버 바이 오버 셀 기회를 찾습니다. 무작위 지표가 30보다 낮으면 다중으로 진입하고 70보다 높으면 공백으로 진입합니다.
  3. 포지션 관리: 고정 포지션 0.02 단위를 사용하여 거래
  4. 위험 제어: ATR에 따라 1.5 배의 변동률을 설정한 중지 손실, 목표 가격의 50%를 달성하면 중지 손실을 비용으로 올립니다.
  5. 이윤 모음: 두 배로 중단, 첫 번째 1:1 리스크 수익률에서 수익, 두 번째 1.5 배 목표 가격에서 수익

전략적 이점

  1. 다주기 분석은 정확도를 향상시킵니다: 높은 낮은 시간 주기를 조합하여 큰 트렌드 방향의 정확성을 보장하고 정확한 시기를 파악할 수 있습니다.
  2. 완벽한 위험 관리: 시장의 변동성에 기반한 동적 상쇄를 적용하여 고정 상쇄로 인해 발생할 수 있는 불응을 방지합니다.
  3. 유연한 수익제도 (Flexible Profit Scheme): 분배적 인출을 통해 수익의 일부를 고정할 수 있고, 동시에 큰 시장을 완전히 놓치지 않을 수 있습니다.
  4. 이동식 손해보호 이익: 시장이 유리하게 진행될 때 이동식 손해보호를 통해 얻은 이익을 보호하는 것

전략적 위험

  1. 주파수 시장 위험: 주파수 주파수 시장에서 빈번하게 잘못된 신호가 발생하여 연속적인 손실이 발생할 수 있습니다.
  2. 슬라이드 포인트 위험: 시장이 급격히 변동할 때, 실제 거래 가격은 이론 가격과 큰 오차를 일으킬 수 있습니다.
  3. 자금 관리 위험: 고정 포지션 설정이 모든 자금 규모의 계정에 적합하지 않을 수 있습니다.
  4. 변수 민감성: EMA와 무작위 지표의 변수 설정이 전략 성능에 큰 영향을 미칩니다.

전략 최적화 방향

  1. 시장 환경 필터: 변동률 지표 또는 추세 강도 지표를 도입하여 다른 시장 환경에서 전략 매개 변수를 조정하거나 거래를 중지합니다.
  2. 다이내믹 포지션 관리: 계좌 자금 규모와 시장의 변동에 따라 거래 포지션을 동적으로 조정합니다.
  3. 입시 조건 최적화: 가격 형태 또는 다른 기술 지표의 확인을 증가시키고 입시 신호의 신뢰성을 향상시킵니다.
  4. 스톱 스톱 로즈 최적화: 다양한 시장 환경의 동성에 따라 리스크 수익률을 조정하여 더 유연한 자금 관리를 구현

요약하다

이 전략은 다주기 분석과 여러 기술 지표의 조합을 통해, 비교적 완벽한 트렌드 추적 거래 시스템을 구축한다. 전략의 핵심 장점은 엄격한 위험 관리와 유연한 수익 창출 계획에 있다. 그러나 실제 적용에서는 여전히 시장 환경과 자금 규모에 따라 적절한 매개 변수를 최적화해야 한다. 제안된 최적화 방향을 통해, 전략은 다양한 시장 환경에서 더 안정적인 성능을 얻을 수 있다.

전략 소스 코드
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-16 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("15-Min Trend Strategy", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1)

// Define EMA for trend confirmation
ema50 = ta.ema(close, 50)
trendLong = close > ema50
trendShort = close < ema50

// Stochastic settings
length = 14
smoothK = 3
smoothD = 3
stochK = ta.sma(ta.stoch(close, high, low, length), smoothK)
stochD = ta.sma(stochK, smoothD)

// Entry conditions
longCondition = stochK < 30 and trendLong
shortCondition = stochK > 70 and trendShort

// ATR-based stop-loss calculation
atrValue = ta.atr(14)
stopLossLong = close - (1.5 * atrValue)
stopLossShort = close + (1.5 * atrValue)
takeProfitLong = close + (2 * atrValue)
takeProfitShort = close - (2 * atrValue)

// Execute trades
if longCondition
    strategy.entry("Long", strategy.long, qty=2)
    strategy.exit("TP Long 1", from_entry="Long", qty=1, stop=stopLossLong, limit=takeProfitLong)
    strategy.exit("TP Long 2", from_entry="Long", qty=1, stop=stopLossLong, limit=takeProfitLong * 1.5)

if shortCondition
    strategy.entry("Short", strategy.short, qty=2)
    strategy.exit("TP Short 1", from_entry="Short", qty=1, stop=stopLossShort, limit=takeProfitShort)
    strategy.exit("TP Short 2", from_entry="Short", qty=1, stop=stopLossShort, limit=takeProfitShort * 1.5)

// Move SL to breakeven after 50% move to target
if strategy.position_size > 0
    if strategy.position_avg_price != 0
        moveToBELong = close >= (strategy.position_avg_price + (takeProfitLong - strategy.position_avg_price) * 0.5)
        if moveToBELong
            strategy.exit("BE Long", from_entry="Long", qty=1, stop=strategy.position_avg_price)
        
        moveToBEShort = close <= (strategy.position_avg_price - (strategy.position_avg_price - takeProfitShort) * 0.5)
        if moveToBEShort
            strategy.exit("BE Short", from_entry="Short", qty=1, stop=strategy.position_avg_price)