ボリンジャーバンドはトレンドの発生やレンジ相場を見やすく表示してくれトレーダーに人気です。
ボリンジャーバンドを使ったトレード手法として±2σでの逆張りの手法がありますが、TradingViewに逆張りのストラテジーがあるので確認してみましょう。
ボリンジャーバンドのストラテジー
TradingViewのストラテジーテスターを使えばより簡単に素早くロジックの優位性を確かめる事ができます。
この例はデフォルトでTradingViewに内蔵されているボリンジャーバンドのトレード戦略です。
BB Strategy, TradingView
赤い領域が損失の累計で、青が利益です。トータルで1.03スイスフランとなっていますが、エントリー1通貨の場合です。
ストラテジーテスターの見方は、TradingViewのストラテジーテスターで検証を参照してください。
BB Strategy
これはTradingViewに元から入っているストラテジーで、スローストキャスティクスを使った戦略です。
BB Strategy のソースを表示させます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//@version=4 strategy("Bollinger Bands Strategy", 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", oca_type=strategy.oca.cancel, comment="BBandLE") else strategy.cancel(id="BBandLE") if (crossunder(source, upper)) strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands", oca_type=strategy.oca.cancel, comment="BBandSE") else strategy.cancel(id="BBandSE") //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr) |
このブロックがボリンジャーバンドの設定です
1 2 3 4 5 6 7 8 9 10 11 12 |
// パラメータ期間が20 length = input(20, minval=1) // 標準偏差+2σ mult = input(2.0, minval=0.001, maxval=50) // 単純移動平均を期間20で作成、これはボリンジャーバンドのセンター basis = sma(source, length) // 標準偏差2の作成 dev = mult * stdev(source, length) // +2σ upper = basis + dev // -2σ lower = basis - dev |
売買条件と注文、決済、キャンセル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// この2行は以降の条件文とダブっているのですが、使うケースがあります //buyEntry = crossover(source, lower) //sellEntry = crossunder(source, upper) // 買い条件:source(終値)が-2σをクロスオーバー if (crossover(source, lower)) // 買い注文:-2σで損切、注文が約定されるとoca_nameがBollingerBandsのグループの注文はキャンセル strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands", oca_type=strategy.oca.cancel, comment="BBandLE") else strategy.cancel(id="BBandLE") // 売り条件:source(終値)が+2σをクロスアンダー if (crossunder(source, upper)) // 買い注文:-2σで損切、注文が約定されるとoca_nameがBollingerBandsのグループの注文はキャンセル strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands", oca_type=strategy.oca.cancel, comment="BBandSE") else strategy.cancel(id="BBandSE") |
ボリンジャーバンドの ±1σ、±2σ のラインを追加して、このストラテジーを確認してみます。
① ボリンジャーバンドで終値が-2σを越えて買いのエントリー、
② 終値が +2σを下抜けで、それまでの買いポジションを決済して、ドテンの売りエントリー
③ これは買いエントリーですが、この後逆に動くが損切されないまま含み損が増大
その後の売り条件になるまで続く
これはいわゆる逆張りのストラテジーで、レンジ相場ではワークしますがトレンドが発生した場合は、押し目や戻りでポジションを持ってしまい損失となってしまいます。
損切利確の考察
このストラテジーの損切利確はエントリーした次の反対売買でのドテン決済になり、ある程度の変更が考えられます。
以下のような修正をしてみます
- 買いの損切:エントリー後に-2σに戻ったら損切
- 買いの利確:+1σを越えたら利確
- 売りの損切:エントリー後に+2σに戻ったら損切
- 売りの利確:-1σを越えたら利確
1 2 3 4 5 6 7 8 9 |
buyExit = crossunder(source, lower) sellExit = crossover(source, upper) buyExitSg1 = crossover(sourceH, upper1) sellExitSg1 = crossunder(sourceL, lower1) ... strategy.close("BBandLE", when = buyExit) strategy.close("BBandSE", when = sellExit) strategy.close("BBandLE", when = sourceH >= upper1) strategy.close("BBandSE", when = sourceL <= lower1) |
A:-2σでエントリー、+1σで利確
B:+2σでエントリー、-1σで利確
C:-2σでエントリー、-2σ越えで損切
PF, プロフィットファクターで比較してみました。1 以上あれば利益になりますが、できれば 1.5 は欲しいところ。
1時間足については2020年~の短期間ですが、多少改善されたという程度で大幅な改善とは言えないレベルです。
オリジナル | 修正版 | |||
日足 | 1時間足 | 日足 | 1時間足 | |
USDJPY | 1.040 | 0.72 | 1.128 | 0.810 |
USDCHF | 1.918 | 0.858 | 1.340 | 0.834 |
EURJPY | 0.856 | 0.784 | 0.970 | 0.955 |
EURUSD | 1.150 | 0.824 | 1.013 | 0.934 |
GBPJPY | 1.087 | 0.743 | 1.043 | 0.872 |
GBPUSD | 1.116 | 0.783 | 1.264 | 0.922 |
AUDJPY | 1.318 | 0.834 | 1.027 | 0.874 |
ストラテジーテスターの評価はこちらを参考にしてください
まとめ
このストラテジーはボリンジャーバンドの日足程度ではそれなりにワークしそうですが
小手差の改善ではうまくいかないようです。
逆張りなので順張り、トレンドに乗るやり方もあります
また、他のオシレータ系のインジケータを使うトレードもあります。