この戦略は,価格逆転点を特定するために強化されたボリンジャーバンド指標を使用し,価格が下帯に近づくとロングになり,緑色のキャンドルが現れるとポジションを閉じて,下帯の平均逆転を捕捉することを目指します.
標準BBパラメータのベース,dev,上BB,下BBを計算する.
SMAと偏差帯 upex2と dnex2を SMAから一定の割合で計算する.
上BBと下BBの平均をUPEX2とDnex2で取るとUPEX3とDnex3が得られます
Upex3の大きい部分とBB上部を新しいUpex上部,Dnex3の小さい部分とBB下部を新しいDnex下部とする.
価格が dnexを下回るときはロング,緑色のキャンドルが表示されたときは閉じる (閉じる>開く).
強化BBは,以前の逆転信号に対する元のBBの感度を向上させる.
カンデスタイルのパターンで鞭をフィルターします.
バックテストによると,2008年から2018年にかけて,安定した収益性,円滑な曲線,最大DD < 20%を示している.
設定可能なレバレッジ リスク管理のための取引時間
BBパラメータの調節が不十分である場合,過剰な取引や機会を逃す可能性があります.
傾向の逆転から利益を得られない
キャンドルフィルタが遅れて 間に合わないかもしれない
10年後のバックテストデータでは 安定性を検証するには不十分です
大きなギャップや開口ジャンプに適応できない
BB設定を最適化するためにパラメータの組み合わせをテストする.
収益性を高めるため 他の信号フィルターを追加します
価格が上限を超えるとショート取引を検討します.
ストップロスを設定して,単一の取引損失を制限します.
市場の変化に合わせて 自動チューニングを開発する
ギャップとジャンプのエントリールールを最適化
バックテスト期間をテストパラメータに拡張する
この戦略は,強化されたBBで逆転点を特定し,迅速な利益を得るためにキャンドルフィルターで低いバンドに近い長さを設定します.バックテストパフォーマンスは良好です.しかし,長時間のみ,限られたサンプル,パラームチューニングが必要です.市場が変化するときに引き下げに直面する可能性があります.次のステップは,勝利率を高めるための信号を確認し,ショートトレード,強度のために長いバックテスト,適応性と安定性を向上します.
/*backtest start: 2022-09-14 00:00:00 end: 2023-09-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "Noro's Advanced Bollinger Bands Strategy v1.0", shorttitle = "ABB str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(false, defval = false, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") p = input(20, "bars") d = input(25, "percent") showlines = input(true, defval = true, title = "Show Lines?") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") mult = input(2.0, minval=0.001, maxval=50) basis = sma(close, p) dev = mult * stdev(close, p) source = close upperBB = basis + dev lowerBB = basis - dev b1 = plot(basis, color=gray, linewidth=1) p1 = plot(upperBB, color=aqua, linewidth=1) p2 = plot(lowerBB, color=aqua, linewidth=1) //SMAs sma = sma(close, p) upex2 = sma * ((100 + d) / 100) dnex2 = sma * ((100 - d) / 100) upex3 = (upex2 + upperBB) / 2 dnex3 = (dnex2 + lowerBB) / 2 upex = max(upperBB, upex3) dnex = min(lowerBB, dnex3) //exit = (high > sma and low < sma) exit = close > open //Lines col = showlines ? blue : na plot(upex, linewidth = 3, color = col, transp = 0) plot(sma, linewidth = 3, color = col, transp = 0) plot(dnex, linewidth = 3, color = col, transp = 0) //Trading lot = strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1] if (not na(close[p])) strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, limit = dnex) strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, limit = upex) if exit strategy.close_all()