この戦略は,ビットコイン・フューチャーで自動取引を行うためにボリンジャー・バンドス指標に基づいて取引戦略を構築する.価格がボリンジャー・バンドスの下限を突破したときに長行し,価格がボリンジャー・バンドスの上限を突破して利益を得るときは短行する.
この戦略は,55期間のボリンジャーバンド指標と,4に設定された帯域幅係数を使用する.ボリンジャーバンドの中間線は55日間の単純な移動平均線であり,上下線は,それぞれ標準偏差の+4倍と中間線は標準偏差の-4倍である.価格が下線を下回ると,ロング;価格が上線を超えるとショート.
ロング・シグナルが起動すると,ストップ・ロスは下線の価格で設定される.ショート・シグナルが起動すると,ストップ・ロスは上線の価格で設定される.テイク・プロフィート・オーダーは設定されない.
この戦略は,エントリータイミングを合理的に決定するために,オーバーバイトとオーバーセール条件を決定するボリンジャーバンド指標の能力を利用している. 頻度が過剰に高い取引を避けるために,帯域幅係数は4に設定されている. バックテストの結果は,ビットコイン1分間の時間枠で,戦略は80%を超える収益率を達成し,重要な効果を示している.
他の指標と比較して,ボリンジャーバンド指標は市場の変動に非常にうまく適応し,異なる期間の変動を把握するためにバンド幅を自動的に調整することができます.これは戦略のパラメータを非常に堅牢にします.
さらに,この戦略は,非常にシンプルで定量的な取引の要件を満たすボリンジャーバンド指標のみに依存しています.
この戦略の主なリスクは,ボリンジャーバンド指標が過剰購入および過剰販売の市場状況を判断する効果が巨大な市場の動きによって影響される可能性があるという事実にあります.牛市では,株価が長期間にわたって高くなって,上方レールが効果的なレジスタンスを形成することが困難になります.同様に,熊市では,株価が長期間にわたって低くなって,下部レールが効果的なサポートを提供することが困難になります.これらすべてが戦略によって生成される無効な取引信号につながる可能性があります.
さらに,ボリンジャーバンドの上下線にストップロスを直接設定すると,戦略に十分なスペースを与えられず,価格変動によってノックアウトされる可能性があります.
戦略は以下の側面で最適化できます.
他の指標と組み合わせます.KDJやMACDのような指標は,取引信号を修正するために極端な過剰購入/過剰販売状況を判断するのに役立ちます.
利潤をロックするためにトライリングストップロスを設定します.静的ストップロースと比較して,トライリングストップロスは価格変動に基づいてストップロスのポジションを適切に調整できます.
パラメータを最適化する.最適なパラメータの組み合わせを見つけるために,ボリンジャーバンドの異なる期間と帯域幅のパラメータをテストすることができます.最適化アルゴリズムも最適なパラメータを見つけるために使用できます.
市場条件に応じてパラメータを調整します.市場には3つの状態があります:牛,熊,レンジ・バインドです.したがって,パラメータは市場条件に基づいて別々に設定できます.
先進的なレバレッジ管理戦略を追加します.レバレッジを動的に調整することによって戦略のリスクプロフィールを管理します.
この戦略の最大の強みは,ボリンジャーバンドス指標からオーバーバイト/オーバーセールシグナルを取得するシンプルで明確な取引論理です. 全体的に,これは非常に実用的な短期的定量戦略です.長期的な安定した利益を達成するために,それを多くの方法で最適化することでさらに改善することができます.
/*backtest start: 2023-11-27 00:00:00 end: 2023-12-27 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Kozlod - BB Strategy - 1 minute", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) // // author: Kozlod // date: 2019-05-29 // BB - XBTUDS - Bitmex - 1m // https://www.tradingview.com/u/Kozlod/ // https://t.me/quantnomad // source = close length = input(55, minval=1) mult = input(4, minval=0.001, maxval=50) basis = sma(source, length) dev = mult * stdev(source, length) upper = basis + dev lower = basis - dev plot(upper) plot(lower) 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")