この戦略は,ボリンジャーバンド指標に基づいている.主なアイデアは,価格が上または下帯から突破した後,ボリンジャーバンドに戻るのを待つこと,そして再入口点でのブレイクと同じ方向にポジションを確立することです.この戦略は,価格が極端な領域にいるときにしばしば逆転する特性を利用しています.ボリンジャーバンドブレイクと再入口の条件を組み合わせることで,市場のターニングポイントを把握し,より高い勝利率を達成することを目指しています.
ボリンジャーバンドス・ブレイクアウト・リエントリー・トレーディング・ストラテジー (Bollinger Bands Breakout Reentry Trading Strategy) は,シンプルで実用的な定量的なトレーディング・ストラテジーである.極端な状況に対する価格の反応を利用し,ボリンジャーバンドス・ツールを通じてエントリー・エグジット条件を構築し,トレンド開始・終了点を一定程度に把握し,頻繁な取引を制御することができる.同時に,この戦略にはパラメータ選択,振動する市場でのパフォーマンス不良,トレンドキャプチャ不足などの問題もある.詳細を最適化し,他のシグナルと組み合わせることで,この戦略の適応性と強度をさらに向上させることが期待されている.
/*backtest start: 2024-02-01 00:00:00 end: 2024-02-27 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(shorttitle="BB", title="Bollinger Bands", overlay=true) length = input.int(20, minval=1) maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"]) src = input(close, title="Source") mult = input.float(1.7, minval=0.001, maxval=50, title="StdDev") ma(source, length, _type) => switch _type "SMA" => ta.sma(source, length) "EMA" => ta.ema(source, length) "SMMA (RMA)" => ta.rma(source, length) "WMA" => ta.wma(source, length) "VWMA" => ta.vwma(source, length) basis = ma(src, length, maType) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev offset = input.int(0, "Offset", minval = -500, maxval = 500) plot(basis, "Basis", color=#FF6D00, offset = offset) p1 = plot(upper, "Upper", color=#2962FF, offset = offset) p2 = plot(lower, "Lower", color=#2962FF, offset = offset) fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95)) break_up = close > upper break_down = close < lower inside = close > lower and close < upper sell_condition = break_up[1] and inside buy_condition = break_down[1] and inside // Conditions to close trades close_sell_condition = close > basis close_buy_condition = close < basis trade_condition = sell_condition or buy_condition // Tracking the high of the breakout candle var float peak = na if (not trade_condition) peak := close if (break_up and peak < high) peak := high if (break_down and peak > low) peak := low // Entering positions if (buy_condition) strategy.entry("Buy", strategy.long) if (sell_condition) strategy.entry("Sell", strategy.short) // Exiting positions when close crosses the basis if (strategy.position_size > 0 and close_sell_condition) // If in a long position and close crosses above basis strategy.close("Buy") if (strategy.position_size < 0 and close_buy_condition) // If in a short position and close crosses below basis strategy.close("Sell")