Strategi Penolakan Rata-rata Bergerak Berdasarkan Filter Indeks Arah Rata-rata

ADX MA WMA
Tanggal Pembuatan: 2024-05-17 10:35:58 Akhirnya memodifikasi: 2024-05-17 10:35:58
menyalin: 1 Jumlah klik: 644
1
fokus pada
1617
Pengikut

Strategi Penolakan Rata-rata Bergerak Berdasarkan Filter Indeks Arah Rata-rata

Ringkasan

Strategi ini menggunakan beberapa moving average (MA) sebagai sinyal perdagangan utama, dan digabungkan dengan indeks arah rata-rata (ADX) sebagai filter. Ide utama strategi ini adalah untuk mengidentifikasi potensi peluang multihead dan kosong dengan membandingkan hubungan antara MA cepat, MA lambat, dan MA rata-rata.

Prinsip Strategi

  1. Hitung MA cepat, MA lambat dan MA rata-rata.
  2. Identifikasi potensi level overhead dan overhead kosong dengan membandingkan hubungan antara harga close out dan slow MA.
  3. Konfirmasi tingkat overhead dan overhead kosong dengan membandingkan hubungan antara harga close out dan MA cepat.
  4. Indikator ADX dihitung secara manual untuk mengukur kekuatan tren.
  5. Ketika MA cepat melintasi MA rata-rata ke atas, ADX lebih besar dari batas yang ditetapkan, dan level multihead dikonfirmasi, menghasilkan sinyal masuk multihead.
  6. Ketika MA cepat melintasi MA rata-rata ke bawah, ADX lebih besar dari set threshold, dan level overhead dikonfirmasi, menghasilkan sinyal overhead masuk.
  7. Ketika harga close-out melintasi MA lambat ke bawah, menghasilkan sinyal keluar multihead; ketika harga close-out melintasi MA lambat ke atas, menghasilkan sinyal keluar kosong head.

Keunggulan Strategis

  1. Menggunakan beberapa MA dapat menangkap tren pasar dan perubahan dinamika secara lebih komprehensif.
  2. Potensi peluang perdagangan dapat diidentifikasi dengan membandingkan hubungan antara MA cepat, MA lambat, dan MA rata-rata.
  3. Menggunakan indikator ADX sebagai filter, dapat menghindari terlalu banyak sinyal palsu di pasar yang bergoyang, meningkatkan keandalan sinyal perdagangan.
  4. Strategi logis yang jelas, mudah dipahami dan diterapkan.

Risiko Strategis

  1. Strategi ini mungkin menghasilkan lebih banyak sinyal palsu, yang menyebabkan perdagangan dan kerugian yang lebih sering, jika tren tidak jelas atau pasar bergoyang.
  2. Strategi ini bergantung pada indikator yang tertinggal seperti MA dan ADX, dan mungkin akan kehilangan beberapa peluang untuk membentuk tren awal.
  3. Pengaturan parameter strategi (seperti panjang MA dan threshold ADX) memiliki pengaruh besar terhadap kinerja strategi dan perlu dioptimalkan sesuai dengan pasar dan varietas yang berbeda.

Arah optimasi strategi

  1. Pertimbangkan untuk memperkenalkan indikator teknis lainnya, seperti RSI, MACD, dan lain-lain, untuk meningkatkan keandalan dan keragaman sinyal perdagangan.
  2. Untuk lingkungan pasar yang berbeda, Anda dapat mengatur kombinasi parameter yang berbeda untuk menyesuaikan diri dengan perubahan pasar.
  3. Memperkenalkan langkah-langkah manajemen risiko seperti stop loss dan manajemen posisi untuk mengendalikan potensi kerugian.
  4. Dengan analisis fundamental seperti data ekonomi, perubahan kebijakan, dan lain-lain, Anda bisa mendapatkan pandangan yang lebih komprehensif tentang pasar.

Meringkaskan

Strategi penolakan linear berdasarkan filter indeks arah rata-rata memanfaatkan beberapa indikator MA dan ADX untuk mengidentifikasi peluang perdagangan potensial dan menyaring sinyal perdagangan berkualitas rendah. Strategi ini logisnya jelas, mudah dipahami dan diimplementasikan, tetapi dalam aplikasi praktis perlu memperhatikan perubahan lingkungan pasar dan dioptimalkan dalam kombinasi dengan indikator teknis lainnya dan tindakan manajemen risiko.

Kode Sumber Strategi
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © gavinc745

//@version=5
strategy("MA Rejection Strategy with ADX Filter", overlay=true)

// Input parameters
fastMALength = input.int(10, title="Fast MA Length", minval=1)
slowMALength = input.int(50, title="Slow MA Length", minval=1)
averageMALength = input.int(20, title="Average MA Length", minval=1)
adxLength = input.int(14, title="ADX Length", minval=1)
adxThreshold = input.int(20, title="ADX Threshold", minval=1)

// Calculate moving averages
fastMA = ta.wma(close, fastMALength)
slowMA = ta.wma(close, slowMALength)
averageMA = ta.wma(close, averageMALength)

// Calculate ADX manually
dmPlus = high - high[1]
dmMinus = low[1] - low
trueRange = ta.tr

dmPlusSmoothed = ta.wma(dmPlus > 0 and dmPlus > dmMinus ? dmPlus : 0, adxLength)
dmMinusSmoothed = ta.wma(dmMinus > 0 and dmMinus > dmPlus ? dmMinus : 0, adxLength)
trSmoothed = ta.wma(trueRange, adxLength)

diPlus = dmPlusSmoothed / trSmoothed * 100
diMinus = dmMinusSmoothed / trSmoothed * 100
adx = ta.wma(math.abs(diPlus - diMinus) / (diPlus + diMinus) * 100, adxLength)

// Identify potential levels
potentialLongLevel = low < slowMA and close > slowMA
potentialShortLevel = high > slowMA and close < slowMA

// Confirm levels
confirmedLongLevel = potentialLongLevel and close > fastMA
confirmedShortLevel = potentialShortLevel and close < fastMA

// Entry signals
longEntry = confirmedLongLevel and ta.crossover(fastMA, averageMA) and adx > adxThreshold
shortEntry = confirmedShortLevel and ta.crossunder(fastMA, averageMA) and adx > adxThreshold

// Exit signals
longExit = ta.crossunder(close, slowMA)
shortExit = ta.crossover(close, slowMA)

// Plot signals
plotshape(longEntry, title="Long Entry", location=location.belowbar, style=shape.triangleup, size=size.small, color=color.green)
plotshape(shortEntry, title="Short Entry", location=location.abovebar, style=shape.triangledown, size=size.small, color=color.red)

// Plot moving averages and ADX
plot(fastMA, title="Fast MA", color=color.blue)
plot(slowMA, title="Slow MA", color=color.red)
plot(averageMA, title="Average MA", color=color.orange)
// plot(adx, title="ADX", color=color.purple)
// hline(adxThreshold, title="ADX Threshold", color=color.gray, linestyle=hline.style_dashed)

// Execute trades
if longEntry
    strategy.entry("Long", strategy.long)
else if longExit
    strategy.close("Long")

if shortEntry
    strategy.entry("Short", strategy.short)
else if shortExit
    strategy.close("Short")