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

作者: リン・ハーンチャオチャン,日付: 2023年11月2日 15:12:46
タグ:

img

概要

モメントブレイクアウト戦略は,リチャード・ブックスタバーが1984年に提案した概念に基づいている.大きな不安定な動きがあるとき,市場はそれに続く傾向がある.したがって,当時の閉値の変化がATRを構成可能な定数で倍数して計算された値を超えると,変動を測定するためにATRを使用し,注文を発行する.

戦略の論理

この戦略は,まず市場変動を測定するためにATR指標を計算する.その後,日々の閉店価格変動の絶対値を計算する.閉店価格変動が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)


もっと