이 전략은 변동성에 기반을 둔 동적 타이밍 거래 시스템으로, 트렌드 추적 및 리스크 관리 기능을 결합합니다. 전략의 핵심은 시장 트렌드 변화를 식별하기 위해 변동성 채널을 사용하여 거래 위험을 정확하게 제어하기 위해 ATR 기반 동적 위치 관리 메커니즘을 통합합니다. 이 전략은 특히 매우 변동적인 시장 환경에서 운영하기에 적합하며 시장 변동성에 보유를 조정할 수 있습니다.
이 전략의 핵심 논리는 다음의 핵심 요소에 기반합니다.
이것은 변동성, 트렌드 추적 및 리스크 관리를 결합한 완전한 거래 시스템이다. 전략은 위험을 제어하기 위해 과학적 자본 관리 방법을 사용하여 변동성 채널을 통해 트렌드 변화를 포착합니다. 적절한 매개 변수 최적화 및 추가 필터링 메커니즘을 통해 다양한 시장에서 성능이 최적화되지 않을 수 있지만 대부분의 시장 환경에서 안정적으로 작동 할 수 있습니다. 전략의 핵심 장점은 적응력과 리스크 제어 능력에 있습니다. 이는 중장기 전략 확장 및 최적화에 대한 기초 프레임워크로 적합합니다.
/*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()