平均逆転ボリンジャーバンド戦略

作者: リン・ハーンチャオチャン開催日:2023年10月25日 11:04:13
タグ:

img

概要

平均逆転ボリンガーバンド戦略は,市場変動を測定するためにボリンガーバンド指標と,トレンドを決定するために移動平均値を使用し,低波動期間のトレンド取引を使用して,過剰なランダム性を回避しながらトレンドから利益を得ます.

戦略の論理

この戦略は,移動平均値と上下帯を計算し,移動平均値の上下に標準偏差の一定倍数を表し,ボリンジャー帯を形成する.価格が帯に近づくと,変動が増加することを示します.価格が帯内にいると,変動が減少することを示します.

この戦略は,価格が上昇傾向の移動平均値の下帯を突破するとロングになり,上昇傾向の移動平均値の上帯を突破するとショートになります.対応するバンドはリスクを制御するためのストップロストとして使用されます.

このアプローチの利点は,低変動期間の傾向に参加し,過剰なランダムな価格変動を回避し,利益の確率を増やすことです.

利点分析

  1. 低波動率のトレンド取引は ランダム性を減らし 安定性を高めます

ボリンジャー・バンドが収縮し波動性が低下するときにのみトレードすることで,戦略は波動性が高い不確実な時期を避け,ランダム性を軽減し安定性を高めます.

  1. 移動平均は傾向判断を助け,正確性を向上させる

波動率を測定するボリンジャー帯に加えて,移動平均値はトレンド方向を決定するのに役立ちます.両者は互いを検証し,正確性を向上させます.

  1. ストップ・ロスの制御に組み込まれたリスク

ストップ・ロスのレベルを各取引区間で設定し,迅速なストップとリスク管理を可能にします.

リスク分析

  1. 傾向の誤った判断のリスク

帯の収縮中に移動平均の方向が変化し,誤ったトレンド判断と損失につながる可能性があります.

傾向を確認する他の指標を追加することで このリスクを最小限に抑えることができます

  1. 過剰な波動性リスク

標準偏差の倍数値が高すぎるため,幅が広い場合,非効率な取引が頻繁に起こる.

パラメータを最適化したり,帯域幅のスロージックフィルターを追加したりすることで,これを改善することができます.

  1. 破綻リスク

価格がトレンドを崩して損を起こす場合もあります

閉じる休憩だけを使うか 音量確認を追加することで 失敗した休憩を減らすことができます

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

  1. さらに指標の確認を追加する

MACDやKDJのような指標を追加して 移動平均信号を確認することで 精度が向上します

  1. パラメータを最適化

最適な移動平均値と標準偏差倍数パラメータを見つけるためのバックテストはパフォーマンスを向上させる.

  1. 入力のタイミングを最適化

閉じる休憩だけを使うか 音量フィルターを追加することで タイミングが改善されます

  1. ストップ・ロスの戦略を最適化

遅延停止や移動停止は 利益を固定し 利益の返還を防ぐことができます

結論

平均逆転ボリンガーバンド戦略は,低変動期間の特定とトレンド方向を決定するための移動平均を巧みにバンドを使用し,変動が減少するときにトレンドに参加します.これは過剰なランダム性をフィルタリングし,安定性を高めます.この戦略には利点がありますが,注意すべきリスクもあります.安定性と収益性のさらなる改善は,追加の指標の確認,パラメータの最適化,改善されたタイミング,および高度なエントリーストップ損失戦略から来ることができます.


/*backtest
start: 2022-10-24 00:00:00
end: 2023-10-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Trading Public School", overlay=true)
source = close
length = input(20, minval=1)
mult = input(2.0, minval=0.001, maxval=50)

basis = sma(source, length)
dev = mult * stdev(source, length)

upper = basis + dev
lower = basis - dev

buyEntry = crossover(source, lower)
sellEntry = crossunder(source, upper)

if (crossover(source, lower))
    strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands",  comment="BBandLE")
else
    strategy.cancel(id="BBandLE")

if (crossunder(source, upper))
    strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands",  comment="BBandSE")
else
    strategy.cancel(id="BBandSE")

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)


もっと