
Moving Average Crossover Strategi menggabungkan dua indikator teknis yang kuat yaitu Moving Average (MA) dan Average Directional Index (ADX) untuk memberikan analisis teknis yang lebih akurat kepada pedagang. Strategi ini dirancang khusus untuk analisis pasar yang dinamis dan memberikan sinyal perdagangan yang jelas.
Strategi ini melacak pergerakan harga dengan menghitung rata-rata bergerak berbobot ((WMA), meratakan fluktuasi harga, dan menghasilkan sinyal tren. Pada saat yang sama, menghitung indeks arah rata-rata ((ADX) dan indeks dinamika negatif positif ((+/- DI), menilai keberadaan dan kekuatan tren. Ketika ADX lebih tinggi dari parameter yang ditentukan, dianggap ada tren; ketika indeks dinamika positif lebih tinggi dari indeks dinamika negatif, sebagai sinyal bullish.
Strategi menggunakan persilangan MA dan ADX sebagai dasar untuk keputusan perdagangan. Bila ADX lebih tinggi dari titik terendah, dan DIdiff ((DI+ - DI-) lebih besar dari 0, lakukan perdagangan; Bila ADX lebih tinggi dari titik terendah, dan DIdiff lebih kecil dari 0, lakukan perdagangan.
Strategi ini menggabungkan keuntungan dari moving averages dan ADX untuk mengidentifikasi keberadaan dan arah tren secara efektif, mengurangi sinyal yang salah. Kombinasi ini memberikan sinyal perdagangan yang lebih andal dibandingkan dengan indikator tunggal.
Selain itu, strategi ini adalah strategi kuantitatif yang sepenuhnya didasarkan pada perhitungan parameter, pengembalian yang baik, kinerja solid yang stabil, dan cocok untuk perdagangan algoritmik.
Strategi ini mudah menimbulkan risiko perdagangan ketika pasar bergejolak besar. Ketika harga berfluktuasi secara drastis dan indikator tidak bereaksi, ini akan menyebabkan kerugian pada akun. Selain itu, pengaturan parameter indikator yang tidak tepat juga dapat mempengaruhi efektivitas strategi.
Anda dapat mengontrol kerugian tunggal dengan menghentikan kerugian. Anda dapat mengoptimalkan parameter dan memfilter indikator lain untuk mengurangi sinyal yang salah.
Strategi ini dapat dioptimalkan dari beberapa arah:
Gabungan dengan filter indikator lain, seperti Brinks, RSI, dan lain-lain, untuk meningkatkan kualitas sinyal
Optimalkan parameter panjang dari moving average dan ADX untuk mencari kombinasi parameter optimal
Meningkatkan mekanisme penghentian kerugian, mengendalikan kerugian tunggal
Uji waktu yang berbeda untuk mencari periode yang optimal
Moving average crossover strategi, dengan menghitung pergerakan harga dan kekuatan tren, dapat secara efektif mengidentifikasi arah tren pasar, merupakan strategi pelacakan tren yang andal. Strategi ini memiliki tingkat algoritme yang tinggi, pengukuran yang stabil, kinerja yang baik di lapangan. Dengan terus mengoptimalkan, diharapkan mendapatkan efek 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")