Strategi Mengikuti Tren ADX Naik Dinamis


Tanggal Pembuatan: 2023-12-11 17:18:32 Akhirnya memodifikasi: 2023-12-11 17:18:32
menyalin: 0 Jumlah klik: 427
1
fokus pada
1212
Pengikut

Strategi Mengikuti Tren ADX Naik Dinamis

Ringkasan

Strategi ini memungkinkan pelacakan tren yang tepat waktu dengan melacak perubahan dinamis dalam indikator ADX, menangkap perubahan awal dalam tren pasar. Ketika ADX naik dengan cepat dari level rendah, ini menunjukkan bahwa tren sedang terbentuk, dan ini adalah waktu yang tepat untuk masuk.

Prinsip Strategi

Strategi ini didasarkan pada perubahan dinamika indikator ADX untuk menilai perkembangan tren. Ketika indikator ADX berada di posisi rendah, menunjukkan perubahan tren yang kecil; Ketika ADX naik dengan cepat dari posisi rendah, menunjukkan tren sedang terbentuk. Strategi ini menangkap perkembangan tren dengan memantau kenaikan cepat ADX.

Secara khusus, penilaian masuk dalam strategi mencakup beberapa kriteria:

  1. ADX atas memakai set threshold ((seperti 10)
  2. ADX naik dengan cepat
  3. Harga naik menggunakan moving average sederhana atau moving average indeks

Ketika kondisi di atas terpenuhi pada saat yang sama, berarti tren sedang terbentuk, lakukan lebih banyak; saat ini melewati rata-rata bergerak, posisi kosong. Menggunakan dua rata-rata bergerak, dapat lebih akurat menilai perkembangan tren.

Kondisi stop loss juga mirip, ketika ADX turun cepat ke bawah, melakukan shorting; ketika harga melewati moving average, melakukan shorting.

Analisis Keunggulan

Keuntungan terbesar dari strategi ini adalah menangkap perkembangan tren secara tepat waktu. Metode tradisional hanya melihat nilai ADX, dan sering menunggu ADX naik ke 20 atau 25 untuk mengkonfirmasi tren, yang telah kehilangan waktu masuk terbaik. Strategi ini dapat sangat memahami perkembangan tren dengan melacak kenaikan cepat ADX.

Selain itu, strategi ini juga memperkenalkan moving averages untuk membantu, yang dapat secara efektif menyaring sebagian misdiagnosis, meningkatkan stabilitas strategi.

Analisis risiko dan optimasi

Risiko terbesar dari strategi ini adalah keterbelakangan dari indikator ADX itu sendiri. Meskipun keterbelakangan dapat dikurangi dengan melacak kenaikan yang cepat, masih ada keterbelakangan tertentu. Hal ini dapat menyebabkan beberapa pasar yang berbalik dengan cepat tidak dapat ditangkap.

Selain itu, indikator ADX juga tidak 100 persen akurat untuk menilai tren, dan pasti akan terjadi beberapa diagnosis yang salah. Meskipun pengantar rata-rata bergerak dapat menyaring beberapa kebisingan, namun masih perlu dioptimalkan lebih lanjut.

Strategi ini masih memiliki ruang yang luas untuk pengoptimalan, yang penting adalah untuk meningkatkan akurasi penangkapan indikator ADX lebih lanjut. Metode seperti pembelajaran mesin dapat dipertimbangkan untuk diperkenalkan, model pelatihan untuk menilai distribusi probabilitas setelah perubahan ADX.

Meringkaskan

Strategi pelacakan tren ADX naik yang dinamis, untuk melacak tren secara tepat waktu dengan menangkap titik perubahan pasar di mana ADX naik dengan cepat. Keuntungan utamanya adalah bahwa tren sangat cepat dan dapat ditangkap secara efektif di awal. Namun, ada risiko kesalahan penilaian dengan probabilitas tertentu.

Kode Sumber Strategi
/*backtest
start: 2023-12-03 00:00:00
end: 2023-12-10 00:00:00
period: 1h
basePeriod: 15m
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/
// © dhilipthegreat

//@version=4
//Rising ADX strategy

strategy(title="Rising ADX strategy", overlay=false)

adxlen = input(14, title="ADX Length", minval=1)
threshold = input(10, title="threshold", minval=5)

hline(threshold, color=color.black, linestyle=hline.style_dashed)

atype = input(2,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA")
malen=input(20, title="Moving average 1 ",minval=1, maxval=50)
avg = atype == 1 ? sma(close,malen) : atype == 2 ? ema(close,malen) : atype == 3 ? wma(close,malen) : atype == 4 ? hma(close,malen) : na

atype2 = input(2,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA")
malen2=input(20, title="Moving average 2",minval=1, maxval=200)
avg2 = atype2 == 1 ? sma(close,malen2) : atype2 == 2 ? ema(close,malen2) : atype2 == 3 ? wma(close,malen2) : atype2 == 4 ? hma(close,malen2) : na

//ADX&DI
dilen = 14
dirmov(len,_high,_low,_tr) =>
	up = change(_high)
	down = -change(_low)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
    minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = rma(_tr, len)
	
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)

	[plus, minus]

adx(dilen, adxlen,_high,_low,_tr) =>
	[plus, minus] = dirmov(dilen,_high,_low,_tr)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)

[plus, minus] = dirmov(dilen,high,low,tr)
sig = adx(dilen, adxlen,high,low,tr)
prev_sig = adx(dilen, adxlen,high[1],low[1],tr)
plot(sig ? sig : na, color = rising(sig, 1) ? color.lime : falling(sig, 1) ? color.orange : color.purple, title="ADX",linewidth=2)

//////
longCondition=  sig > threshold  and rising(sig, 1) and falling(prev_sig, 1) and close > avg and close > avg2
barcolor(longCondition ? color.yellow: na)
Long_side = input(true, "Long side")
if Long_side
    strategy.entry(id="Long", long=true,  when= longCondition  and strategy.position_size<1)
    exitCondition=  (rising(prev_sig, 1) and falling(sig, 1)) or close < avg and close < avg2
    strategy.close(id="Long",comment="L exit",    qty=strategy.position_size ,   when= exitCondition)   //close all

shortCondition=  sig > threshold  and rising(sig, 1) and falling(prev_sig, 1) and close < avg and close < avg2
barcolor(shortCondition ? color.gray: na)
Short_side = input(true, "Short side")
if Short_side
    strategy.entry(id="Short", long=false,  when= shortCondition  and strategy.position_size<1)
    sell_exitCondition=  (rising(prev_sig, 1) and falling(sig, 1)) or close > avg and close > avg2
    strategy.close(id="Short",comment="S exit",    qty=strategy.position_size ,   when= sell_exitCondition)   //close all

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

barcolor(strategy.position_size<0 ? color.orange: na)
bgcolor(strategy.position_size<0 ? color.orange: na)