アダプティブ・ボラティリティ・ブレイクアウト戦略は,トレンドをフォローする戦略である.価格が一定水準を超えて強烈に上昇する際にブレイクアウト信号を特定し,ロングポジションを確立し,次の日のオープンで利益を得るために上昇傾向を追跡し続けます.
この戦略は,有名な先物と株式トレーダーであるラリー・R・ウィリアムズによって提案された.これは,しばしば市場の転換を意味する価格ブレイクポイントを捕捉しようとします.これらの信号を間に合って特定し,ポジションを確立することで,新しいトレンド方向に従って利益を得ることができます.
この戦略の主な指標は,以下のように計算される"一定のレベル"です.
Certain level = Close + k * (High - Low)
この式は,最高価格と最低価格の変動を組み込み,ブレイクポイントを市場の変動に適応するためにより柔軟にする.
計算された"特定のレベル"を突破した日間の最高価格が突破すると,価格のブレイクが示される.この戦略は,ロングポジションを確立する.そのポジションは,翌日,利益を得るためにオープンする時点で完全に閉鎖される.
ストップロスは前日の最低値とエントリー価格の半分に設定され,損失が拡大するのを防ぎます.
この戦略の利点は以下の通りです.
変動を把握し,トレンドを追跡する: この戦略は,価格変動リズムを把握する柔軟なブレイクポイントを計算するために,最高値と最低値を組み込む.
タイムリーエントリー,トレンドトラッキング: ブレイクシグナルの毎日の計算により,価格上昇傾向のステップをフォローするために新しいトレンドをタイムリーに特定できます.
適切なリスク管理:合理的なストップ損失設定は,単一の損失を効果的に制御します.
この戦略によるリスクは以下のとおりです.
失敗したブレイクリスク: 価格ブレイクは必ずしも上昇傾向を維持しないが,短期的な偽ブレイクであり,損失を引き起こす可能性があります.
極端な市場リスク: 市場のクラッシュのような極端な市場イベントでは,価格が上昇/下落し,ストップ損失を誘発し,大きな損失を引き起こす可能性があります.
過剰な取引リスク: 取引の頻度や手数料を増加させるため,毎日取引を開くと閉じる.
戦略は以下の側面から最適化できます.
マルチプリキュアを追加: 市場変動が上昇するときに マルチプリキュアを追加し,市場が安定するときに マルチプリキュアを増やし,戦略をより弾性的にします.
保持期間延長: 短期間の誤ったブレイクをフィルタリングするために保持期間を2日または3日延長する.
ストップロスの最適化:ボリンジャー・バンド下部や前日のストップロスの閉じるようなより深いサポートレベルにストップロスを設定する.
アダプティブ・ボラティリティ・ブレイクアウト戦略は,価格の変動とリズムを動的に追跡することによってトレンドを追跡する.従来のブレイクアウト戦略と比較して,それは価格の動きを捉えるのにより柔軟で能力がある.しかし,リスクは極端な市場でストップが打つ可能性があることに注意すべきである.保持期間とストップ損失のさらなる最適化はより良い結果をもたらすことができる.
/*backtest start: 2023-01-01 00:00:00 end: 2024-01-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Dicargo_Beam //@version=5 strategy("Volatility Breakout Strategy", overlay=true, default_qty_type= strategy.percent_of_equity, default_qty_value=100,process_orders_on_close=false) k = input.float(0.6) [o,h,l,c] = request.security(syminfo.tickerid,"D",[open,high,low,close]) lp = math.log(c[1])+(math.log(h[1])-math.log(l[1]))*k _lp = math.pow(2.718,lp) longcond = _lp < high exit = hour==0 or math.log(close) < (math.log(l[1])+lp)/2 plot(_lp,"Entry",color=color.yellow) //plot(l,"Yesterday's Low") plot((_lp+l[1])/2,"StopLoss",color=color.red) strategy.entry("Long", strategy.long,comment = "Long", when = longcond and strategy.opentrades == 0) strategy.close("Long", comment="Exit", when = exit) var bg = 0 bg := if hour == 0 bg + 1 else bg[1] bgcolor(bg/2== math.floor(bg/2) ? color.new(color.blue,95):na)