Strategi Mengikuti Aliran ADX Menaik Dinamik


Tarikh penciptaan: 2023-12-11 17:18:32 Akhirnya diubah suai: 2023-12-11 17:18:32
Salin: 0 Bilangan klik: 430
1
fokus pada
1212
Pengikut

Strategi Mengikuti Aliran ADX Menaik Dinamik

Gambaran keseluruhan

Strategi ini membolehkan trend dikesan dengan tepat pada masanya dengan menjejaki perubahan dinamik dalam indikator ADX, menangkap perubahan awal dalam trend pasaran. Apabila ADX naik dengan cepat dari paras rendah, ini menunjukkan bahawa trend sedang terbentuk, dan ini adalah masa yang baik untuk masuk.

Prinsip Strategi

Strategi ini berdasarkan kepada perubahan dinamik dalam indikator ADX untuk menilai perkembangan trend. Apabila indikator ADX berada di bawah, ia mewakili perubahan trend yang kecil; Apabila ADX naik dengan cepat dari rendah, ia menunjukkan bahawa trend sedang terbentuk. Strategi ini menangkap perkembangan trend dengan memantau kenaikan cepat ADX.

Khususnya, keputusan kemasukan strategi ini merangkumi beberapa syarat:

  1. ADX di atas penetapan nilai terhad ((seperti 10)
  2. ADX naik dengan pantas
  3. Harga memakai purata bergerak sederhana atau purata bergerak indeks

Apabila syarat di atas dipenuhi pada masa yang sama, mewakili trend sedang terbentuk, lakukan lebih banyak; ketika melintasi purata bergerak, kedudukan rata. Menggunakan dua purata bergerak, anda dapat menilai perkembangan trend dengan lebih tepat.

Keadaan stop loss juga serupa, apabila ADX turun dengan cepat ke bawah, ia akan melakukan shorting; apabila harga menembusi moving average, ia akan melakukan flat positioning.

Analisis kelebihan

Kelebihan terbesar strategi ini adalah menangkap perkembangan trend pada masa yang tepat. Kaedah tradisional hanya melihat nilai ADX, sering menunggu ADX naik ke 20 atau 25 untuk mengesahkan trend, yang telah kehilangan masa masuk yang terbaik. Strategi ini dapat memahami perkembangan trend dengan mengikuti kenaikan pesat ADX.

Selain itu, strategi ini juga memperkenalkan purata bergerak untuk membantu, yang dapat menyaring secara berkesan beberapa misdiagnosis dan meningkatkan kestabilan strategi.

Analisis risiko dan pengoptimuman

Risiko terbesar dalam strategi ini adalah keterbelakangan ADX itu sendiri. Walaupun keterbelakangan dapat dikurangkan dengan mengesan kenaikan pesat, terdapat beberapa keterbelakangan. Ini akan menyebabkan beberapa pasaran yang berbalik dengan cepat tidak dapat ditangkap.

Selain itu, penunjuk ADX tidak 100 peratus tepat untuk menilai trend, dan tidak dapat dielakkan bahawa terdapat beberapa diagnosis yang salah. Walaupun pengenalan purata bergerak dapat menapis sebahagian bunyi bising, namun masih memerlukan pengoptimuman lebih lanjut.

Strategi ini masih mempunyai ruang pengoptimuman yang besar, kunci adalah untuk meningkatkan lagi ketepatan tangkapan indikator ADX. Kaedah-kaedah seperti pembelajaran mesin boleh dipertimbangkan untuk diperkenalkan, model latihan untuk menilai peredaran kebarangkalian selepas perubahan ADX. Selain itu, anda juga boleh mencuba kombinasi parameter yang berbeza, kaedah lain seperti indikator tambahan untuk pengoptimuman ujian.

ringkaskan

Strategi pengesanan trend ADX naik yang dinamik ini, dengan menangkap titik perubahan pasaran di mana ADX naik dengan cepat, untuk mencapai pengesanan trend yang tepat pada masanya. Kelebihan utamanya adalah bahawa ia sangat cepat dalam masa, dan dapat menangkap trend dengan berkesan pada awal masa.

Kod 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)