リチャード・ブックスタバー モメンタムブレイクアウト戦略


作成日: 2023-11-02 15:12:46 最終変更日: 2023-11-02 15:12:46
コピー: 1 クリック数: 695
1
フォロー
1617
フォロワー

リチャード・ブックスタバー モメンタムブレイクアウト戦略

概要

ダイナミック・ブレイクストラテジーは,リチャード・ブックスタバーが1984年に提唱した概念に基づいています.大きな波動が発生すると,市場はその方向で継続的に動作する傾向があります.

戦略原則

この戦略は,まず,市場の変動を測定するためにATR指標を計算し,その後,毎日の閉盘価格の変化の絶対値を計算します.閉盘価格の変化がATR指標値の数倍を超えると,取引シグナルを生成します.具体的には,閉盘価格の上昇幅がATR上位よりも大きい場合は,多めに行います.

この戦略はATR指標を使用して,突破値を動的に決定する.市場の変動が大きくなる時,値が上昇し,誤った取引を減らすことができる.市場の変動が小さくなる時,値が低下し,突破の機会を間に合うように捕捉することができる.

優位分析

  • ダイナミックATRストップは,市場の変動に合わせてストップポイントを変化させることで,リスクを効果的に制御できます.
  • 市場動向の転換を捉えるための取引シグナルを生成するブレイクを使用します.
  • パラメータの最適化スペースは広く,異なる品種と周期に合わせて調整できます.
  • 戦略はシンプルで明快で,理解し,実行しやすい.

リスク分析

  • ATRは突発に反応し遅いため,最初の突破を逃す可能性があります.
  • 多空バランスの差,多空または空き時間でのみ行う方が両方向取引よりも明らかに良い.
  • 戦略のパラメータは過度に最適化されやすいので,実際の効果は不十分です.
  • 取引は頻繁で,取引コストは高い可能性があります.

他の指標と組み合わせて取引のタイミングを選し,効率を上げることを考えることができる。また,品種特性に合わせて優越したパラメータを選択することもできる。マーティンゲルアルゴリズムなどの技術を使用して取引の頻度を制御する。

最適化の方向

  • 他の指標と組み合わせてトレンドの方向を判断し,誤った取引を避けるために考慮することができます.例えば,RSI,MACDなど.
  • ポジション管理モジュールが追加され,市場の状況に応じてポジションを調整できます.
  • 異なる品種に最適なパラメータの組み合わせ.
  • 機械学習技術の自動最適化パラメータを組み合わせることができる.

要約する

ダイナミック・ブレイク戦略はシンプルで直接で,ブレイクを利用して取引シグナルを生成する。ATRの止損により,市場の波動性に対応できる。この戦略はパラメータ最適化に依存して良い効果を得ることができる。しかし,最初のブレイクを逃す,頻繁に取引するなど,いくつかの問題もある。これは,複雑な市場で安定した利益を得るために,他の技術との組み合わせでさらに改善する必要がある。全体的に,ダイナミック・ブレイク戦略の構想は明確であり,さらなる研究と応用に値する。

ストラテジーソースコード
/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 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/
// © EduardoMattje

//@version=5
strategy("Volatility System", overlay=false, margin_long=0, margin_short=0, default_qty_type=strategy.percent_of_equity, 
 default_qty_value=100, process_orders_on_close=true, initial_capital=20000)

// Inputs

var averageLength = input.int(14, "Average length", 2)
var multiplier = input.float(2.0, "Multiplier", 0.0, step=0.1)

// Calculations

atr = ta.atr(averageLength) * multiplier
closingChange = ta.change(close, 1)

atrPenetration(int signal) =>
    res = closingChange * signal > atr[1]

longCondition = atrPenetration(1)
shortCondition = atrPenetration(-1)

// Order calls

if (longCondition)
    strategy.entry(strategy.direction.long, strategy.long)

if (shortCondition)
    strategy.entry(strategy.direction.short, strategy.short)

// Visuals

plot(atr, "ATR", color.white, 2)
plot(math.abs(closingChange), "Absolute close change", color.red)