この戦略は主に2つの指標,ATR (平均真差) とSMA (シンプル・ムービング・アベア) を用いて,市場の統合とブレイクを決定し,それに応じて取引を行う.この戦略の主な考え方は,価格が上下ATRチャネルを突破するとブレイクとみなされ,ポジションが開かれ,価格がATRチャネルに戻ると統合とみなされ,ポジションが閉鎖される.同時に,戦略はリスク管理とポジション管理を使用して,各取引のリスクとポジションサイズを制御する.
この戦略は,リスク制御とポジション管理を使用して,各取引のリスクとポジションサイズを制御しながら,価格ブレイクと統合を決定することで,簡単な指標であるATRとSMAを使用して取引を行う.戦略論理は明確で,理解し,実行するのが簡単ですが,不安定な市場でパフォーマンスが悪いこと,戦略パフォーマンスに対するパラメータ設定の重要な影響,柔軟性のないストップ・ロストとテイク・プロフィート設定,過度に単純なポジション管理など,実際のアプリケーションでは,トレンドフィルタリング条件を追加し,より柔軟なストップ・ロストとテイク・プロフィート方法を使用し,より複雑なポジション管理方法を使用し,他のフィルタリング条件を追加し,戦略の信頼性と安定性を向上させるために,特定の状況に基づいて最適化および改善する必要があります.
/*backtest start: 2024-05-09 00:00:00 end: 2024-05-16 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Consolidation Breakout Strategy", overlay=true) // Input Parameters length = input.int(20, "Length", minval=1) multiplier = input.float(2.0, "Multiplier", minval=0.1, maxval=10.0) risk_percentage = input.float(1.0, "Risk Percentage", minval=0.1, maxval=10.0) stop_loss_percentage = input.float(1.0, "Stop Loss Percentage", minval=0.1, maxval=10.0) take_profit_percentage = input.float(2.0, "Take Profit Percentage", minval=0.1, maxval=10.0) // ATR calculation atr_value = ta.atr(length) // Average price calculation average_price = ta.sma(close, length) // Upper and lower bounds for consolidation detection upper_bound = average_price + multiplier * atr_value lower_bound = average_price - multiplier * atr_value // Consolidation detection is_consolidating = (high < upper_bound) and (low > lower_bound) // Breakout detection is_breakout_up = high > upper_bound is_breakout_down = low < lower_bound // Entry conditions enter_long = is_breakout_up and not is_consolidating enter_short = is_breakout_down and not is_consolidating // Exit conditions exit_long = low < (average_price - atr_value * stop_loss_percentage) or high > (average_price + atr_value * take_profit_percentage) exit_short = high > (average_price + atr_value * stop_loss_percentage) or low < (average_price - atr_value * take_profit_percentage) // Risk calculation risk_per_trade = strategy.equity * (risk_percentage / 100) position_size = risk_per_trade / atr_value // Strategy if (enter_long) strategy.entry("Long", strategy.long, qty=position_size) if (enter_short) strategy.entry("Short", strategy.short, qty=position_size) if (exit_long) strategy.close("Long") if (exit_short) strategy.close("Short")