이 전략은 변동성에 기반을 둔 동적 타이밍 거래 시스템으로, 트렌드 추적 및 리스크 관리 기능을 결합합니다. 전략의 핵심은 시장 트렌드 변화를 식별하기 위해 변동성 채널을 사용하여 거래 위험을 정확하게 제어하기 위해 ATR 기반 동적 위치 관리 메커니즘을 통합합니다. 이 전략은 특히 매우 변동적인 시장 환경에서 운영하기에 적합하며 시장 변동성에 보유를 조정할 수 있습니다.
이 전략의 핵심 논리는 다음의 핵심 요소에 기반합니다. 1. 변동성 채널 계산: 시장 변동성을 측정하기 위해 ATR (평균 진실 범위) 지표를 사용하여 동적 변동성 채널을 구성합니다. 채널 폭은 ATR 값과 인수 인자로 결정되며 시장 특성에 따라 유연하게 조정 할 수 있습니다. 트렌드 결정 메커니즘: 변동성 채널에 대한 가격의 상대적 위치를 통해 트렌드 방향을 결정합니다. 가격이 채널 위에 넘어가면 상승 추세가 설정되며, 채널 아래에 넘어가면 하락 추세가 설정됩니다. 3. 포지션 관리 시스템: 초기 자본과 거래 당 미리 설정된 리스크를 기반으로 포지션 크기를 동적으로 계산하고 실시간 스톱 로스 거리를 결합하여 각 거래에 대한 일관된 리스크 노출을 보장합니다. 4. 리스크 제어 메커니즘: 변동성 채널을 기반으로 동적 스톱 로스를 구현하고, 가격이 스톱 레벨에 도달하면 자동으로 포지션을 닫고, 오버나이트 위험을 피하기 위해 시장 폐쇄 전에 포지션을 폐쇄하도록 강요합니다.
이것은 변동성, 트렌드 추적 및 리스크 관리를 결합한 완전한 거래 시스템이다. 전략은 위험을 제어하기 위해 과학적 자본 관리 방법을 사용하여 변동성 채널을 통해 트렌드 변화를 포착합니다. 적절한 매개 변수 최적화 및 추가 필터링 메커니즘을 통해 다양한 시장에서 성능이 최적화되지 않을 수 있지만 대부분의 시장 환경에서 안정적으로 작동 할 수 있습니다. 전략의 핵심 장점은 적응력과 리스크 제어 능력에 있습니다. 이는 중장기 전략 확장 및 최적화에 대한 기초 프레임워크로 적합합니다.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-10 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("BNF FUT 5 min Volatility Strategy", overlay=true) // Inputs length = input.int(20, "Length", minval=2) src = input.source(close, "Source") factor = input.float(2.0, "Multiplier", minval=0.25, step=0.25) initial_capital = input.float(100000, "Initial Capital ($)") risk_per_trade = input.float(1.0, "Risk per Trade (%)", minval=0.1, maxval=10.0) // Volatility Stop Function volStop(src, atrlen, atrfactor) => if not na(src) var max = src var min = src var uptrend = true var float stop = na atrM = nz(ta.atr(atrlen) * atrfactor, ta.tr) max := math.max(max, src) min := math.min(min, src) stop := nz(uptrend ? math.max(stop, max - atrM) : math.min(stop, min + atrM), src) uptrend := src - stop >= 0.0 if uptrend != nz(uptrend[1], true) max := src min := src stop := uptrend ? max - atrM : min + atrM [stop, uptrend] // Calculate Volatility Stop [vStop, uptrend] = volStop(src, length, factor) // Plot Volatility Stop plot(vStop, "Volatility Stop", style=plot.style_cross, color=uptrend ? #009688 : #F44336) // Risk Management and Position Sizing atr = ta.atr(length) stop_distance = math.abs(close - vStop) // Distance to stop level position_size = (initial_capital * (risk_per_trade / 100)) / stop_distance // Position size based on risk per trade position_size := math.max(position_size, 1) // Ensure minimum size of 1 // Strategy Logic if not na(vStop) if uptrend and not uptrend[1] // Transition to uptrend strategy.close("Short") strategy.entry("Long", strategy.long, qty=position_size) if not uptrend and uptrend[1] // Transition to downtrend strategy.close("Long") strategy.entry("Short", strategy.short, qty=position_size) // Exit on Stop Hit if strategy.position_size > 0 and low < vStop // Exit long if stop hit strategy.close("Long", comment="Stop Hit") if strategy.position_size < 0 and high > vStop // Exit short if stop hit strategy.close("Short", comment="Stop Hit") if (hour == 15 and minute == 15) strategy.close_all()