緩衝ボリンジャー帯に基づくモメンタム・オシレーティング・ムービング・平均取引戦略

作者: リン・ハーンチャオチャン開催日:2024-01-05 12: 27時02分
タグ:

img

概要

この戦略は,ボリンジャーバンド指標とモメンタム振動動平均指標に基づいて価格チャネルを構築し,価格がチャネルの上または下限を突破したときの取引信号を生成する.ボリンジャーバンドの適応性とモメンタム振動器の柔軟性を組み合わせることで,市場の動向の変化に間に合うことができる.

戦略の論理

この戦略は,ボリンジャーミドルバンドとモメントオシレーティング・ムービング・アベレージを使用して価格チャネルを構築する.ミドルバンドは21期ボリンジャーミドルバンドを採用する.上部と下部帯はそれぞれ百分比範囲で上下に伸びる.モメントオシレーティング・ムービング・アベレージは,中間帯に基づいて過剰購入または過剰販売レベルに近い範囲に伸びたり縮小したりする.価格が上部帯を突破したとき,ロングに行く.価格が下部帯を突破したとき,ショートに行く.

具体的には,ボリンジャー中間帯は以下のように計算されます.

Middle Band = Moving Average of N-period closing price

上部帯と下部帯は以下のように計算される.

Upper Band = Middle Band + WidthDev * N-period Bollinger standard deviation 
Lower Band = Middle Band - WidthDev * N-period Bollinger standard deviation

幅Devは上下で拡張された割合範囲を表します

モメントムオシレーティング・ムービング・平均値は,特定のルールに従って,中間帯に基づいて伸びたり縮小したりする.市場が過買いまたは過売りになったとき,それは,ロングまたはショートに行くためのより多くの機会を提供するために,中間帯からさらに遠くに広がります.市場が落ち着くと,それは中間帯に向かって収縮します.

要約すると,この戦略はボリンジャーバンドを使用して価格チャネルを描き,ブレイクアウト取引を実現するためにモメンタム振動動動平均を使用してエントリータイミングを決定します.価格がボリンジャー上部帯から上部帯に突破するとロング,価格がボリンジャー下部帯から下部帯に突破するとショート.

利点分析

  1. 市場変動を反映する ボリンジャー帯は,市場の変動と変化する傾向をリアルタイムで反映することができます.上部と下部帯は,変動の変化に基づいて適応します.

  2. 偽信号を減らす モメントムオシレーティング・ムービング・平均値のストレッチ効果は,ボリンジャー・バンドによって生成される偽信号を効果的に減少させることができます.BBチャネルの幅を拡大し,保持期間を延長することで,より大きな利益を得ることができます.

  3. タイミングが正しい 傾向の逆転 BB上下帯とモメンタム振動動平均のクロスオーバーは,トレード信号を生成するための有利なタイミングと価格設定を提供し,主要な牛と熊の調整を効果的に把握し,トレンド逆転を適時に把握することができます.

リスク分析

  1. BB パラメータが不適切 計算期間や標準偏差倍数などの BB パラメータの誤った設定は,帯間の距離が幅広くすぎたり狭すぎたりして,過剰な誤った信号を生み出し,戦略の安定性を損なう可能性があります.

  2. 過剰な振動幅 モメント・オシレーティング・ムービング・平均値の振動幅が大きすぎると,ストップ・ロスのポイントが遠くなり,損失リスクが高まる可能性があります.

  3. 遅延した逆転
    市場が振動またはトレンドなしである場合,BBとモメントス振動動平均値からの取引信号は遅滞し,価格の変化を時間内に反映できず,遅延した逆転リスクを引き起こす可能性があります.

オプティマイゼーションの方向性

  1. BB パラメータを最適化 異なる周期と標準偏差倍数をテストして 適切なパラメータ組み合わせを見つけ より良い信号周波数と 誤った信号が少ないようにします

  2. モメント オシレーティング 移動平均パラメータを最適化 異なる振動幅と周期をテストして 傾向を把握し 信号遅延を減らす パラメータを見つけます

  3. フィルター条件を追加する クロスオーバー信号に基づく取引量などのフィルターを追加して非効率な取引信号を除外します

  4. 戦略の組み合わせ この戦略を他のストップ損失戦略や機械学習戦略と組み合わせることで,リスクをさらに制御し,安定性を向上させる.

概要

