Strategi Trading Trend Crossover ADX

Penulis:ChaoZhang, Tanggal: 2023-12-08 15:49:12
Tag:

img

Gambaran umum

Strategi ini menggabungkan Indeks Gerakan Arah (ADX), Plus Indikator Arah (DI +) dan rata-rata bergerak cepat dan lambat untuk menentukan arah pasar dan periode pemegang.

Prinsip-prinsip

Logika inti dari strategi ini adalah untuk menghasilkan sinyal beli ketika garis +DI melintasi di atas garis ADX dari bawah ke atas, dan menghasilkan sinyal jual ketika garis +DI melintasi di bawah garis ADX dari atas ke bawah. Oleh karena itu, strategi ini bergantung pada persilangan antara DI dan ADX untuk menentukan tren pasar dan titik pembalikan. Pada saat yang sama, hubungan antara rata-rata bergerak cepat dan lambat digunakan untuk menentukan tren pasar secara keseluruhan.

Secara khusus, sinyal beli akan dipicu ketika kondisi berikut terpenuhi:

  1. EMA cepat berada di atas EMA lambat
  2. Garis +DI melintasi garis ADX ke atas
  3. Nilai ADX di bawah 30 ambang batas

Sinyal jual akan dipicu ketika kondisi berikut terpenuhi:

  1. Nilai ADX melebihi batas 30
  2. Garis +DI melintasi garis ADX ke bawah

Strategi ini juga menggabungkan logika stop loss untuk keluar dari semua posisi ketika harga turun di bawah level stop loss.

Keuntungan

Strategi ini menggabungkan indikator DI, ADX dan moving average untuk secara efektif menentukan perubahan tren pasar.

  1. Menggunakan DI dan ADX crossovers untuk menentukan dengan akurat titik masuk dan keluar
  2. Sistem filter EMA cepat dan lambat untuk menentukan tren pasar secara keseluruhan, menghindari perdagangan buruk
  3. Gunakan nilai ADX untuk menentukan kekuatan tren, hanya berdagang ketika tren lemah, menghindari pecah palsu
  4. Memasukkan mekanisme stop loss untuk mengendalikan risiko penurunan
  5. Kondisi masuk yang ketat hindari membeli bagian atas dan menjual bagian bawah
  6. Aturan keluar yang jelas memungkinkan untuk menghentikan kerugian dan mengambil keuntungan tepat waktu

Risiko

Ada beberapa risiko yang harus diperhatikan dengan strategi ini:

  1. Indikator ADX memiliki efek keterlambatan, bisa kehilangan waktu terbaik untuk pembalikan harga
  2. Lebih banyak sinyal palsu dapat terjadi ketika volatilitas pasar tinggi
  3. Pengaturan EMA cepat dan lambat yang tidak tepat dapat menyebabkan perdagangan hilang atau menyaring sinyal yang valid
  4. Tingkat stop loss yang ditetapkan terlalu luas gagal untuk mengontrol risiko secara efektif

Risiko ini dapat ditangani dengan mengoptimalkan ADX dan parameter rata-rata bergerak, menyesuaikan tingkat stop loss, menambahkan filter untuk konfirmasi dll.

Peluang Peningkatan

Ada ruang untuk peningkatan lebih lanjut:

  1. Uji ADX dari periode panjang yang berbeda untuk menemukan kombinasi optimal
  2. Tambahkan indikator lain seperti RSI, Bollinger Bands untuk konfirmasi sinyal
  3. Menggunakan algoritma pembelajaran mesin untuk mengoptimalkan parameter dan aturan secara otomatis
  4. Mengatur secara dinamis tingkat stop loss untuk mengurangi risiko tahap akhir
  5. Membangun model penilaian multifaktor untuk membuat kriteria masuk dan keluar lebih kuat

Kesimpulan

Secara umum strategi tren crossover ADX ini cukup stabil, mampu menangkap pembalikan secara efektif sejak awal, tetapi pengendalian risiko sangat penting. Optimalisasi parameter lebih lanjut, mengikuti aturan masuk dan stop loss secara ketat dapat mengarah pada pengembalian yang disesuaikan dengan risiko yang baik. Strategi ini cocok untuk akun jangka panjang yang memegang posisi jangka menengah hingga pendek.


/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mohanee

//@version=4
//ADX strategy
SmoothedTrueRange=0.00
SmoothedDirectionalMovementPlus=0.00
SmoothedDirectionalMovementMinus=0.00


strategy(title="ADX strategy", overlay=false,pyramiding=3, default_qty_type=strategy.fixed, default_qty_value=3,    initial_capital=10000, currency=currency.USD)

len = input(11, title="ADX Length", minval=1)
threshold = input(30, title="threshold", minval=5)

fastEma=input(13, title="Fast EMA",minval=1, maxval=50)
slowEma=input(55, title="Slow EMA",minval=10, maxval=200)
stopLoss =input(8, title="Stop Loss",minval=1)   //


TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0


SmoothedTrueRange:= nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange

SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus:= nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus

DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = sma(DX, len)

plot(DIPlus, color=color.green, title="DI+")
//plot(DIMinus, color=color.red, title="DI-")
plot(ADX, color=color.black, title="ADX")
hline(threshold, color=color.black, linestyle=hline.style_dashed)

fastEmaVal=ema(close,fastEma)
slowEmaVal=ema(close,slowEma)




//long condition
longCondition=  ADX < threshold  and crossover(DIPlus,ADX)  and fastEmaVal > slowEmaVal


barcolor(longCondition ? color.yellow: na)

strategy.entry(id="ADXLE", long=true,  when= longCondition  and strategy.position_size<1) 

barcolor(strategy.position_size>1 ? color.blue: na)
bgcolor(strategy.position_size>1 ? color.blue: na)



//Add
strategy.entry(id="ADXLE", comment="Add", long=true,  when= strategy.position_size>1 and close<strategy.position_avg_price and crossover(DIPlus,ADX) ) 


//calculate stop Loss
stopLossVal =  strategy.position_avg_price -  (strategy.position_avg_price*stopLoss*0.01)

strategy.close(id="ADXLE",comment="SL Exit",    when=close<stopLossVal)   //close all on stop loss


//exit condition
exitCondition=  ADX > threshold  and crossunder(DIPlus,ADX) // and fastEmaVal > slowEmaVal
strategy.close(id="ADXLE",comment="TPExitAll",    qty=strategy.position_size ,   when= exitCondition)   //close all     

Lebih banyak