マルチインジケータークロスダイナミックストッププロフィットとストップロストレンド追跡戦略

EMA RSI ADX MACD ATR
作成日: 2025-02-20 09:37:03 最終変更日: 2025-02-27 17:52:08
コピー: 1 クリック数: 382
2
フォロー
319
フォロワー

マルチインジケータークロスダイナミックストッププロフィットとストップロストレンド追跡戦略 マルチインジケータークロスダイナミックストッププロフィットとストップロストレンド追跡戦略

概要

この戦略は,複数の技術指標に基づく現金市場多頭戦略である.これは,主に,相対的に強い指数 (RSI),平均トレンド指標 (ADX) および移動平均の傾向/偏差指標 (MACD) と組み合わせた,高速と遅い移動平均の交差信号 (EMA) を利用し,取引信号を確認する.この戦略は,ダイナミックなストップとストップレベルを設定するために,平均リアル波幅 (ATR) を使用し,リスク管理を実現する.

戦略原則

戦略の中核となるロジックは、次の主要な要素に基づいています。

  1. 8周期と21周期のEMA交差を主要な入場信号として使用
  2. ADX>25でトレンドの強さを確認
  3. MACD ゴールドフォークでトレンドの方向を確認する
  4. RSI<70は,過剰買い区域への入場を避けるために使われます.
  5. ATRの1.5倍をストップとして,
  6. 利益のロックを保証するストップ・ロスの追跡システム

戦略的優位性

  1. 多重認証メカニズムにより取引の信頼性が著しく向上
  2. 市場波動に適応する動的ストップとストップの設定
  3. ストップトラッキング機能 利益の保護
  4. 偽信号を減らすために,K線での確認のみで取引を実行する
  5. 資金の割合を保有し,リスクをコントロールする
  6. 取引コストを考慮し,実際の取引状況に適合する

戦略リスク

  1. 複数の指標により,一部の取引機会を逃す可能性があります.
  2. 市場が急激に揺れ動いてしまうと 頻繁に誤ったシグナルが出る可能性があります
  3. 大幅な空飛ぶことは,止損効果を引き起こす可能性があります.
  4. 取引コストは戦略全体のリターンに影響を与える可能性がある
  5. 熊市では多方向戦略がうまくいかない

戦略最適化の方向性

  1. 市場環境のフィルターを追加し,異なる市場条件でパラメータを調整することを検討できます.
  2. 取引量指標を追加確認信号として導入
  3. EMAとMACDのパラメータを最適化して,異なる時間周期に適したものにします.
  4. 防損失の改善 防の分批を検討
  5. 位置管理の論理を追加し,より柔軟なポジション制御を実現

要約する

これは合理的に設計されたトレンド追跡戦略であり,複数の技術指標の配合使用によって,リスクを制御しながら安定した収益を追求する.戦略の優点は,その完善な確認機構とリスク管理システムにあるが,実際の市場状況に応じてパラメータの最適化と論理的な改善が必要である.既存のリスクに対して,市場環境のフィルターと最適化パラメータを追加することによって,戦略の安定性と収益性をさらに向上させることができる.

ストラテジーソースコード
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Optimized Long-Only Strategy (Spot Market) - Candle Signals Only", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.1)

// INPUTS
fastEMA_len         = input.int(8, "Fast EMA Length", minval=1)
slowEMA_len         = input.int(21, "Slow EMA Length", minval=1)
rsiPeriod           = input.int(14, "RSI Period")
rsiOverbought       = input.int(70, "RSI Overbought Level", minval=50)
adxPeriod           = input.int(14, "ADX Period", minval=1)
adxThreshold        = input.int(25, "ADX Trend Strength Threshold", minval=1)
fastMACD            = input.int(12, "MACD Fast Length", minval=1)
slowMACD            = input.int(26, "MACD Slow Length", minval=1)
signalMACD          = input.int(9, "MACD Signal Length", minval=1)
atrPeriod           = input.int(14, "ATR Period", minval=1)
atrStopMultiplier   = input.float(1.5, "ATR Stop Loss Multiplier", step=0.1)
atrProfitMultiplier = input.float(2.0, "ATR Profit Target Multiplier", step=0.1)

// CALCULATIONS
emaFast   = ta.ema(close, fastEMA_len)
emaSlow   = ta.ema(close, slowEMA_len)
rsiValue  = ta.rsi(close, rsiPeriod)

// --- Custom ADX Calculation ---
up      = ta.change(high)
down    = -ta.change(low)
plusDM  = (up > down and up > 0) ? up : 0
minusDM = (down > up and down > 0) ? down : 0
trueRange = ta.tr(true)  // 'handle_na' parameter set to true
atrVal    = ta.rma(trueRange, adxPeriod)
plusDI    = 100 * ta.rma(plusDM, adxPeriod) / atrVal
minusDI   = 100 * ta.rma(minusDM, adxPeriod) / atrVal
dx        = 100 * math.abs(plusDI - minusDI) / (plusDI + minusDI)
adxValue  = ta.rma(dx, adxPeriod)

// MACD Calculation (MACD line, signal line, histogram)
[macdLine, signalLine, _] = ta.macd(close, fastMACD, slowMACD, signalMACD)

// ATR for stops and targets
atrValue  = ta.atr(atrPeriod)

// TRADING CONDITION (Long Only, on confirmed candle)
longCondition = ta.crossover(emaFast, emaSlow) and (adxValue > adxThreshold) and (macdLine > signalLine) and (rsiValue < rsiOverbought)

// POSITION MANAGEMENT: Execute only on confirmed candles
if barstate.isconfirmed and longCondition
    strategy.entry("Long", strategy.long)
    longStop   = close - atrStopMultiplier * atrValue
    longTarget = close + atrProfitMultiplier * atrValue
    strategy.exit("Long Exit", from_entry="Long", stop=longStop, limit=longTarget, trail_points=atrValue * 0.5, trail_offset=atrValue * 0.3)

// PLOTTING
plot(emaFast, color=color.green, title="Fast EMA")
plot(emaSlow, color=color.red, title="Slow EMA")
plotshape(barstate.isconfirmed and longCondition, title="Buy Signal", style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", textcolor=color.white, size=size.tiny)