다중 시간 척도 모멘텀 추세 추적 및 위험 관리 양적 거래 전략

SMA MA SRI TP SL BE
생성 날짜: 2025-04-17 14:01:16 마지막으로 수정됨: 2025-04-17 14:01:16
복사: 1 클릭수: 350
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

다중 시간 척도 모멘텀 추세 추적 및 위험 관리 양적 거래 전략 다중 시간 척도 모멘텀 추세 추적 및 위험 관리 양적 거래 전략

개요

이것은 다중 시간 척도의 기술 지표 포트폴리오를 기반으로 한 정량 거래 전략으로, 이동 평균, 무작위 상대적으로 약한 지표 (SRI) 및 가격 움직임을 종합적으로 분석하여 정밀한 시장 진입 및 위험 통제를 구현합니다. 이 전략은 시장 추세를 포착하면서 거래 위험을 효과적으로 관리하며 안정적인 수익을 추구하는 정량 거래자에게 적합합니다.

전략 원칙

전략의 핵심은 다섯 가지 핵심 기술 지표로 구성됩니다.

  1. 이동 평균 지표:
  • 5일, 10일, 50일, 100일 간단한 이동 평균 (SMA)
  • 다중 시간 척도의 이동 평균의 상대적인 위치를 통해 시장 추세 방향을 판단
  • 가격과 이동 평균의 상대적인 관계가 입력 신호를 결정한다
  1. 무작위적으로 비교적 약한 지표 (SRI):
  • 1분 시간 스케일을 사용하여 SRI를 계산합니다.
  • SRI가 70보다 낮으면 다중 신호가 됩니다.
  • SRI가 30보다 높으면 공백 신호로
  1. 라인 형식:
  • 개시 가격과 이전 K선 개시 가격의 관계를 분석한다
  • 현재 가격 동력과 시장 분위기를 판단하는 것
  1. 위험 관리 메커니즘:
  • 정지점 (TP) 과 손실점 (SL) 을 설정합니다.
  • 손해배상보장 (Break-Even, BE) 전략을 실현
  • 동적으로 정지 위치를 조정

전략적 이점

  1. 다차원 신호 검증
  • 이동 평균, SRI 및 가격 동력을 통합하여 사용하는 것
  • 잘못된 신호의 가능성을 크게 줄여줍니다.
  • 거래 신호의 신뢰성을 높여라
  1. 유연한 위험 관리
  • 미리 설정된 정지점과 정지점
  • 동적 이익 손실 보증 기구
  • 1 거래 최대 손실을 효과적으로 제어
  1. 다중 시간 스케일 분석
  • 다른 주기적 이동 평균과 결합
  • 전체적인 시장 추세를 파악하는 것
  • 전략적 적응력을 높여라
  1. 매개 변수 조정
  • 사용자 정의 스톱, 스톱
  • 다른 시장 환경과 거래 품종에 적응

전략적 위험

  1. 매개변수 민감도 위험
  • 이동 평균과 SRI 매개 변수가 전략에 미치는 영향
  • 충분한 재검토와 변수 최적화가 필요합니다.
  1. 시장의 급격한 변동 위험
  • 극단적인 시장 상황에서는 전략이 실패할 수 있습니다.
  • 최대 철수 제한을 설정하는 것이 좋습니다.
  1. 과도한 거래의 위험
  • 자주 거래하는 것은 거래 비용을 증가시킬 수 있습니다.
  • 실제 거래 비용과 함께 조정할 필요가 있습니다.
  1. 지표 지체 위험
  • 이동평균이 다소 뒤쳐져 있습니다.
  • 트렌드의 초기 단계 신호를 놓칠 수 있습니다.