この戦略は,適応性ボリンジャーバンドとモメンタム振動動動平均の強みを組み合わせ,トレンドフォローとトレンド逆転を捉える統合を達成する.市場の変動性と取引シグナル柔軟性をバランスすることによって,安定かつ効果的なブレイクアウト取引を実現する.パラメータ最適化とリスク管理は,異なる市場環境に応じてテストおよび調整するためにも重要です.


/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//                               Hull Cloud v2 by SEASIDE420
strategy("Hull Moving Average Cloud v2", shorttitle="hull_cloud_v2", overlay=true, commission_type=strategy.commission.percent, commission_value=0.075, default_qty_type=strategy.percent_of_equity, max_bars_back=200, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0)
hullperiod=input(title="HullMA Period",defval=210, minval=1)
Width=input(title="Cloud Width",defval=200, minval=2)
price=input(ohlc4,title="Price data")
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) 
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) 
FromYear = input(defval = 2017, title = "From Year", minval = 2017) 
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) 
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) 
ToYear = input(defval = 9999, title = "To Year", minval = 2017)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) 
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) 
window() => true
n2ma=2*wma(price,round(hullperiod/2))
nma=wma(price,hullperiod)
diff=n2ma-nma
sqn=round(sqrt(hullperiod))
n2ma1=2*wma(price[1],round(hullperiod/2))
nma1=wma(price[1],hullperiod)
diff1=n2ma1-nma1
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
Hull_Line=n1-n1[1]/n2[1]
Hull_retracted=if(n1>n2)
    Hull_retracted=Hull_Line-Width
else
    Hull_retracted=Hull_Line+Width
c1=(Hull_retracted*n1)/price[1] 
c2=(Hull_retracted*n2)/price[1]
c4=c1>c2?green:red
c2p=plot(c2, color=black, linewidth=1)
c3p=plot(price, color=black, linewidth=1)
fill(c3p, c2p, color=c4, transp=75)
plot(cross(c1, c2) ? c1 : na, style = circles,color=c4, linewidth = 4) 
if (price<c2)
    strategy.close("BUY", when=window())
if (price>c2)                       
    strategy.close("SELL", when=window())
if (price[1]>c2 and price[1]>c1)             
    strategy.entry("BUY",strategy.long, when=window())
if (price[1]<c1 and price[1]<c2)            
    strategy.entry("SELL",strategy.short, when=window())//           /L'-, 
//                               ,'-.      `   ````                 /  L '-, 
//     .                    _,--dMMMM\        `   ` ` '`..         /       '-, 
//     :             _,--,  )MMMMMMMMM),.      `     ,<>          /_      '-,' 
//     ;     ___,--. \MM(    `-'   )M//MM\          ,',.;      .-'* ;     .' 
//     |     \MMMMMM) \MM\       ,dM//MMM/     ___ < ,; `.      )`--'    / 
//     |      \MM()M   MMM)__   /MM(/MP'  ___, \  \ `  `. `.   /__,    ,' 
//     |       MMMM/   MMMMMM( /MMMMP'__, \     | /      `. `-,_\     / 
//     |       MM     /MMM---' `--'_ \     |-'  |/         `./ .\----.___ 
//     |      /MM'   `--' __,-  \""   |-'  |_,               `.__) . .F. )-. 
//     |     `--'       \   \    |-'  |_,     _,-/            J . . . J-'-. `-., 
//     |         __  \`. |   |   |         \    / _           |. . . . \   `-.  F 
//     |   ___  /  \  | `|   '      __  \   |  /-'            F . . . . \     '` 
//     |   \  \ \  /  |        __  /  \  |  |,-'        __,- J . . . . . \ 
//     |    | /  |/     __,-  \  ) \  /  |_,-     __,--'     |. .__.----,' 
//     |    |/    ___     \    |'.  |/      __,--'           `.-;;;;;;;;;\ 
//     |     ___  \  \     |   |  `   __,--'                  /;;;;;;;;;;;;. 
//     |     \  \  |-'\    '    __,--'                       /;;;;;;;;;;;;;;\ 
// \   |      | /  |      __,--'                             `--;;/     \;-'\ 
//  \  |      |/    __,--'                                   /  /         \  \ 
//   \ |      __,--'                                        /  /           \  \ 
//    \|__,--'                                          _,-;M-K,           ,;-;\ 
//                                                     <;;;;;;;;           '-;;;; 
//                                                                                  :D

もっと