Sumber dimuat naik... memuat...

Strategi Penolakan MA dengan Penapis ADX

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

img

Ringkasan

Strategi ini menggunakan pelbagai purata bergerak (MA) sebagai isyarat perdagangan utama dan menggabungkan Indeks Arah Purata (ADX) sebagai penapis. Idea utama di sebalik strategi ini adalah untuk mengenal pasti peluang panjang dan pendek yang berpotensi dengan membandingkan hubungan antara MA cepat, MA perlahan, dan MA purata. Pada masa yang sama, penunjuk ADX digunakan untuk menapis persekitaran pasaran dengan kekuatan trend yang mencukupi, meningkatkan kebolehpercayaan isyarat perdagangan.

Prinsip Strategi

  1. Mengira MA pantas, MA perlahan, dan MA purata.
  2. Mengenali tahap panjang dan pendek yang berpotensi dengan membandingkan harga penutupan dengan MA perlahan.
  3. Memastikan tahap panjang dan pendek dengan membandingkan harga penutupan dengan MA pantas.
  4. Mengira secara manual penunjuk ADX untuk mengukur kekuatan trend.
  5. Menghasilkan isyarat masuk panjang apabila MA pantas melintasi di atas MA purata, ADX di atas ambang yang ditetapkan, dan tahap panjang disahkan.
  6. Menghasilkan isyarat masuk pendek apabila MA pantas melintasi di bawah MA purata, ADX melebihi ambang yang ditetapkan, dan tahap pendek disahkan.
  7. Menghasilkan isyarat keluar panjang apabila harga penutupan melintasi di bawah MA perlahan; Menghasilkan isyarat keluar pendek apabila harga penutupan melintasi di atas MA perlahan.

Kelebihan Strategi

  1. Menggunakan pelbagai MA membolehkan penangkapan yang lebih komprehensif mengenai trend pasaran dan perubahan momentum.
  2. Dengan membandingkan hubungan antara MA cepat, MA perlahan, dan MA purata, peluang perdagangan yang berpotensi dapat dikenal pasti.
  3. Menggunakan penunjuk ADX sebagai penapis membantu mengelakkan penjanaan isyarat palsu yang berlebihan di pasaran yang bergolak, meningkatkan kebolehpercayaan isyarat perdagangan.
  4. Logik strategi adalah jelas dan mudah difahami dan dilaksanakan.

Risiko Strategi

  1. Dalam situasi di mana trend tidak jelas atau pasaran bergelora, strategi boleh menghasilkan banyak isyarat palsu, yang membawa kepada perdagangan dan kerugian yang kerap.
  2. Strategi ini bergantung kepada penunjuk yang tertinggal seperti MA dan ADX, berpotensi kehilangan peluang pembentukan trend awal.
  3. Prestasi strategi sangat dipengaruhi oleh tetapan parameter (contohnya, panjang MA dan ambang ADX), yang memerlukan pengoptimuman berdasarkan pasaran dan instrumen yang berbeza.

Arahan Pengoptimuman Strategi

  1. Pertimbangkan untuk memasukkan penunjuk teknikal lain, seperti RSI dan MACD, untuk meningkatkan kebolehpercayaan dan kepelbagaian isyarat perdagangan.
  2. Tetapkan kombinasi parameter yang berbeza untuk pelbagai persekitaran pasaran untuk menyesuaikan diri dengan perubahan pasaran.
  3. Memperkenalkan langkah pengurusan risiko, seperti stop-loss dan saiz kedudukan, untuk mengawal potensi kerugian.
  4. Menggabungkan analisis asas, seperti data ekonomi dan perubahan dasar, untuk mendapatkan perspektif pasaran yang lebih komprehensif.

Ringkasan

Strategi Penolakan MA dengan Penapis ADX menggunakan pelbagai MA dan penunjuk ADX untuk mengenal pasti peluang perdagangan yang berpotensi dan menapis isyarat perdagangan berkualiti rendah. Logik strategi jelas dan mudah difahami dan dilaksanakan. Walau bagaimanapun, ketika menerapkan strategi dalam amalan, adalah penting untuk mempertimbangkan perubahan persekitaran pasaran dan menggabungkan penunjuk teknikal lain dan langkah pengurusan risiko untuk pengoptimuman.


/*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 lanjut