
リバーサル・モメンタム・ブレークアウト・ストラテジー (Reversal Momentum Breakout Strategy) は,価格の反転とモメンタムの指標を利用して取引信号を生成する量的な取引戦略である.この戦略は,動量先行列の理論に基づいて,特定の周期内の最高価格と最低価格を追跡して,市場が反転の重要なポイントにあるかどうかを判断し,反転の機会を捕捉する.
この戦略は,主に指定された周期 (例えば20日) 内の最高価格と最低価格を計算して,市場が重要な転換点にあるかどうかを判断する.具体的論理は以下のとおりである.
最近20日の最高値 (window_high) と最低値 (window_low) を計算する.
現在のK線の最高値が過去20日間の最高値より高い場合 (つまり新高が出現した場合),高点反転モニタリング期に入ると,計数器は5日とする.
もし最高値が新高を創っていない場合,毎日のカウンタは減1。カウンタが0に減ると,高点反転モニタリング期は終了。
最安値の判断の論理は類似しており,新しい低値が発生した場合,低点反転監視期に入ります.
逆転モニタリング期間に,多行または空行操作を行う.逆転の鍵点の近くで逆転信号が発生した場合,より大きな動きを捕捉することができる.
この戦略は,取引開始時刻を設定し,過去のデータで取引シグナルを生じさせないようにしています.
逆回転量破窓戦略には以下の主要な利点がある.
逆転の機会を捕捉し,逆転の状況に適した.市場が上昇したり下落したりして,一定程度の逆転がしばしば起こる.この戦略は,これらのターニングポイントを捕捉することができる.
動力が先行し,比較感度が高い.一定周期の最高価格と最低価格を計算し,価格逆転の傾向とタイミングを比較感度が高いと判断できる.
逆転モニタリング期間を設定し,偽信号を避ける.逆転の鍵点の近くでのみ信号を出して,部分的なノイズをフィルターすることができる.
多空操作が許される.行情の方向に応じて長短頭交代操作を行う.
規則は比較的単純で,簡単に実装できる.この戦略は,シンプルな価格と動量指標に大きく依存し,簡単にコードで実装できる.
逆回転量ウィンドウブレイク策には以下の主要なリスクがあります.
逆転予測は許されない. 市場が方向性で続くと,この戦略は損失を生じます.
大盤の動きを全面的に考慮することはできない.個々の株の反転は必ずしも大盤の反転を意味するものではなく,大盤分析と組み合わせる必要がある.
逆転が起こらない場合,NetDeviceは拡大する可能性があります.
データの適合リスク 戦略は,歴史データに過度に依存し,実体での効果は反省よりも劣る可能性があります.
パラメータに敏感である。ウィンドウ期や反転カウンターなどのパラメータの設定は,戦略の安定性に影響する。
リスクに対応する解決方法には,最適化ストップ・ローズ戦略,大盤要因の考慮,安定性試験のためのパラメータの組み合わせの調整などが含まれます.
戦略の主要な最適化方向は以下の通りです.
大盘指数と組み合わせて.大盘の強さと比較し,大盘の不利な環境で反転を避ける.
多要素選の基準 財務状態が良好で,基本面が良好で,価格が過大評価されている個人を選択する.
パラメータの組み合わせを最適化します. ウィンドウ期間を調整し,カウンターパラメータを逆戻し,最適なパラメータの組み合わせを探します.
追跡型ストップ,幅のストップなど,最大撤退を制御するストップ・ストラトジーを追加する.
機械学習の強化 価格逆転の確率を予測するAIモデルの使用 信号の正確性の向上
反転量破窓戦略は,価格と動量指標を追跡し,反転の機会を探します.それは反応しやすく,反転の傾向とタイミングを識別できます.しかし,適切な最適化とリスク管理を必要とする一定程度のリスクもあります.全体的に,この戦略の原理を習得し,最適化を行った後,それは量化取引システムの有効な構成要素になることができます.
/*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)