Sumber dimuat naik... memuat...

Momentum Purata Indeks Pergerakan Arah Pergerakan Purata Pergerakan Strategi Crossover

Penulis:ChaoZhang, Tarikh: 2024-02-29 11:50:49
Tag:

img

Ringkasan

Strategi Moving Average Crossover menggabungkan dua penunjuk teknikal yang kuat, Moving Average (MA) dan Average Directional Index (ADX), untuk menyediakan peniaga dengan ketepatan teknikal yang ditingkatkan.

Logika Strategi

Strategi ini mengira Purata Bergerak Bertimbang (WMA) untuk mengesan momentum harga dan meratakan turun naik harga untuk menjana isyarat trend. Pada masa yang sama, ia mengira Indeks Arah Purata (ADX) dan indeks pergerakan arah positif / negatif (+/- DI) untuk menentukan kewujudan dan kekuatan trend. Apabila ADX melebihi parameter yang ditentukan, trend dianggap wujud. Apabila indeks pergerakan arah positif lebih tinggi daripada indeks pergerakan arah negatif, ia adalah isyarat kenaikan.

Strategi ini menggunakan persilangan penunjuk MA dan ADX sebagai asas untuk keputusan perdagangan. Apabila ADX melebihi ambang dan DIdiff (DI + - DI-) lebih besar daripada 0, ia pergi panjang. Apabila ADX melebihi ambang dan DIdiff kurang dari 0, ia keluar dari kedudukan.

Analisis Kelebihan

Menggabungkan kelebihan purata bergerak dan indeks ADX, strategi ini dapat dengan berkesan mengenal pasti kewujudan dan arah trend dan mengurangkan isyarat palsu.

Di samping itu, strategi ini adalah strategi kuantitatif sepenuhnya berdasarkan pengiraan parameter dengan hasil backtesting yang baik dan prestasi langsung yang stabil, menjadikannya sesuai untuk perdagangan algoritma.

Analisis Risiko

Strategi ini terdedah kepada risiko perdagangan semasa turun naik pasaran yang signifikan. Apabila harga bergerak dengan ganas dan penunjuk tidak bertindak balas, ia boleh membawa kerugian ke akaun. Di samping itu, tetapan parameter yang tidak betul juga boleh menjejaskan prestasi strategi.

Kerugian boleh dikawal dengan stop loss. Pada masa yang sama parameter boleh dioptimumkan dan digabungkan dengan penapis lain untuk mengurangkan isyarat palsu.

Arahan pengoptimuman

Aspek berikut strategi ini boleh dioptimumkan:

  1. Gabungkan dengan penunjuk lain untuk penapisan, seperti Bollinger Bands, RSI dll untuk meningkatkan kualiti isyarat

  2. Mengoptimumkan parameter panjang purata bergerak dan ADX untuk mencari kombinasi parameter optimum

  3. Tambah mekanisme stop loss untuk mengawal kerugian tunggal

  4. Uji tempoh tahan yang berbeza untuk mencari kitaran tahan yang optimum

Kesimpulan

Strategi Moving Average Crossover boleh mengenal pasti arah trend pasaran dengan berkesan dengan mengira momentum harga dan kekuatan trend. Ia adalah strategi penjejakan trend yang boleh dipercayai. Strategi ini mempunyai tahap algoritma yang tinggi, pengujian belakang yang stabil, dan prestasi langsung yang baik. Pengoptimuman lanjut boleh membawa kepada kecekapan strategi yang lebih baik.


/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © Julien_Eche

//@version=5
strategy("MA ADX Strategy", overlay=true, default_qty_type=strategy.percent_of_equity)

start_date = input(timestamp("1975-01-01T00:00:00"), title="Start Date")
end_date = input(timestamp("2099-01-01T00:00:00"), title="End Date")

// Indicator Inputs
group1 = "MA Parameters"
lengthMA = input.int(50, title="MA Length", minval=1, group=group1)
sourceMA = input(close, title="MA Source", group=group1)

group2 = "ADX Parameters"
diLength = input.int(14, title="DI Length", minval=1, group=group2)
adxSmoothing = input.int(14, title="ADX Smoothing", minval=1, maxval=50, group=group2)
adxMAActive = input.int(15, title="ADX MA Active", minval=1, group=group2)

// Directional Movement calculations
upwardMovement = ta.change(high)
downwardMovement = -ta.change(low)
trueRangeSmoothed = ta.rma(ta.atr(diLength), diLength)
positiveDM = fixnan(100 * ta.rma(upwardMovement > downwardMovement and upwardMovement > 0 ? upwardMovement : 0, diLength) / trueRangeSmoothed)
negativeDM = fixnan(100 * ta.rma(downwardMovement > upwardMovement and downwardMovement > 0 ? downwardMovement : 0, diLength) / trueRangeSmoothed)
dmSum = positiveDM + negativeDM 

// Average Directional Index (ADX) calculation
averageDX = 100 * ta.rma(math.abs(positiveDM - negativeDM) / math.max(dmSum, 1), adxSmoothing)

// Line color determination
lineColor = averageDX > adxMAActive and positiveDM > negativeDM ? color.teal : averageDX > adxMAActive and positiveDM < negativeDM ? color.red : color.gray

// Moving Average (MA) calculation
maResult = ta.wma(sourceMA, lengthMA)

// Plotting the Moving Average with color
plot(maResult, color=lineColor, title="MA", linewidth=3)

// Strategy logic
if (averageDX > adxMAActive and positiveDM > negativeDM)
    strategy.entry("Buy", strategy.long)

if (averageDX > adxMAActive and positiveDM < negativeDM)
    strategy.close("Buy")


Lebih lanjut