전략 최적화 방향

  1. 기계 학습 알고리즘을 도입합니다.
  • 감독 학습 알고리즘을 이용한 최적화 매개 변수
  • 동적으로 조정된 정지지점
  • 전략의 적응력을 높여라
  1. 추가 필터링 조건
  • 거래량 지표 도입
  • 트렌드 강도 지표
  • 신호의 정확도를 높여라
  1. 다종 적응성 최적화
  • 일반 변수 적응 장치를 개발
  • 인간의 개입을 줄여라
  • 전략의 보편성을 높여라

요약하다

이것은 다중 시간 척도 분석을 기반으로 한 정량 거래 전략이며, 통합 기술 지표와 첨단 위험 관리 메커니즘을 통해 시장 추세를 포착하고 거래 위험을 제어하는 것을 목표로합니다. 전략의 핵심 장점은 신호의 다차원 검증과 유연한 위험 제어입니다.

전략 소스 코드
/*backtest
start: 2024-04-17 00:00:00
end: 2025-04-15 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"TRX_USD"}]
*/

//@version=6
strategy("Strategia LONG & SHORT con TP, SL e BE", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1)

// === INPUT === //
tp_points = input.int(60000, "Take Profit (punti)")
sl_points = input.int(25000, "Stop Loss (punti)")
breakeven_trigger = tp_points * 0.5

// === MEDIE MOBILI === //
ma5  = ta.sma(close, 5)
ma10 = ta.sma(close, 10)
ma50 = ta.sma(close, 50)
ma100 = ta.sma(close, 100)

// === SRI da timeframe 1 minuto === //
sri_tf = "1"
sri_length = 10
sri_src = close
sri = request.security(syminfo.tickerid, sri_tf, ta.stoch(sri_src, sri_src, sri_src, sri_length))

// === CONDIZIONI LONG === //
long_candle        = open > close[1]
price_above_ma100  = close > ma100
ma50_above_ma100   = ma50 > ma100
ma5_above_ma10     = ma5 > ma10
sri_below_75       = sri < 70

long_condition = long_candle and price_above_ma100 and ma50_above_ma100 and ma5_above_ma10 and sri_below_75

// === CONDIZIONI SHORT === //
short_candle       = open < close[1]
price_below_ma100  = close < ma100
ma50_below_ma100   = ma50 < ma100
ma5_below_ma10     = ma5 < ma10
sri_above_25       = sri > 30

short_condition = short_candle and price_below_ma100 and ma50_below_ma100 and ma5_below_ma10 and sri_above_25

// === ENTRY LONG === //
if (long_condition)
    strategy.entry("Long", strategy.long)

// === ENTRY SHORT === //
if (short_condition)
    strategy.entry("Short", strategy.short)

// === GESTIONE USCITE === //
var float long_entry_price  = na
var float short_entry_price = na

// LONG: TP/SL + break-even
if (strategy.position_size > 0)
    if (na(long_entry_price))
        long_entry_price := strategy.position_avg_price

    tp_price_long = long_entry_price + tp_points * syminfo.mintick
    sl_price_long = long_entry_price - sl_points * syminfo.mintick
    be_trigger_long = long_entry_price + breakeven_trigger * syminfo.mintick
    sl_be = close >= be_trigger_long ? long_entry_price : sl_price_long

    strategy.exit("Exit Long", from_entry="Long", limit=tp_price_long, stop=sl_be)

// SHORT: TP/SL + break-even
if (strategy.position_size < 0)
    if (na(short_entry_price))
        short_entry_price := strategy.position_avg_price

    tp_price_short = short_entry_price - tp_points * syminfo.mintick
    sl_price_short = short_entry_price + sl_points * syminfo.mintick
    be_trigger_short = short_entry_price - breakeven_trigger * syminfo.mintick
    sl_be_short = close <= be_trigger_short ? short_entry_price : sl_price_short

    strategy.exit("Exit Short", from_entry="Short", limit=tp_price_short, stop=sl_be_short)

// Reset quando flat
if (strategy.position_size == 0)
    long_entry_price := na
    short_entry_price := na