ダブルバンド駆動の強力なインデックス取引戦略


作成日: 2023-12-12 17:12:35 最終変更日: 2023-12-12 17:47:33
コピー: 1 クリック数: 920
1
フォロー
1621
フォロワー

ダブルバンド駆動の強力なインデックス取引戦略

概要

この戦略は,双波帯の指標と強み指数の指標を組み合わせて,突破取引モデルを実現する.高速EMAが波帯通路を突破すると,AO指標の多空方向信号と組み合わせて,買入と売却の信号を生成する.

戦略原則

  1. ブリン帯の中線,上線,下線を用いた価格判断チャネル.
  2. 高速EMAが中軌道を横断すると,通路突破であると判断する.
  3. 強度指数AO指数は多頭と空頭の方向を判断する.
  4. 高速EMAが上方の中間軌道に突破し,AOが正であるとき,買取信号が生成する.
  5. 急速なEMAが下向きに中軌道を突破し,AOが負であるとき,セールシグナルが発生する.

優位分析

  1. 双波帯の指標は価格チャネルを判断し,誤った信号を避ける.
  2. AO指数はトレンドの方向を判断し,取引シグナルをより正確にする.
  3. 経路を突破したモデル取引と組み合わせると,トレンドの初期段階でより大きな利益を得ることができます.

リスク分析

  1. ブリン帯のパラメータが正しくない場合,通路があまりにも広いか狭すぎる可能性があります.
  2. AO指数パラメータの設定は判断の正確さに影響する.
  3. 突破信号は偽突破である可能性があり,十分な突破力を確保する必要があります.

解決方法

  1. ブリン帯とAO指標のパラメータを最適化して,最適な組み合わせを見つける.
  2. 突破の強度条件を高め,偽突破を回避する.
  3. 他の指標と組み合わせて使用され,取引信号の信頼性を確保する.

最適化の方向

  1. ブリン帯のパラメータを最適化して,最も適切な通路範囲を見つけます.
  2. AO指数の長期短期平均線パラメータを最適化して判断精度を向上させる.
  3. ボリュームや他の指標のフィルターを追加して,突破の信頼性を確保する.
  4. 突破力のパラメータを最適化し,偽突破率を下げる.

要約する

この戦略は,価格通路,トレンド方向,および突破モードを総合的に考慮し,より安定的かつ効率的な取引戦略である.パラメータ最適化とコンポーネント指標フィルタリングにより,戦略の安定性と収益率をさらに強化することができる.その突破取引モデルは,トレンドの早期の機会を捕捉することができ,大きな実用価値があります.

ストラテジーソースコード
/*backtest
start: 2022-12-05 00:00:00
end: 2023-12-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

strategy(shorttitle="BB+AO STRAT", title="BB+AO STRAT", overlay=true)


// === BACKTEST RANGE ===
FromMonth = input(defval = 6, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2018, title = "From Year", minval = 2014)
ToMonth   = input(defval = 1, title = "To Month", minval = 1)
ToDay     = input(defval = 1, title = "To Day", minval = 1)
ToYear    = input(defval = 9999, title = "To Year", minval = 2014)

// Bollinger Bands Inputs
bb_use_ema = input(false, title="Use EMA for Bollinger Band")
bb_length = input(5, minval=1, title="Bollinger Length")
bb_source = input(close, title="Bollinger Source")
bb_mult = input(2.0, title="Base Multiplier", minval=0.5, maxval=10)
// EMA inputs
fast_ma_len = input(2, title="Fast EMA length", minval=2)
// Awesome Inputs
nLengthSlow = input(34, minval=1, title="Awesome Length Slow")
nLengthFast = input(5, minval=1, title="Awesome Length Fast")




// Breakout Indicator Inputs
bb_basis = bb_use_ema ? ema(bb_source, bb_length) : sma(bb_source, bb_length)
fast_ma  = ema(bb_source, fast_ma_len)

// Deviation

dev = stdev(bb_source, bb_length)
bb_dev_inner = bb_mult * dev

// Upper bands
inner_high = bb_basis + bb_dev_inner
// Lower Bands
inner_low = bb_basis - bb_dev_inner

// Calculate Awesome Oscillator
xSMA1_hl2 = sma(hl2, nLengthFast)
xSMA2_hl2 = sma(hl2, nLengthSlow)
xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
// Calculate direction of AO
AO = xSMA1_SMA2>=0? xSMA1_SMA2 > xSMA1_SMA2[1] ? 1 : 2 : xSMA1_SMA2 > xSMA1_SMA2[1] ? -1 : -2



// === PLOTTING ===

// plot BB basis
plot(bb_basis, title="Basis Line", color=red, transp=10, linewidth=2)
// plot BB upper and lower bands
ubi = plot(inner_high, title="Upper Band Inner", color=blue, transp=10, linewidth=1)
lbi = plot(inner_low, title="Lower Band Inner", color=blue, transp=10, linewidth=1)
// center BB channel fill
fill(ubi, lbi, title="Center Channel Fill", color=silver, transp=90)

// plot fast ma
plot(fast_ma, title="Fast EMA", color=black, transp=10, linewidth=2)

// Calc breakouts
break_down =   crossunder(fast_ma, bb_basis) and close < bb_basis and abs(AO)==2
break_up   =  crossover(fast_ma, bb_basis) and close > bb_basis and abs(AO)==1

// Show Break Alerts
plotshape(break_down, title="Breakout Down", style=shape.arrowdown, location=location.abovebar, size=size.auto, text="Sell", color=red, transp=0)
plotshape(break_up, title="Breakout Up", style=shape.arrowup, location=location.belowbar, size=size.auto, text="Buy", color=green, transp=0)
// === ALERTS ===



strategy.entry("L", strategy.long, when=(break_up and (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))


strategy.close("L", when=(break_down and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))

// === /PLOTTING ===
barcolor(AO == 2 ? red: AO == 1 ? green : blue )



// eof