Strategi Pemutusan Momentum dengan Penapis ADX

Penulis:ChaoZhang, Tarikh: 2024-01-04 17:12:30
Tag:

img

Ringkasan

Ini adalah strategi perdagangan jangka pendek yang menggunakan penunjuk ADX untuk menapis isyarat pecah. Ia pergi pendek apabila harga pecah di atas Bollinger Band Atas dan ADX jatuh, dan pergi panjang apabila harga pecah di bawah Bollinger Band Bawah dan ADX meningkat. Strategi ini juga menetapkan stop loss dan mengambil keuntungan secara automatik untuk perdagangan automatik sepenuhnya.

Logika Strategi

Inti strategi ini adalah menggunakan Bollinger Bands untuk isyarat pecah. Band atas dan bawah Bollinger Bands mewakili dua penyimpangan standard harga, jadi pecah biasanya menunjukkan bahawa harga memasuki trend yang kuat. Di samping itu, penunjuk ADX diperkenalkan di sini sebagai penapis untuk mengelakkan pecah palsu. Isyarat pendek hanya dipertimbangkan apabila ADX jatuh manakala isyarat panjang hanya dipertimbangkan apabila ADX naik. Ini membantu menapis beberapa whipsaws semasa tempoh yang terikat julat.

Secara khusus, strategi ini mengira Bollinger Bands menggunakan 33 tempoh harga penutupan. Band tengah adalah purata bergerak mudah 33 tempoh, dan band atas / bawah diletakkan pada dua penyimpangan standard di atas / di bawah band tengah. Strategi ini memberi isyarat pendek apabila harga ditutup di bawah band atas dan ADX 8 tempoh di bawah ADX 15 tempoh. Ia memberi isyarat panjang apabila harga ditutup di atas band bawah dan ADX 8 tempoh di atas ADX 15 tempoh. Keluar ditetapkan pada 800 mata keuntungan dan 400 mata stop loss.

Analisis Kelebihan

Sebagai strategi breakout yang menggabungkan penapis trend dan momentum, ia mempunyai beberapa kelebihan:

  1. Menggunakan Bollinger Bands untuk mengesan breakout sejajar dengan tabiat kebanyakan peniaga.
  2. Penapis ADX tambahan membantu mengelakkan kehilangan dari whipsaws.
  3. Logiknya mudah dan mudah difahami dan dioptimumkan.
  4. Stop loss dan mengambil keuntungan automatik memudahkan perdagangan algoritma.

Analisis Risiko

Terdapat juga beberapa risiko dengan strategi ini:

  1. Parameter BB yang tidak betul boleh menghasilkan isyarat yang terlalu kerap dan meningkatkan kos.
  2. Parameter ADX yang tidak betul boleh menapis isyarat yang sah.
  3. Jarak stop loss mungkin terlalu luas yang membawa kepada kerugian besar.

Untuk mengurangkan risiko ini, kita boleh menyesuaikan parameter BB untuk mempersempit jalur, menyesuaikan tempoh ADX untuk mengelakkan penapisan berlebihan, dan mengurangkan kerugian berhenti untuk mengawal kerugian perdagangan tunggal.

Arahan pengoptimuman

Terdapat ruang untuk pengoptimuman lanjut:

  1. Uji pada data pasaran yang berbeza untuk mencari set parameter yang optimum.
  2. Masukkan penunjuk lain seperti jumlah dan purata bergerak untuk penapisan isyarat.
  3. Menggunakan kaedah pembelajaran mesin untuk mengoptimumkan parameter secara automatik.
  4. Pertimbangkan stop loss dinamik dan ambil keuntungan.

Kesimpulan

Kesimpulannya, ini adalah strategi breakout yang mudah dan praktikal dengan penapis. Mengenali trend dengan BB dan menapis isyarat dengan ADX membantu mengelakkan bunyi bising semasa tempoh terhad julat dan menangkap peluang trend hingga tahap tertentu. Masih ada ruang yang besar untuk ujian dan peningkatan lanjut.


/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Hizbullah XAUUSD Sniper", overlay=true)

Price = close

Length = input(33)
Mult = input(2)
Basis = sma(Price, Length)
StdDev = Mult * stdev(Price, Length)
Upper = Basis + StdDev
Lower = Basis - StdDev

ADX_Length = input(4)
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
SmoothedTrueRange = sma(TrueRange, ADX_Length)
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
SmoothedDirectionalMovementPlus = sma(DirectionalMovementPlus, ADX_Length)
SmoothedDirectionalMovementMinus = sma(DirectionalMovementMinus, ADX_Length)
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus - DIMinus) / (DIPlus + DIMinus)*100
SmoothedADX1 = ema(DX, input(8))
SmoothedADX2 = ema(DX, input(15))

Condition1 = crossunder(Price, Upper) and SmoothedADX1 < SmoothedADX2

Take_Profit = input(800)
Stop_Loss = input(400)

strategy.entry("ShortEntry", true, when = Condition1)
strategy.exit("ShortExit", "ShortEntry", profit = Take_Profit, loss = Stop_Loss)


Lebih lanjut