この戦略は,ボリンジャーバンドとイントラデイ・インテンシティー・インデックスに基づいた平均逆転戦略である.入場タイミングを決定するためにボリンジャーバンド上部および下部帯の価格ブレイクアウトを,ボリューム指標イントラデイ・インテンシティー・インデックスと組み合わせて利用する.この戦略の利点は:価格の平均逆転から利益を得ること,およびボリューム指標でシグナルをフィルタリングすること.しかし,大きな引き下げと長い利益時間などのリスクも伴う.
戦略は,まずボリンジャーバンドの中帯,上帯,下帯を計算する.中帯は,閉値の単純な移動平均または指数関数移動平均である.上帯と下帯は,中帯の2つの標準偏差を足すこと/引くことで構築される.価格が下帯を突破すると,それは長いポジションを取ることによって平均逆転の機会とみなされる.価格が上帯を突破すると,それは平均から過剰偏差とみなされ,ショートポジションを取ることである.
判断のための補助指標として,戦略はイントラデイ強度指数を導入する.この指標は価格とボリュームの両方の情報を組み合わせます.指数が正であれば,購買力が強化され,長い信号が表示されます.指数が負であれば,販売力が強化され,ショート信号が表示されます.
ストップ・ロスの場合,ストップ・ロスは時間に基づくストップ・ロスを採用する.特定の期間後に利益がない場合,ストラテジーは損失をカットし,退出することを選択する.
この戦略の最大の利点は,価格の平均回転を利益に利用することである.価格が平均から大きく偏った場合,統計法則によると,価格が平均に戻る確率は比較的大きい.これは戦略の操作の理論的基盤を提供します.
また,価格シグナルをフィルタリングするためにボリュームインジケーター - Intraday Intensity Index を導入することがもう1つの利点である.取引ボリュームは価格シグナルの有効性を証明することができる.これは,低ボリュームのいくつかの激しい価格変動で発生する間違ったシグナルを回避する.
この戦略は,価格平均逆転の確率イベントに依存しているが,市場の価格のランダムな動きは依然としてストップ損失を誘発し,損失につながる可能性がある.これは平均逆転戦略が直面する一般的なリスクである.
また,価格が平均値に戻るプロセスは比較的長いサイクルである.投資家にとって,資本は一定の期間保持されることがあります.そのような時間リスクは,投資家が他のより良い投資機会を逃す可能性があります.
戦略は以下の側面で最適化できます.
ボリンジャー・バンドのパラメータを最適化し,異なる市場の変動に適応するためにサイクルと偏差メトリックを調整する
滑らかに増やすために,重度の移動平均のような移動平均の他の種類を試してみましょう
より良い値と値の確認信号を探して,他のタイプのボリュームインジケーターを試してください.
ストップ・ロスト/プロフィート・テイク戦略を追加し,オーダー毎の最大損失を制御する
結論として,この戦略は典型的な平均逆転戦略です. 確率イベントから利益を得ていますが,リスクも明らかです. パラメータの調整や指標の最適化によってより良い結果が得られます. しかし,投資家にとって,この戦略の属性を正しく認識することは鍵でもあります.
/*backtest start: 2024-01-20 00:00:00 end: 2024-02-19 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // Bollinger Bands Strategy with Intraday Intensity Index // by SparkyFlary //For Educational Purposes //Results can differ on different markets and can fail at any time. Profit is not guaranteed. strategy(title="Bollinger Bands Strategy with Intraday Intensity Index", shorttitle="Bollinger Bands Strategy", overlay=true) BBlength = input(20, title="Bollinger Bands length") BBmaType = input("SMA", title="Bollinger Bands MA type", type=input.string, options=["SMA", "EMA"]) BBprice = input(close, title="source") timeStop = input(10, title="Time-based stop length") BBmult = input(2.0, title="Bollinger Bands Standard Deviation") withIII = input(true, title="with Intraday Intensity Index?") IIIlength = input(21, title="Intraday Intensity Index length") //function for choosing moving averages f_ma(type, src, len) => float result = 0 if type == "SMA" result := sma(src, len) if type == "EMA" result := ema(src, len) result //Intraday Intensity Index k1 = (2 * close - high - low) * volume k2 = high != low ? high - low : 1 i = k1 / k2 iSum = sum(i, IIIlength) //Bollinger Bands BBbasis = f_ma(BBmaType, BBprice, BBlength) BBdev = BBmult * stdev(BBprice, BBlength) BBupper = BBbasis + BBdev BBlower = BBbasis - BBdev plot(BBupper, title="Bollinger Bands Upper Line") plot(BBlower, title="Bollinger Bands Lower Line") plot(BBbasis, title="Bollinger Bands Mid line", color=color.maroon) //Strategy buy = close[1]<BBlower[1] and close>BBlower and (withIII ? iSum>0 : 1) sell = close>BBbasis or buy[timeStop] or (strategy.openprofit>0 and buy==0 and buy[1]==0 and buy[2]==0 and buy[3]==0) short = close[1]>BBupper[1] and close<BBupper and (withIII ? iSum<0 : 1) cover = close<BBbasis or short[timeStop] or (strategy.openprofit>0 and short==0 and short[1]==0 and short[2]==0 and short[3]==0) strategy.entry(id="enter long", long=true, when=buy) strategy.close(id="enter long", comment="exit long", when=sell) strategy.entry(id="enter short", long=false, when=short) strategy.close(id="enter short", comment="exit short", when=cover)