この指標はモボバンド (モメンタム・ブレイクアウト・バンド) です.これらのバンドは調整された標準偏差を持つボリンガーバンドです.上向きの動きのためにバンドの上側にモメンタムブレイクがあるときのバイ・シグナルがあり,下向きの動きのためにバンド下側にモメンタムブレイクがあるときのセール・シグナルがあります.バンドは,すべての市場が,私たちがすべて真実であることを知っている期間があることを示唆します.価格がバンド内にあり,トレンドレスであるとされています.ブレイクアウトが起きたら,ブレイクアウトの方向に取引することができます.私はこれを1時間制のスイング・トレードオプションに使用したいのですが,バンドはほとんどの楽器とタイムフレームで動作する必要があります.エントリのために1時間制のSPYチャートでスイッチを取ったり,トレンド確認のために日々のチャートを使用したい.
バックテスト
/*backtest start: 2022-04-12 00:00:00 end: 2022-05-11 23:59:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 study("Mobo Bands", overlay=false) price = input(hl2, "Price") colorNormLength = input(3, "colorNormLength", input.integer) dpoLength = input(13, "dpoLength", input.integer) moboDisplace = input(0, "moboDisplace", input.integer) moboLength = input(10, "moboLength", input.integer) numDevDn = input(-0.8, "numDevDn", input.float) numDevUp = input(0.8, "numDevUp", input.float) coloredMobo = input(true, "coloredMobo") coloredFill = input(true, "coloredFill") breakArrows = input(true, "breakArrows") moboShowMid = input(true, "moboShowMid") //def DPO = price - Average(price[DPO_length / 2 + 1], DPO_length); xsma = sma(price[int(dpoLength / 2 + 1)], dpoLength) //alert(int(dpoLength / 2 + 1)) //xsma = sma(price, dpoLength) DPO = price - xsma Midline = sma(DPO, moboLength) sDev = stdev(DPO, moboLength) LowerBand = Midline + numDevDn * sDev UpperBand = Midline + numDevUp * sDev plot(DPO, color=color.yellow,linewidth=2) plot(Midline, color=Midline > Midline[1] ? color.lime : color.red,linewidth=2) Upper = plot(UpperBand, color=color.black,linewidth=1) Lower = plot(LowerBand, color=color.black,linewidth=1) plot(0, color=color.white,linewidth=1) Signal1 = DPO > UpperBand and DPO[1] < UpperBand[1] Signal2 = DPO < LowerBand and DPO[1] > LowerBand[1] wasUp = 1 wasDn = 1 wasUp := Signal1 ? 1 : (Signal2 ? 0 : nz(wasUp[1])) wasDn := Signal2 ? 1 : (Signal1 ? 0 : nz(wasDn[1])) //plotshape(Signal1 and wasDn[1] ? UpperBand : na, style=shape.arrowup, location=location.absolute, size=size.normal, color=color.red) //plotshape(Signal2 and wasUp[1] ? LowerBand : na, style=shape.arrowdown, location=location.absolute, size=size.normal, color=color.green) plotshape(Signal1 and wasDn[1] ? UpperBand : na, style=shape.labelup, location=location.absolute, size=size.normal, color=color.green, text="Buy",textcolor=color.white) plotshape(Signal2 and wasUp[1] ? LowerBand : na, style=shape.labeldown, location=location.absolute, size=size.normal, color=color.red, text="Sell",textcolor=color.white) //fill(Upper, Lower, color=color.purple) alertcondition(Signal1 and wasDn[1], "Break Out Arrow", "Break Out Arrow") alertcondition(Signal2 and wasUp[1], "Break Down Arrow", "Break Down Arrow") if Signal1 and wasDn[1] strategy.entry("Enter Long", strategy.long) else if Signal2 and wasUp[1] strategy.entry("Enter Short", strategy.short)