この戦略はブリン帯の指数に基づいている.価格がブリン帯を突破したときに多めにし,価格がブリン帯を触ったときに平仓する.この戦略は,ブリン帯の包含的原理を利用して,価格の異常突破を追跡し,低買い高売りを実現する.
ブリン帯の中央線SMAを計算し,近期閉店価格のシンプル移動平均を取ります.
標準差はStdDevで,価格変動範囲を反映している.
中間線SMAと標準差の偏差で,ブリンが軌道に乗った.
中間線SMAを標準差下偏移で減算して,ブリンが軌道下に置かれた.
閉盤価格が下から上昇して下線を突破すると,多入場する.
価格が軌道に触れたとき,価格が異常であると判断し,平仓を離れる.
この戦略の最大の利点は,ブリン帯の指標の統計的特性を利用し,市場異常波動を効果的に追跡し,トレンドキャプチャを実現することです.通常の移動平均戦略と比較して,ブリン帯戦略は優れている:
ブリン・ベルトは,市場の波動に自動的に適応します.
突破は入口信号としてより信頼できる.
中枢軸への帰還は停止信号として合理的である.
パラメータを最適化できるスペースがあり,異なる市場に対応して調整できます.
ショートラインのトレンドも捉える.
この戦略の潜在的リスクは以下の通りです.
ブリン帯は横盤市場ではあまり効果的ではないので,誤入を避けるように注意してください.
突破信号は偽突破である可能性があり,慎重に判断してください.
ストップ位置は理想的であり,実用的な状況に最適化することができる.
パラメータを正しく設定しない場合,取引が頻繁すぎたり保守的になる可能性があります.
合を避けるのに十分な回転周期が必要である.
対応するリスク対策:
取引量指数と組み合わせたフィルター信号.
パラメータを最適化し,異なる市場でのデータ効果をテストする.
モバイルストップ,回転ストップの位置を追加します.
評価信号は背を向けて 追いかけるのを避ける.
この戦略は以下の点で最適化できます.
ブリン帯のパラメータを異なるサイズで試し,最適な組み合わせを探します.
平均線,MACDなどの指標をフィルターする突破信号を追加する.
ブリン帯パラメータを最適化する機械学習アルゴリズムを適用する.
突破入場の同時,強弱を評価し,ポジションを調整する.
より長い周期データ,テスト戦略の安定性.
リスク管理のためのストップダストメカニズムを追加する.
ブリン帯戦略は,全体として信頼性の高いトレンド追跡戦略である.それは,価格の異常な変動を効果的に捕捉することができる.しかし,我々は,現実の状況との偏差を注意し,パラメータを常に最適化することも必要です.もし現場で使用されれば,厳格にリスク管理を行い,単一損失を制御する必要があります.
/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-12 04:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="BB training No Repainting (OTS Mode)", overlay=true)
// Strategy Rules:
// 1. Enter trade when price crosses above the lower band
// 2. Exit trade when price touches the upper band
//
// Chart Properties
testStartYear = input(2010, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)
testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ? #6c6f6c : na
bgcolor(testPeriodBackgroundColor, transp=97)
// User provided values
smaLength = input(title="SMA Length", type=input.integer, defval=20) // Middle band period length (moving average)
stdLength = input(title="StdDev Length", type=input.integer, defval=20) // Range to apply bands to
ubOffset = input(title="Upper Band Offset", type=input.float, defval=2.0, step=0.5) // Number of standard deviations above MA
lbOffset = input(title="Lower Band Offset", type=input.float, defval=2.0, step=0.5) // Number of standard deviation below MA
testPeriod() =>
time >= testPeriodStart and time <= testPeriodStop ? true : false
smaValue = sma(close, smaLength) // Middle band
stdDev = stdev(close, stdLength)
upperBand = smaValue + stdDev * ubOffset // Top band
lowerBand = smaValue - stdDev * lbOffset // Bottom band
// Plot bands to chart
plot(series=smaValue, title="SMA", color=color.green)
plot(series=upperBand, title="UB", color=color.blue, linewidth=2)
plot(series=lowerBand, title="LB", color=color.blue, linewidth=2)
longCondition = (crossover(close, lowerBand))
closeLongCondition = (close >= upperBand)
if (longCondition and testPeriod())
strategy.entry(id="CALL", long=true)
strategy.close(id="CALL", when=closeLongCondition)