Strategi kombinasi indikator gelombang dinamis

MACD EMA RSI ADX ATR
Tanggal Pembuatan: 2025-02-18 15:20:31 Akhirnya memodifikasi: 2025-02-18 15:20:31
menyalin: 0 Jumlah klik: 366
1
fokus pada
1617
Pengikut

Strategi kombinasi indikator gelombang dinamis

Ringkasan

Strategi ini adalah sistem perdagangan komprehensif yang didasarkan pada beberapa indikator teknis, yang menggabungkan indikator momentum, indikator tren, dan indikator volatilitas untuk menangkap peluang volatilitas jangka pendek di pasar. Strategi ini mengidentifikasi peluang perdagangan melalui sinyal silang MACD, konfirmasi tren EMA, RSI overbought dan oversold, dan penyaringan kekuatan tren ADX, dan menggunakan stop loss stop loss dinamis berbasis ATR untuk mengelola risiko.

Prinsip Strategi

Logika inti dari strategi ini didasarkan pada komponen-komponen kunci berikut:

  1. Indikator MACD digunakan untuk menangkap perubahan momentum, untuk menentukan waktu masuk melalui persilangan garis cepat dan lambat
  2. EMA 200 periode digunakan untuk mengkonfirmasi arah tren keseluruhan, harga di atas garis rata-rata dianggap sebagai tren multihead, sebaliknya sebagai tren overhead
  3. Indikator RSI digunakan untuk mengkonfirmasi pergerakan harga, RSI> 50 mendukung melakukan over, RSI < 50 mendukung melakukan short
  4. Indikator ADX digunakan untuk menyaring tren lemah, dan hanya mempertimbangkan masuk jika ADX lebih besar dari set threshold
  5. Indikator ATR digunakan untuk menghitung stop loss dan stop loss secara dinamis, menyesuaikan diri dengan volatilitas pasar

Keunggulan Strategis

  1. Verifikasi silang multi-indikator untuk meningkatkan keandalan sinyal
  2. Sistem manajemen risiko dinamis yang secara otomatis menyesuaikan stop loss sesuai dengan volatilitas pasar
  3. Adaptif, dapat menyesuaikan parameter sesuai dengan kondisi pasar yang berbeda
  4. Mekanisme pengesahan tren yang lengkap untuk mengurangi risiko terobosan palsu
  5. Logika masuk dan keluar yang sistematis, mengurangi penilaian subjektif

Risiko Strategis

  1. Beberapa indikator dapat menyebabkan kelambatan sinyal
  2. Siklus waktu yang singkat rentan terhadap kebisingan pasar
  3. Optimasi parameter dapat menyebabkan overfitting
  4. Transaksi frekuensi tinggi dapat menyebabkan biaya transaksi yang lebih tinggi
  5. “Kalau ada perubahan besar di pasar, bisa saja terjadi stop loss yang sering terjadi”.

Arah optimasi strategi

  1. Memperkenalkan indikator volume sebagai konfirmasi tambahan
  2. Mengoptimalkan ADX Threshold, meningkatkan efisiensi penyaringan tren
  3. Menambahkan filter waktu untuk menghindari periode likuiditas rendah
  4. Mengembangkan sistem parameter adaptif untuk meningkatkan stabilitas strategi
  5. Bergabung dengan filter volatilitas pasar untuk menghadapi kondisi pasar yang berbeda

Meringkaskan

Strategi ini dengan menggunakan beberapa indikator teknis secara komprehensif, membangun sistem perdagangan yang lengkap. Meskipun ada beberapa keterlambatan dan tantangan pengoptimalan parameter, dengan manajemen risiko yang masuk akal dan pengoptimalan berkelanjutan, strategi ini menunjukkan adaptasi dan keandalan yang baik.

Kode Sumber Strategi
/*backtest
start: 2024-02-18 00:00:00
end: 2025-02-16 08:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Optimized Impulse Wave Strategy", overlay=true)

// === INPUT PARAMETERS ===
fast_length = input(12, title="MACD Fast Length")
slow_length = input(26, title="MACD Slow Length")
signal_smoothing = input(9, title="MACD Signal Smoothing")
ema_length = input(200, title="EMA Length")
rsi_length = input(14, title="RSI Length")
adx_length = input(14, title="ADX Length")
adx_smoothing = input(14, title="ADX Smoothing")
atr_length = input(14, title="ATR Length")
risk_reward_ratio = input(2, title="Risk-Reward Ratio")
adx_threshold = input(20, title="ADX Threshold")

// === INDICATORS ===
[macdLine, signalLine, _] = ta.macd(close, fast_length, slow_length, signal_smoothing)
ema = ta.ema(close, ema_length)
rsi = ta.rsi(close, rsi_length)
[dmiPlus, dmiMinus, adx] = ta.dmi(adx_length, adx_smoothing)

// === ENTRY CONDITIONS ===
bullishTrend = ta.crossover(macdLine, signalLine) and close > ema and adx > adx_threshold and rsi > 50
bearishTrend = ta.crossunder(macdLine, signalLine) and close < ema and adx > adx_threshold and rsi < 50

// === STOP-LOSS & TAKE-PROFIT CALCULATION ===
longStopLoss = close - ta.atr(atr_length) * 1.5
longTakeProfit = close + (ta.atr(atr_length) * 1.5 * risk_reward_ratio)
shortStopLoss = close + ta.atr(atr_length) * 1.5
shortTakeProfit = close - (ta.atr(atr_length) * 1.5 * risk_reward_ratio)

// === STRATEGY EXECUTION ===
// Enter Long
if bullishTrend
    strategy.entry("Long", strategy.long)
    strategy.exit("TakeProfitLong", from_entry="Long", limit=longTakeProfit, stop=longStopLoss)

// Enter Short
if bearishTrend
    strategy.entry("Short", strategy.short)
    strategy.exit("TakeProfitShort", from_entry="Short", limit=shortTakeProfit, stop=shortStopLoss)

// === PLOTTING ===
plot(ema, title="EMA 200", color=color.blue, linewidth=2)
plotshape(series=bullishTrend, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")
plotshape(series=bearishTrend, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")

// === ALERTS ===
alertcondition(bullishTrend, title="Bullish Entry", message="Buy Signal Triggered!")
alertcondition(bearishTrend, title="Bearish Entry", message="Sell Signal Triggered!")

// === DEBUGGING LOG ===
label.new(bar_index, high, "ADX: " + str.tostring(adx), color=color.white, textcolor=color.black)
label.new(bar_index, low, "MACD Cross: " + str.tostring(macdLine), color=color.white, textcolor=color.black)