Strategi dagangan purata bergerak berganda berdasarkan harga sintetik yang terhalang

Penulis:ChaoZhang, Tarikh: 2023-09-19 17:13:28
Tag:

Ringkasan

Ini adalah strategi dagangan purata bergerak berganda berdasarkan Harga Sintetik Ditekan (DSP). DSP adalah fungsi yang berada dalam fasa dengan kitaran dominan data harga sebenar, yang diperoleh dengan mengurangkan EMA separuh kitaran dari EMA kitaran suku. Apabila DSP melintasi di atas jalur atas atau di bawah jalur bawah, dagangan sepihak diambil.

Logika Strategi

  1. Mengira purata HL 1/2 kitaran xHL2 harga.

  2. Mengira EMA 1/4 kitaran (xEMA1) dan EMA 1/2 kitaran (xEMA2) dari xHL2 berdasarkan Panjang.

  3. Dapatkan DSP dengan mengurangkan xEMA2 dari xEMA1.

  4. Tetapkan parameter jalur atas dan bawah, pergi panjang apabila DSP melintasi di atas jalur atas, dan pergi pendek apabila melintasi di bawah jalur bawah.

  5. Parameter terbalik boleh bertukar antara arah panjang dan pendek.

Analisis Kelebihan

Kelebihan strategi ini:

  1. DSP menangkap kitaran harga dominan, mengelakkan salah arah daripada kitaran kecil.

  2. Reka bentuk EMA berganda secara berkesan mengesan perubahan kitaran dominan.

  3. Band atas/bawah yang mudah mengelakkan perdagangan berlebihan.

  4. Mudah beralih antara panjang / pendek menggunakan parameter terbalik, dapat disesuaikan dengan persekitaran pasaran yang berbeza.

  5. Tiada pengoptimuman parameter yang rumit diperlukan, mudah dan praktikal.

Analisis Risiko

Risiko utama:

  1. Tetapan kitaran DSP yang tidak betul mungkin terlepas kitaran dominan.

  2. Lebar jalur memerlukan pengoptimuman, jika tidak, perdagangan berlebihan mungkin berlaku.

  3. Reka bentuk kitaran tetap mempunyai daya adaptasi yang lemah terhadap perubahan pasaran yang ganas.

  4. Perdagangan pada DSP sahaja membuat strategi terdedah kepada whipsaws.

  5. Kekurangan stop loss boleh membawa kepada kerugian yang ketara.

Arahan pengoptimuman

Penambahbaikan:

  1. Mengoptimumkan parameter untuk mencari kombinasi kitaran terbaik.

  2. Tambah band dinamik berdasarkan turun naik.

  3. Masukkan penapis trend dan turun naik untuk mengurangkan isyarat palsu.

  4. Tambahkan mekanisme stop loss atau trailing stop untuk mengawal risiko.

  5. Ujian merentasi pelbagai instrumen untuk keseluruhan.

  6. Memperkenalkan pembelajaran mesin untuk pengoptimuman kitaran DSP adaptif.

Ringkasan

Secara keseluruhan, ini adalah strategi perdagangan purata bergerak berganda yang sangat mudah dan praktikal. Ia dibina di atas asas analisis kitaran yang kukuh, dengan DSP secara berkesan mengesan kitaran dominan. Dengan penyempurnaan dalam pengoptimuman parameter, hentian kerugian, keadaan penapis dan banyak lagi, ia boleh menjadi strategi perdagangan kuantitatif yang boleh dipercayai.


/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-13 02:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 20/03/2017
// Detrended Synthetic Price is a function that is in phase with the 
// dominant cycle of real price data. This DSP is computed by subtracting 
// a half-cycle exponential moving average (EMA) from the quarter cycle 
// exponential moving average.
// See "MESA and Trading Market Cycles" by John Ehlers pages 64 - 70. 
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="D_DSP (Detrended Synthetic Price)", shorttitle="D_DSP")
Length = input(14, minval=1)
SellBand = input(25)
BuyBand = input(-25)
reverse = input(false, title="Trade reverse")
hline(0, color=blue, linestyle=line)
hline(SellBand, color=red, linestyle=line)
hline(BuyBand, color=green, linestyle=line)
xHL2 = hl2
xEMA1 = ema(xHL2, Length)
xEMA2 = ema(xHL2, 2 * Length)
xEMA1_EMA2 = xEMA1 - xEMA2
pos = iff(xEMA1_EMA2 > SellBand, 1,
	     iff(xEMA1_EMA2 < BuyBand, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(xEMA1_EMA2, color=blue, title="D_DSP")

Lebih lanjut