Strategi perdagangan rata-rata bergerak ganda berdasarkan harga sintetis yang terdetensi

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

Gambaran umum

Ini adalah strategi perdagangan rata-rata bergerak ganda berdasarkan Detrended Synthetic Price (DSP). DSP adalah fungsi yang berada dalam fase dengan siklus dominan data harga riil, diperoleh dengan mengurangi EMA setengah siklus dari EMA siklus kuartal. Ketika DSP melintasi di atas band atas atau di bawah band bawah, perdagangan sepihak diambil.

Logika Strategi

  1. Hitung harga rata-rata HL 1/2 siklus xHL2.

  2. Hitung EMA 1/4 siklus (xEMA1) dan EMA 1/2 siklus (xEMA2) dari xHL2 berdasarkan Panjang.

  3. Dapatkan DSP dengan mengurangi xEMA2 dari xEMA1.

  4. Atur parameter band atas dan bawah, pergi panjang ketika DSP melintasi band atas, dan pergi pendek ketika melintasi band bawah.

  5. Parameter terbalik dapat beralih antara arah panjang dan pendek.

Analisis Keuntungan

Keuntungan dari strategi ini:

  1. DSP menangkap siklus harga yang dominan, menghindari penyimpangan dari siklus kecil.

  2. Desain EMA ganda secara efektif melacak perubahan siklus yang dominan.

  3. Band atas/bawah sederhana menghindari perdagangan yang berlebihan.

  4. Mudah beralih antara panjang / pendek menggunakan parameter terbalik, dapat disesuaikan dengan lingkungan pasar yang berbeda.

  5. Tidak perlu pengoptimalan parameter yang rumit, sederhana dan praktis.

Analisis Risiko

Risiko utama:

  1. Pengaturan siklus DSP yang tidak benar dapat melewatkan siklus dominan.

  2. Lebar pita perlu dioptimalkan, jika tidak akan terjadi over-trading.

  3. Desain siklus tetap memiliki kemampuan beradaptasi yang buruk terhadap perubahan pasar yang keras.

  4. Perdagangan pada DSP saja membuat strategi rentan terhadap whipsaws.

  5. Kurangnya stop loss dapat menyebabkan kerugian yang signifikan.

Arahan Optimasi

Peningkatan:

  1. Mengoptimalkan parameter untuk menemukan kombinasi siklus terbaik.

  2. Tambahkan band dinamis berdasarkan volatilitas.

  3. Masukkan filter tren dan volatilitas untuk mengurangi sinyal palsu.

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

  5. Uji di berbagai instrumen untuk universalitas.

  6. Memperkenalkan pembelajaran mesin untuk optimasi siklus DSP adaptif.

Ringkasan

Secara keseluruhan ini adalah strategi perdagangan rata-rata bergerak ganda yang sangat sederhana dan praktis. Hal ini dibangun di atas dasar analisis siklus yang solid, dengan DSP secara efektif melacak siklus dominan. Dengan penyempurnaan dalam optimasi parameter, stop loss, kondisi filter dan banyak lagi, ini dapat menjadi strategi perdagangan kuantitatif yang andal.


/*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 banyak