ボリンジャーバンド追跡戦略は,ボリンジャーバンドをベースとした定量的な取引戦略である. 株式のボリンジャーバンドの上下線を計算し,市場を追跡するために買取・売却条件を設定する. 価格がボリンジャーバンドの下線に触ると,株式は過低評価とみなされ,成長により多くの余地を与え,購入信号を生成する. 価格が上昇して上線に触ると,株式は過高評価とみなされ,それ故に売り信号とみなされる.
この戦略の核心指標はボリンジャー帯である.ボリンジャー帯は三つの線で構成される:ミドルレール,上部レール,下部レール.ミドルレールはn日移動平均閉店価格である.上部レールはミドルレール+k倍閉店価格のn日標準偏差;下部レールはミドルレール−k倍閉店価格のn日標準偏差である.k値は通常2に設定される.株価が下部レールより低いとき,それは比較的低い価格レベルにある.したがって,低価値とみなされ,買い信号を生成する.株価が上部レールより高いとき,それは比較的高い価格レベルにあり,過大評価され,売り信号を生成する.
具体的には,この戦略は,まず中間レールとして閉店価格の20日移動平均を計算し,その後,帯域幅として閉店価格の20日標準偏差の2倍を計算する.上部レールは中部レール+帯域幅,下部レールは中部レール-帯域幅である.その後,購入条件を下部レールよりも低い閉店価格と,販売条件を上部レールよりも高い閉店価格に設定する.閉店価格が下部レールを下回るときに購入信号,閉店価格が上部レールを下回るときに販売信号を生成する.
この戦略には以下の利点があります.
この戦略にはいくつかのリスクもあります:
対応する解法:
この戦略の主要な最適化方向は以下の通りである.
ボリンジャーバンド追跡戦略は,比較的シンプルで実用的な定量的な取引戦略である.価格動向を自動的に追跡し,買い・売るシグナルも提供することができる.メリットとしては,容易な実装,リスクが小さく,偽ブレイクアウトをフィルタリングする.メリットとしては,一定の遅れ,ブラック・スワンのような極端な市場状況に対処できない.この戦略は,機械学習などのより高度な技術を使用して,パラメータと指標を最適化することによってさらに強化することができる.要約すると,ボリンジャーバンド戦略を他の技術戦略と組み合わせることで,堅牢で効率的な定量的な取引システムを形成することができる.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger Bands Strategy", shorttitle="BB Strategy", overlay=true) // Input parameters length = input(20, title="Bollinger Bands Length") mult = input(2, title="Multiplier") // Calculate Bollinger Bands basis = ta.sma(close, length) bb_upper = basis + mult * ta.stdev(close, length) bb_lower = basis - mult * ta.stdev(close, length) // Buy and sell conditions buy_condition = close < bb_lower sell_condition = close > bb_upper // Execute trades strategy.entry("Buy", strategy.long, when=buy_condition) strategy.entry("Sell", strategy.short, when=sell_condition) // Plotting Bollinger Bands on the chart plot(bb_upper, color=color.red, title="Upper Band") plot(bb_lower, color=color.green, title="Lower Band") plot(basis, color=color.blue, title="Basis") // Highlighting buy and sell signals on the chart bgcolor(buy_condition ? color.new(color.green, 90) : na) bgcolor(sell_condition ? color.new(color.red, 90) : na)