ボリンジャーバンドオシレーターに基づくトレンドフォロー戦略


作成日: 2023-10-10 10:54:05 最終変更日: 2023-10-10 10:54:05
コピー: 0 クリック数: 739
1
フォロー
1617
フォロワー

概要

この戦略の核心思想は,ブリン帯振動器の指標を使用してトレンドを識別し,トレンドが変化する時に早期に介入することです.価格がブリン帯を突破して軌道に乗るときは多めにし,価格がブリン帯を転落したときは空きを取って,トレンド追跡方法を採用して利益を得ることです.

戦略原則

この戦略は主にブリン帯振動器指標に基づいてトレンドの方向を判断する.ブリン帯振動器の計算式は次のとおりである.

BBO = (收盘价 - N日移动平均价) / (2 * N日标准差) * 100

閉店価格は当日の閉店価格で,N日移動平均は閉店価格のN日単純な移動平均で,N日標準差は閉店価格のN日標準差である.

この戦略は,まず65日間のブリン帯振動器を計算し,その後ブリン帯振動器の30日間の平均線を計算する.ブリン帯振動器の上を平均線に穿越すると,トレンドが変化し始めると考え,多めにする.ブリン帯振動器の下を平均線に穿越すると,トレンドが変化し始めると考え,空にする.

ポジションに入ると,戦略は移動ストップ,固定ストップ,移動追跡ストップを使用してリスクと利益を制御します.特定のパラメータは,反測結果に応じて最適化できます.

戦略的優位性

  1. ブリン帯振動器指標を用いてトレンドを判断する.この指標はトレンドの変化に比較的敏感である.

  2. 移動ストップは,トレンドが再び転換する時に,タイムストップを可能にする,個々の損失を制御するために使用されます.

  3. 固定ストップを使って,トレンドの方向が正しいときに,利益を出すために売ることができます.

  4. モバイル・トラッキング・ストップを使用して優位価格を追跡し,単一利益を最大化できます.

  5. 戦略はシンプルで直感的で,理解し,実行しやすい.

戦略リスク

  1. ブリン帯振動器は偽突破の可能性があるため,誤った信号を発する可能性がある.

  2. 移動停止または追跡停止の設定が不適切である場合,早めに停止または停止することがあります.

  3. 固定ストップの設定を間違えた場合,早めにストップし,見逃す方が危険です.

  4. ブリン帯のパラメータと移動平均線のパラメータは最適化が必要で,そうでなければ過適合を引き起こす可能性がある.

  5. 資金援助の必要性があるため,撤退は大きくなる可能性があります.

戦略の最適化

  1. ブリン帯パラメータと移動平均線パラメータを最適化して,最適なパラメータの組み合わせを見つけます.

  2. ATR 停止,パーセンテージ 停止など,さまざまな移動停止方法をテストします.

  3. 固定ストップとトラッキングストップパラメータのテストと最適化.

  4. ブリン帯振動器の誤信号を防ぐために,他のフィルタリング条件を追加します.

  5. ポジション管理を最適化して,異なる市場には異なるポジションサイズに対応します.

  6. この戦略の効果を様々な品種と時間周期でテストする.

要約する

この戦略は,ブリン帯振動器の指標を使用してトレンドの方向を判断し,トレンドが変化し始めるとポジションに入ります.移動の停止,固定の停止,追跡の停止を使用して,リスクと利益を制御します.戦略は比較的直観的で,実行しやすいですが,パラメータを最適化する必要があります.偽突破と不適切な停止の設定を防ぐ必要があります.この戦略は,最適化が成功すれば,トレンドの状況でより良い効果を得ることができます.

ストラテジーソースコード
/*backtest
start: 2022-10-03 00:00:00
end: 2023-10-09 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="Strategy CCT Bollinger Band Oscillator", shorttitle="Hornkild", calc_on_order_fills=true, default_qty_type=strategy.percent_of_equity, default_qty_value=50, overlay=false)

length=input(65)
lengthMA=input(30)
src=close
cctbbo=100 * ( src + 2*stdev( src, length) - sma( src, length ) ) / ( 4 * stdev( src, length ) )

//ul=hline(100, color=gray, editable=true)
//ll=hline(0, color=gray)
//hline(50, color=gray)
//fill(ul,ll, color=blue)
//plot(cctbbo, color=blue, linewidth=2)
//plot(ema(cctbbo, lengthMA), color=red)

TP = input(0) * 10
SL = input(0) * 10
TS = input(1) * 10
TO = input(10) * 10
CQ = 100

TPP = (TP > 0) ? TP : na
SLP = (SL > 0) ? SL : na
TSP = (TS > 0) ? TS : na
TOP = (TO > 0) ? TO : na

longCondition = crossover(cctbbo, ema(cctbbo, lengthMA))
if (longCondition)
    strategy.entry("Long", strategy.long)


shortCondition = crossunder(cctbbo, ema(cctbbo, lengthMA))
if (shortCondition)
    strategy.entry("Short", strategy.short)

strategy.exit("Close Short", "Short", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP, trail_offset=TOP)
strategy.exit("Close Long", "Long", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP, trail_offset=TOP)