この戦略は,トレンドフォローとリスクマネジメントの特徴を組み合わせ,変動性に基づくダイナミックタイムリング取引システムである.この戦略の核心は,市場の傾向の変化を特定するために波動性チャネルを使用し,取引リスクの正確な制御を達成するために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()