Sumber daya yang dimuat... Pemuatan...

Strategi Penolakan MA dengan Filter ADX

Penulis:ChaoZhang, Tanggal: 2024-05-17 10:35:58
Tag:ADXMAWMA

img

Gambaran umum

Strategi ini menggunakan beberapa moving average (MA) sebagai sinyal perdagangan utama dan menggabungkan Average Directional Index (ADX) sebagai filter. Ide utama di balik strategi ini adalah untuk mengidentifikasi potensi peluang panjang dan pendek dengan membandingkan hubungan antara MA cepat, MA lambat, dan MA rata-rata. Pada saat yang sama, indikator ADX digunakan untuk menyaring lingkungan pasar dengan kekuatan tren yang cukup, meningkatkan keandalan sinyal perdagangan.

Prinsip Strategi

  1. Hitung MA cepat, MA lambat, dan MA rata-rata.
  2. Mengidentifikasi tingkat panjang dan pendek potensial dengan membandingkan harga penutupan dengan MA yang lambat.
  3. Konfirmasi level panjang dan pendek dengan membandingkan harga penutupan dengan MA cepat.
  4. Menghitung indikator ADX secara manual untuk mengukur kekuatan tren.
  5. Menghasilkan sinyal masuk panjang ketika MA cepat melintasi di atas MA rata-rata, ADX berada di atas ambang batas yang ditetapkan, dan tingkat panjang dikonfirmasi.
  6. Menghasilkan sinyal masuk pendek ketika MA cepat melintasi di bawah MA rata-rata, ADX berada di atas ambang batas yang ditetapkan, dan tingkat pendek dikonfirmasi.
  7. Membuat sinyal keluar panjang ketika harga penutupan melintasi di bawah MA lambat; Membuat sinyal keluar pendek ketika harga penutupan melintasi di atas MA lambat.

Keuntungan Strategi

  1. Menggunakan beberapa MA memungkinkan untuk menangkap tren pasar dan perubahan momentum yang lebih komprehensif.
  2. Dengan membandingkan hubungan antara MA cepat, MA lambat, dan MA rata-rata, peluang perdagangan potensial dapat diidentifikasi.
  3. Menggunakan indikator ADX sebagai filter membantu menghindari menghasilkan sinyal palsu yang berlebihan di pasar yang bergolak, meningkatkan keandalan sinyal perdagangan.
  4. Logika strategi jelas dan mudah dipahami dan diterapkan.

Risiko Strategi

  1. Dalam situasi di mana tren tidak jelas atau pasar bergolak, strategi dapat menghasilkan banyak sinyal palsu, yang mengarah pada perdagangan dan kerugian yang sering.
  2. Strategi ini didasarkan pada indikator yang tertinggal seperti MA dan ADX, yang berpotensi kehilangan peluang pembentukan tren awal.
  3. Kinerja strategi sangat dipengaruhi oleh pengaturan parameter (misalnya, panjang MA dan ambang ADX), yang membutuhkan optimalisasi berdasarkan pasar dan instrumen yang berbeda.

Arah Optimasi Strategi

  1. Pertimbangkan untuk memasukkan indikator teknis lainnya, seperti RSI dan MACD, untuk meningkatkan keandalan dan keragaman sinyal perdagangan.
  2. Tetapkan kombinasi parameter yang berbeda untuk berbagai lingkungan pasar untuk beradaptasi dengan perubahan pasar.
  3. Memperkenalkan langkah-langkah manajemen risiko, seperti stop-loss dan ukuran posisi, untuk mengendalikan potensi kerugian.
  4. Menggabungkan analisis fundamental, seperti data ekonomi dan perubahan kebijakan, untuk mendapatkan perspektif pasar yang lebih komprehensif.

Ringkasan

Strategi Penolakan MA dengan Filter ADX menggunakan beberapa MA dan indikator ADX untuk mengidentifikasi peluang perdagangan potensial dan menyaring sinyal perdagangan berkualitas rendah. Logika strategi jelas dan mudah dipahami dan diimplementasikan. Namun, ketika menerapkan strategi dalam prakteknya, penting untuk mempertimbangkan perubahan lingkungan pasar dan menggabungkan indikator teknis lainnya dan langkah-langkah manajemen risiko untuk optimasi.


/*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")

Berkaitan

Lebih banyak