スーパートレンドインジケーター DEMA デュアルトレンドフォロー戦略


作成日: 2024-01-16 15:03:55 最終変更日: 2024-01-16 15:03:55
コピー: 1 クリック数: 643
1
フォロー
1617
フォロワー

スーパートレンドインジケーター DEMA デュアルトレンドフォロー戦略

概要

二重トレンド追跡戦略は,超トレンド指標,二次指数移動平均 (DEMA) とブリン帯を組み合わせた複合戦略である.それは,トレンドが逆転するときに,購入・売却の信号をタイムリーに捕捉するために,複数の技術指標の優位性を利用することを目的としている.

戦略原則

この戦略は主に3つの部分から構成されています.

  1. スーパートレンド指標:上方突破線と下方突破線を計算し,現在のトレンドの方向を判断する.価格が下から上方突破すると買い信号を生成し,上から下方突破すると売り信号を生成する.

  2. 双指数移動平均 ((DEMA):トレンドを追跡する指標で,単純な移動平均と指数移動平均の特性を組み合わせ,価格の変化により迅速に反応する.戦略に200日間のDEMAを設定し,長期のトレンド方向を判断する.

  3. ブリン帯:価格変動の範囲を示す. ブリン帯が異常な収縮または拡大すると,潜在的なトレンドの逆転を予兆する.

超トレンド指数とDEMAの両方が買/売シグナルを発したときに,対応するポジションに入ります.さらに,ブリン帯の異常は,補助判断の信号としても使用できます.

戦略的優位性

  1. 複数の指標を組み合わせて,総合的な判断を行い,偽信号を減らす.
  2. スーパートレンド指標は,微小な価格変動に無感であり,トレンドの転換点でのみ信号を生成し,過度に頻繁な取引を避けます.
  3. DEMAは曲線を平らにし,長期トレンドを正確に判断する.
  4. ブルインは,トレンドの逆転を補助的に判断した.

リスクと解決策

  1. 超トレンド指標のパラメータ設定が過度に敏感で,より多くのノイズを生じることがあります.ATR周期と倍数パラメータを最適化するために調整できます.
  2. DEMA周期が長すぎると,トレンドを追う能力が低下する.100日まで短縮できるテストなどパラメータがある.
  3. 複数の指標の組み合わせを判断する際に信号が一致しない場合.この場合,超トレンド指標が主信号であることに従うことができる.

最適化の方向

  1. 異なるATR周期と倍数パラメータ設定をテストし,超トレンド指標の最適なパラメータを見つけます.
  2. DEMA周期パラメータを最適化する.
  3. KDJ,MACDなどの他の指標を補助判断に追加する.
  4. ストップ・ロスの策略を増やすこと

要約する

二重トレンド追跡戦略 多指標組合せ,超トレンド,DEMA,ブリン帯の3つの優位性を総合的に利用し,トレンドを捉えながら信号品質を向上させ,パラメータ最適化により優れた戦略効果を期待できる.止損メカニズムの追加も将来の最適化重点である.

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

//@version=4
strategy("Supertrend + DEMA + Bollinger Bands", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, precision=2)

// Input parameters for Supertrend
atrLength = input(title="ATR Period", type=input.integer, defval=12)
src = input(hl2, title="Source")
multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR = input(title="Change ATR Calculation Method?", type=input.bool, defval=true)
showSupertrend = input(title="Show Supertrend Indicator?", type=input.bool, defval=true)

// Input parameters for DEMA
demaLength = input(200, title="DEMA Period")
showDEMA = input(title="Show DEMA Indicator?", type=input.bool, defval=true)

// Calculate ATR for Supertrend
atr2 = sma(tr, atrLength)
atr = changeATR ? atr(atrLength) : atr2

// Calculate Supertrend
up = src - (multiplier * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? max(up, up1) : up

dn = src + (multiplier * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn

trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

// Plot Supertrend
upPlot = plot(showSupertrend ? (trend == 1 ? up : na) : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
plotshape(buySignal ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.new(color.white, 0))

dnPlot = plot(showSupertrend ? (trend == 1 ? na : dn) : na, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
plotshape(sellSignal ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0))

mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)

longFillColor = (trend == 1 ? color.new(color.green, 80) : color.new(color.white, 0))
shortFillColor = (trend == -1 ? color.new(color.red, 80) : color.new(color.white, 0))

fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highlighter", color=shortFillColor)

// Alert conditions
alertcondition(buySignal, title="Custom Supertrend Buy", message="Custom Supertrend Buy!")
alertcondition(sellSignal, title="Custom Supertrend Sell", message="Custom Supertrend Sell!")

// Calculate DEMA
ema1 = ema(close, demaLength)
dema = 2 * ema1 - ema(ema1, demaLength)

// Plot DEMA with white color
plot(showDEMA ? dema : na, color=color.new(color.white, 0), title="DEMA", linewidth=2)

// Add push notification on mobile if buy and sell occurred
if (buySignal)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Sell")
    alert("Buy Signal - Supertrend")

if (sellSignal)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Cover")
    alert("Sell Signal - Supertrend")