Strategi Dagangan Crossover ADX


Tarikh penciptaan: 2023-12-08 15:49:12 Akhirnya diubah suai: 2023-12-08 15:49:12
Salin: 0 Bilangan klik: 961
1
fokus pada
1621
Pengikut

Strategi Dagangan Crossover ADX

Gambaran keseluruhan

Strategi ini menggabungkan penggunaan purata indeks bergerak ((ADX) dan indeks pergerakan ke arah atas ((DI +) untuk menentukan arah dan trend pasaran, sambil menggunakan purata bergerak cepat dan perlahan untuk menentukan arah perdagangan dan masa memegang, termasuk dalam strategi perdagangan jenis trend. Strategi ini dapat menangkap titik balik garis pendek dengan berkesan dan berfungsi dengan baik di pasaran dengan kadar turun naik yang rendah dan trend yang jelas.

Prinsip

Logik teras strategi ini adalah bahawa ia menghasilkan isyarat beli apabila +DI garis menembusi ADX dari arah bawah, dan menghasilkan isyarat jual apabila +DI garis jatuh dari arah atas ke arah ADX. Oleh itu, strategi ini bergantung kepada persilangan antara indikator DI dan ADX untuk menentukan trend pasaran dan titik balik. Pada masa yang sama, hubungan garis laju dan rata digunakan untuk menentukan trend pasaran keseluruhan, dan hanya mempertimbangkan untuk menghasilkan isyarat perdagangan apabila EMA cepat lebih tinggi daripada EMA perlahan.

Secara khusus, isyarat beli akan dihantar apabila syarat-syarat berikut dipenuhi: 1 , EMA pantas lebih tinggi daripada EMA perlahan 2 , + DI line menembusi ADX line dari arah bawah 3. ADX di bawah 30

Sinyal jual beli berlaku apabila syarat berikut dipenuhi: 1 ADX melebihi 30 2 , + DI garis jatuh dari atas ke bawah ADX garis

Strategi ini juga menambah logik stop loss, yang akan keluar dari semua kedudukan apabila harga berada di bawah harga stop loss.

Kelebihan

Strategi ini menggabungkan DI, ADX dan penunjuk garis rata-rata untuk menentukan titik perubahan trend pasaran. Ia mempunyai kelebihan berikut:

  1. Menggunakan penunjuk DI dan ADX untuk menentukan isyarat pembalikan trend, lokasi tepat tempat masuk dan keluar
  2. Sistem penapisan EMA yang cepat memberikan penilaian trend besar untuk mengelakkan perdagangan yang salah
  3. Menggunakan nilai ADX untuk menilai trend kuat atau lemah, hanya berdagang apabila trend lemah, mengelakkan risiko pecah palsu
  4. Menyertai mekanisme penangguhan untuk mengawal risiko penurunan
  5. Syarat kemasukan ketat, mengelakkan risiko membeli dan menjual agiri
  6. Keadaan keluar jelas, penangguhan kerosakan dan penangguhan

Risiko

Strategi ini juga mempunyai risiko yang perlu diperhatikan:

  1. Indeks ADX terbelakang, mungkin terlepas masa terbaik untuk harga berbalik
  2. Indeks ADX dan DI akan menghasilkan lebih banyak isyarat yang salah apabila pasaran bergolak
  3. Tetapan rata-rata yang tidak betul boleh menyebabkan peluang perdagangan yang hilang atau isyarat penapisan yang salah
  4. Harga Stop Loss ditetapkan terlalu longgar untuk mengawal risiko secara berkesan

Risiko ini boleh diperbaiki dengan mengoptimumkan parameter ADX dan garis rata-rata, menyesuaikan tahap stop loss, dan menggabungkan isyarat pengesahan indikator lain.

Arah pengoptimuman

Strategi ini masih boleh dioptimumkan lagi:

  1. ADX yang boleh diuji dengan tempoh panjang yang berbeza untuk mencari kombinasi parameter terbaik
  2. Tanda-tanda lain seperti RSI, Brinks dan lain-lain boleh ditambah untuk mengesahkan isyarat dagangan
  3. Menggunakan algoritma pembelajaran mesin untuk mencari kombinasi parameter dan peraturan perdagangan secara automatik
  4. Anda boleh mengawal risiko tailing dengan menyesuaikan tahap stop loss secara dinamik.
  5. Model penarafan pelbagai faktor boleh dibina untuk membuat peraturan masuk dan keluar lebih kukuh

ringkaskan

Strategi trend silang ADX secara keseluruhan lebih stabil, mampu menangkap ruang reversal dengan berkesan pada awal turun naik, tetapi perlu berhati-hati untuk mengawal risiko. Dengan cara mengoptimumkan parameter yang lebih lanjut, peraturan masuk dan berhenti yang ketat, dan lain-lain, keuntungan yang disesuaikan dengan risiko yang lebih baik dapat diperoleh. Strategi ini sesuai untuk akaun perdagangan garis pendek yang memegang garis panjang.

Kod sumber strategi
/*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