この戦略は,極端な市場低迷の統計的特徴に基づいています. 引き下げを統計的に分析し,標準偏差を使用して市場変動の極端を測定することで,市場の下落が通常の範囲を超えると購入ポジションを開始します. 基本的なアイデアは,市場のパニックによって引き起こされる過剰販売機会を把握し,市場の不合理性から生じる数学的統計方法によって投資機会を特定することです.
この戦略は,価格の最大引き下げとその統計的特徴を計算するために,ローリングタイムウィンドウを使用する.最初に過去50期間の最高価格を計算し,その後,現在の閉店価格の最高価格に対する引き下げパーセントを計算する.その後,引き下げの平均値と標準偏差を計算し,トリガーしきい値として -1 標準偏差を設定する.市場引き下げが平均値マイナス標準偏差の倍数を超えると,潜在的な過売り状況を示すロングポジションが入力される.ポジションは35期後に自動的に閉鎖される.この戦略は,引き下げ曲線と,1,2および3つの標準偏差レベルをプロットし,市場の過売り状況の視覚的な評価を行う.
この戦略は,強力な理論的基盤と実用的な価値を持つ統計的方法によって市場過剰販売機会を捉える.戦略論理は,拡張と最適化のための基礎戦略として適した調整可能なパラメータでシンプルで明確である.技術指標とリスク管理措置を追加することによって戦略の安定性と収益性はさらに強化することができる.ライブ取引では,適切なリスク管理を維持しながら,市場の状況と取引機器の特徴を考慮してパラメータを慎重に設定する.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-28 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Buy When There's Blood in the Streets Strategy", overlay=false, shorttitle="BloodInTheStreets") //This strategy identifies opportunities to buy during extreme market drawdowns based on standard deviation thresholds. //It calculates the maximum drawdown over a user-defined lookback period, identifies extreme deviations from the mean, //and triggers long entries when specific conditions are met. The position is exited after a defined number of bars. // User Inputs lookbackPeriod = input.int(50, title="Lookback Period", minval=1, tooltip="Period to calculate the highest high for drawdown") stdDevLength = input.int(50, title="Standard Deviation Length", minval=1, tooltip="Length of the period to calculate standard deviation") stdDevThreshold = input.float(-1.0, title="Standard Deviation Threshold", tooltip="Trigger level for long entry based on deviations") exitBars = input.int(35, title="Exit After (Bars)", minval=1, tooltip="Number of bars after which to exit the trade") // Drawdown Calculation peakHigh = ta.highest(high, lookbackPeriod) drawdown = ((close - peakHigh) / peakHigh) * 100 // Standard Deviation Calculation drawdownStdDev = ta.stdev(drawdown, stdDevLength) meanDrawdown = ta.sma(drawdown, stdDevLength) // Define Standard Deviation Levels stdDev1 = meanDrawdown - drawdownStdDev stdDev2 = meanDrawdown - 2 * drawdownStdDev stdDev3 = meanDrawdown - 3 * drawdownStdDev // Plot Drawdown and Levels plot(drawdown, color=color.red, linewidth=2, title="Drawdown (%)") plot(meanDrawdown, color=color.blue, linewidth=2, title="Mean Drawdown") plot(stdDev1, color=color.green, linewidth=1, title="1st Std Dev") plot(stdDev2, color=color.orange, linewidth=1, title="2nd Std Dev") plot(stdDev3, color=color.purple, linewidth=1, title="3rd Std Dev") // Entry Condition var float entryBar = na goLong = drawdown <= meanDrawdown + stdDevThreshold * drawdownStdDev if (goLong and strategy.position_size == 0) strategy.entry("Long", strategy.long) entryBar := bar_index // Exit Condition if (strategy.position_size > 0 and not na(entryBar) and bar_index - entryBar >= exitBars) strategy.close("Long")