この戦略は,ボリンジャーバンド,トレンドインジケーター,モメンタムインジケーター,および波動性インジケーターを組み合わせ,価格・ボリューム分析を通じて取引決定を行うマルチテクニカル指標トレンドフォローティングシステムである.この戦略は,ADXトレンド強度確認とボリュームブレークスループ検証を組み合わせ,MACDとATRトレーリングストップを出口メカニズムとして使用し,ボリンジャーバンドのブレイクアウトを主なエントリー信号として使用する.
戦略の基本論理は以下の側面に基づいています 1. 価格変動範囲の基準としてボリンジャー帯を使用し,価格が上部帯を超えると長い機会と下部帯を下回ると短い機会を探します. 2. ADX インディケーターを使用してトレンド強さを判断し,トレンドが十分に強くなるときにのみポジションを開く (ADX>25) 3. 価格ブレイクの有効性を確認するために,ボリューム急上昇 (1.5倍の20日平均ボリューム) を要求する 4. スーパートレンドインジケーターをトレンド方向フィルターとして使用し,価格がトレンドラインの正しい側にある場合にのみポジションを入力します. 5. 出口条件としてMACDのデスクロス,ATRのトレイルストップ,またはADXの弱化を使用
この戦略は,ボリンジャーバンド,ADX,スーパートレンド,MACD,および他の指標の有機的統合を通じて,トレンドフォローとリスク制御を組み合わせた取引システムを構築する,よく設計されたマルチインジケータートレンドフォロー戦略である.この戦略の利点は複数の信号確認と包括的なリスク制御メカニズムにあるが,過剰な最適化とパラメータ敏感性の課題にも直面している.継続的な最適化と市場環境へのダイナミックな適応を通じて,この戦略はさまざまな市場条件で安定したパフォーマンスを維持する可能性がある.
/*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("Nifty Options Trendy Markets with TSL", overlay=true) // Input Parameters lengthBB = input(20, title="Bollinger Bands Length") multBB = input(2.0, title="Bollinger Bands Multiplier") adxLength = input(14, title="ADX Length") adxThreshold = input(25, title="ADX Entry Threshold") adxExitThreshold = input(20, title="ADX Exit Threshold") superTrendLength = input(10, title="Supertrend Length") superTrendMultiplier = input(3.0, title="Supertrend Multiplier") macdFast = input(12, title="MACD Fast Length") macdSlow = input(26, title="MACD Slow Length") macdSignal = input(9, title="MACD Signal Length") atrLength = input(14, title="ATR Length") atrMultiplier = input(1.5, title="Trailing Stop ATR Multiplier") volumeSpikeMultiplier = input(1.5, title="Volume Spike Multiplier") // Calculations [macdLine, signalLine,_ ] = ta.macd(close, macdFast, macdSlow, macdSignal) macdCrossover = ta.crossover(macdLine, signalLine) macdCrossunder = ta.crossunder(macdLine, signalLine) [middleBB,upperBB,lowerBB] = ta.bb(close, lengthBB, multBB) [supertrend, direction] = ta.supertrend(superTrendMultiplier,superTrendLength) len = input.int(17, minval=1, title="DI Length") lensig = input.int(14, title="ADX Smoothing", minval=1, maxval=50) [diplus, diminus, adx] = ta.dmi(len, lensig) atr = ta.atr(atrLength) trailingStopLong = close - atr * atrMultiplier // For long trades trailingStopShort = close + atr * atrMultiplier // For short trades volumeSpike = volume > ta.sma(volume, 20) * volumeSpikeMultiplier // Entry Conditions longEntry = ta.crossover(close, upperBB) and adx > adxThreshold and volumeSpike and close > supertrend shortEntry = ta.crossunder(close, lowerBB) and adx > adxThreshold and volumeSpike and close < supertrend // Exit Conditions longExit = ta.crossunder(macdLine, signalLine) or close < trailingStopLong or adx < adxExitThreshold shortExit = ta.crossover(macdLine, signalLine) or close > trailingStopShort or adx < adxExitThreshold // Strategy Entries and Exits if (longEntry) strategy.entry("Long", strategy.long) if (shortEntry) strategy.entry("Short", strategy.short) if (longExit) strategy.close("Long") if (shortExit) strategy.close("Short") // Plotting plot(supertrend, color=color.blue, style=plot.style_line, linewidth=2, title="Supertrend Line") plot(trailingStopLong, title="Trailing Stop for Long", color=color.green, style=plot.style_line) plot(trailingStopShort, title="Trailing Stop for Short", color=color.red, style=plot.style_line) bgcolor(longEntry ? color.new(color.green, 90) : shortEntry ? color.new(color.red, 90) : na, title="Background for Entry") // Alerts alertcondition(longEntry, title="Long Entry", message="Buy Call: Long entry conditions met") alertcondition(shortEntry, title="Short Entry", message="Buy Put: Short entry conditions met") alertcondition(longExit, title="Long Exit", message="Exit Call: Long exit conditions met") alertcondition(shortExit, title="Short Exit", message="Exit Put: Short exit conditions met")