リバースモメントブレイクアウト戦略 (Reversal Momentum Breakout Strategy) は,価格逆転とモメント指標を使用して取引信号を生成する定量的な取引戦略である.この戦略は"モメントリード価格"の理論に基づいて,市場が逆転の機会を把握するための重要な逆転点にあるかどうかを決定するために,特定の期間の最高値と最低値を追跡する.
この戦略の主な論理は,指定されたバックウィンドウ (例えば20日) の最高価格と最低価格を計算することによって市場の逆転点を特定することです.
過去20日間の最高価格 (window_high) と最低価格 (window_low) を計算する.
今日の高値が過去20日間の高値 (新しい20日間の高値) より高い場合は,高値逆転モニタリング期間を入力してカウンタを5日に設定します.
新しい高値が発生しない場合は,カウンタを毎日1減算します.カウンタが0に達すると,高値逆転のモニタリング期間が終了します.
最低価格の判断論理は類似しています.新しい低値が発生した場合,低値逆転モニタリング期間を入力します.
逆転モニタリング期間中に長所と短所が取られる. キー逆転点近くの逆転信号により,より大きな動きが捉えられる.
戦略は,歴史的なデータに信号を生むのを避けるために,取引開始時間を設定します.
リバースモメントブレイクアウト戦略は以下の主な利点があります.
逆転傾向に適した逆転機会を捉える.市場は持続的な上昇傾向または下落傾向の後,しばしばある程度の逆転を示します.この戦略は,これらの転換点を捉えることを目的としています.
モメント・リードは比較的敏感です. 窓の上での最高値と最低値を追跡することで,価格逆転の傾向とタイミングを敏感に特定できます.
逆転モニタリング期間は,誤った信号を避ける.信号は重要な逆転ポイントの周りにのみ生成され,いくつかのノイズをフィルターします.
ロングとショートポジションを許し,市場方向を順番にロングとショートポジションを順番に設定する.
比較的シンプルな論理で 実行が簡単です 主に価格と シンプルなインパクト指標に依存し プログラミングが簡単です
この戦略の主なリスクは以下のとおりです.
不正確な逆転予測.市場が方向的に動いている場合,戦略は損失を伴う可能性があります.
一般的な市場動向は考慮されていない. 個々の株回転は必ずしも市場の回転を代表するものではない. 市場分析を組み合わせなければならない.
潜在的に大きな引き上げ 引き上げは実際の逆転なしに拡大する可能性があります
データマッチングバイアス テスト結果はバックテストと大きく異なります
パラメータの感度 窓期間,カウンターパラメーターなどで安定性が影響されます
対応するリスク管理方法には,ストップロスの最適化,市場要因の取り入れ,パラメータの組み合わせの調整,安定性の検証が含まれます.
主な最適化方向は以下の通りである.
市場指標を組み込む.不利な全体的な環境を避けるために市場の強さを評価する.
多要素の株の選択 健全な基本値と過大評価の株を選びます
パラメータ最適化.最適なパラメータ組み合わせを見つけるためにウィンドウ期間とカウンターパラメータを調整します.
ストップ・ロスの戦略を追加します.例えば,ストップ・トレイル,ストップ・ボラティリティ,最大引き下げを制御します.
価格逆転の予測精度を機械学習で向上させる
逆転モメンタムブレイクストラテジーは,価格とモメンタムを追跡することによって逆転機会を特定します. 敏感に反応し,逆転傾向とタイミングを特定します. しかし,適切な最適化とリスク管理を必要とするリスクがあります. 全体的に,徹底的に理解され最適化されると,定量的な取引システムの効果的な構成要素を形成することができます.
/*backtest start: 2023-02-16 00:00:00 end: 2024-02-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("New Highs and Lows Momentum Strategy", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) window = input.int(20, title="New Highs and Lows Window", minval=1) decay = input.int(5, title="Decay", minval=1) startDate = input(timestamp("1 Jan 2023"), title = "Start Date") allowShort = input.bool(false, title = "Allow shorting") var int highDecayCounter = 0 var bool isHighPeriod = false var int lowDecayCounter = 0 var bool isLowPeriod = false inTradeWindow = true window_high = ta.highest(close, window) window_low = ta.lowest(low, window) // Logic for Highs if window_high > ta.highest(close, window)[1] highDecayCounter := decay isHighPeriod := true else if highDecayCounter > 0 highDecayCounter := highDecayCounter - 1 else isHighPeriod := false // Logic for Lows if window_low < ta.lowest(low, window)[1] lowDecayCounter := decay isLowPeriod := true else if lowDecayCounter > 0 lowDecayCounter := lowDecayCounter - 1 else isLowPeriod := false // Strategy Execution if inTradeWindow if isHighPeriod and highDecayCounter == decay strategy.entry("Long", strategy.long) if isHighPeriod and highDecayCounter == 0 strategy.close("Long") if isLowPeriod and lowDecayCounter == decay and allowShort strategy.entry("Short", strategy.short) if isLowPeriod and lowDecayCounter == 0 and allowShort strategy.close("Short") // Plotting plot(window_high, color=color.green) plot(window_low, color=color.red)