Bollinger Band T3 移動平均戦略

作者: リン・ハーンチャオチャン開催日:2023年11月2日15時45分31秒
タグ:

img

概要

この戦略は,移動平均値のトレンド判断とボリンジャーバンドのオーバーバイト/オーバーセール判断を完全に利用する.T3移動平均値の平滑化により,トレンド逆転をタイミングで特定し,市場に参入することができます.振動ゾーンでは,ボリンジャーバンドを使用して反トレンド取引のためのオーバーバイト/オーバーセールエリアを特定します.したがって,超短期取引を実現します.

戦略の論理

この戦略は,主にトレンドを特定し,取引信号を生成するために3つの移動平均を使用する.第一はT3移動平均で,指数的なスムージングを通じて価格変動をフィルタリングし,トレンド方向を判断することができます.第二は中期移動平均で,ここで20期SMAを使用して中期トレンドを決定します.最後にそれぞれ50期および200期T3移動平均である.速い線がスローラインよりも大きいとき,それは上向きの傾向を示し,そうでなければ下向きの傾向を示します.

取引信号は,中期SMAが中期T3上向きを上向きのトレンドと組み合わせて横切ったときに生成される.中期SMAが中期T3下向きを下向きのトレンドと組み合わせて下向きを下向きに横切ったとき,ショートに行く.また,ボリンジャー帯は利益を得るために使用され,ストップ損失を発生させる.価格が上部帯を突破した場合,利益を得ることを検討する.価格が下部帯を突破した場合,ストップ損失を考慮する.

具体的には,ロング条件は,中間SMAが中間T3を上向きに横切り,高速MAは遅いMAより大きい.価格が上部ボリンジャーバンドを突破したり,中間SMAがT3を下向きに突破したりした場合,利益を取ることを検討する.ショート条件は,中間SMAが中間T3を下向きに突破したり,高速MAは遅いMAよりも小さい.価格が下部ボリンジャーバンドを突破したり,中間SMAがT3上向きに突破したりすると,ストップ損失を検討する.

利点

  • 複数の移動平均値,T3をスムーズ化,中間SMAをトレンド,高速MAsと遅いMAsを長期トレンドのメリットに充分活用する
  • ボリンジャー・バンド 上部と下部帯は,過剰購入/過剰販売レベルを判断し,損失リスクを軽減します
  • 厳格な取引信号の組み合わせ,変動によって誤解を招かないように

リスク

  • 不適切なT3パラメータは,平ら化できないか遅延を引き起こす可能性があります.
  • 誤ったボリンジャー帯のパラメータは,無効な帯を引き起こす可能性があります.
  • 誤った移動平均期間の傾向は誤った傾向方向に導きます
  • 利得とストップロスの不正確なブレイクポイントは,早すぎたり遅すぎたりして終了する可能性があります

改善:

  • バランスアップの平滑と遅延のためのT3パラメータを調整する
  • ボリンジャー・バンドのパラメータを通常の変動範囲に合わせて調整する.
  • 異なる移動平均期間のテストをすることで,資産に適した期間の調査を行う.
  • バックテスト結果に基づいて,利益とストップロスのポイントを最適化

オプティマイゼーションの方向性

  • ADXのようなトレンド強度指標を追加してトレンドターニングポイントで逆転を避ける
  • 市場変動に基づいてパラメータを調整するために波動性指標を追加
  • より多くの利益が稼働できるように後続ストップ損失を追加します
  • バンドを壊した後,ストップ損失を追跡

概要

概要すると,この戦略は,トレンドを決定するためにシスタマティックに移動平均値を使用し,ボリンジャーバンドでオーバーバイト/オーバーセールレベルを特定します.トレンドの逆転時にタイミングで市場に参入することができ,リスクを効果的に制御します.しかし,パラメータの調整と最適化は,戦略が本当にうまく機能するために重要です.トレンド強度,波動性,ストップロスの追跡とさらに組み合わせることで,戦略がより堅牢でスマートになります.


/*backtest
start: 2023-10-25 00:00:00
end: 2023-11-01 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(shorttitle="BB T3 Strategy", title="BB T3 Strategy", overlay=true)

//T3
b = 0.7
c1 = -b*b*b
c2 = 3*b*b+3*b*b*b
c3 = -6*b*b-3*b-3*b*b*b
c4 = 1+3*b+b*b*b+3*b*b

t3(len) => c1 * ema(ema(ema(ema(ema(ema(close, len), len), len), len), len), len) + c2 * ema(ema(ema(ema(ema(close, len), len), len), len), len) + c3 * ema(ema(ema(ema(close, len), len), len), len) + c4 * ema(ema(ema(close, len), len), len)
//T3 end

length = input(20, minval=1)

mult = input(2.5, minval=0.001, maxval=50, title="StdDev")
basis = t3(length)
basisDev = t3(length/10)

dev = mult * stdev(basisDev,length)
upper = basis + dev
lower = basis - dev
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
plot(basis, "Basis", color=#872323, offset = offset)
p1 = plot(upper, "Upper", color=color.teal, offset = offset)
p2 = plot(lower, "Lower", color=color.teal, offset = offset)
fill(p1, p2, title = "Background", color=#198787, transp=95)

stoploss = input(true, "Stop Loss")

basisSma = sma(close, length)
p3 = plot(basisSma, color=color.blue, title="MA", offset=offset)

fastT3 = t3(50)
slowT3 = t3(200)

crossUp = crossover(basisSma, basis)
crossDown = crossunder(basisSma, basis)
bollBounce = crossover(close, upper)
bollReject = crossunder(close, lower)
underBasis = crossunder(close, basis)
overBasis = crossover(close, basis)

trendUp = fastT3 > slowT3
trendDown = fastT3 < slowT3

strategy.entry("long", strategy.long, when=(trendUp and crossUp), stop=(stoploss ? high+syminfo.mintick : na))
strategy.close("long", when=(bollBounce or crossDown or underBasis))
strategy.entry("short", strategy.short, when=(trendDown and crossDown), stop=(stoploss ? low-syminfo.mintick : na))
strategy.close("short", when=(bollReject or crossUp or overBasis))


もっと