Strategi perdagangan kuantitatif berdasarkan dekomposisi modus empiris

Penulis:ChaoZhang, Tanggal: 2023-12-22 14:41:34
Tag:

img

Gambaran umum

Strategi ini didasarkan pada metode Empirical Mode Decomposition (EMD) untuk memecah serangkaian harga dan mengekstrak fitur dari berbagai pita frekuensi, dikombinasikan dengan rata-rata untuk menghasilkan sinyal perdagangan.

Logika Strategi

  1. Gunakan metode EMD untuk bandpass filter harga dan ekstrak fluktuasi harga
  2. Hitung rata-rata bergerak dari urutan puncak dan terendah
  3. Menghasilkan sinyal perdagangan ketika garis rata-rata melebihi persentase tertentu dari garis puncak dan lereng
  4. Long atau short berdasarkan sinyal perdagangan

Analisis Keuntungan

  1. Metode EMD dapat secara efektif membongkar seri harga dan mengekstrak fitur yang berguna
  2. Garis puncak dan terendah mengontrol strategi untuk berdagang hanya ketika fluktuasi harga lebih besar dari amplitudo tertentu
  3. Dikombinasikan dengan garis rata-rata, dapat secara efektif menyaring keluar false breakouts

Analisis Risiko

  1. Pemilihan yang tidak tepat dari parameter metode EMD dapat menyebabkan overfit
  2. Dibutuhkan siklus panjang untuk membentuk sinyal transaksi dan tidak dapat beradaptasi dengan perdagangan frekuensi tinggi
  3. Tidak mampu mengatasi kondisi pasar dengan fluktuasi harga yang dramatis

Arahan Optimasi

  1. Mengoptimalkan parameter model EMD untuk meningkatkan kemampuan beradaptasi dengan pasar
  2. Menggabungkan indikator lain sebagai sinyal stop loss dan take profit
  3. Coba seri harga yang berbeda sebagai input strategi

Ringkasan

Strategi ini menggunakan metode dekomposisi modus empiris untuk mengekstrak fitur dari seri harga dan menghasilkan sinyal perdagangan berdasarkan fitur yang diekstrak, mewujudkan strategi perdagangan jangka menengah dan panjang yang stabil. Keuntungan dari strategi ini adalah dapat secara efektif mengidentifikasi fitur periodik dalam harga dan mengeluarkan pesanan perdagangan selama fluktuasi besar.


/*backtest
start: 2022-12-15 00:00:00
end: 2023-12-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 12/04/2017
// The related article is copyrighted material from Stocks & Commodities Mar 2010
// You can use in the xPrice any series: Open, High, Low, Close, HL2, HLC3, OHLC4 and ect...
//
// 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="Empirical Mode Decomposition")
Length = input(20, minval=1)
Delta = input(0.5)
Fraction = input(0.1)
reverse = input(false, title="Trade reverse")
xPrice = hl2
beta = cos(3.1415 * (360 / Length) / 180)
gamma = 1 / cos(3.1415 * (720 * Delta / Length) / 180)
alpha = gamma - sqrt(gamma * gamma - 1)
xBandpassFilter = 0.5 * (1 - alpha) * (xPrice - xPrice[2]) + beta * (1 + alpha) * nz(xBandpassFilter[1]) - alpha * nz(xBandpassFilter[2])
xMean = sma(xBandpassFilter, 2 * Length)
xPeak =  iff (xBandpassFilter[1] > xBandpassFilter and xBandpassFilter[1] > xBandpassFilter[2], xBandpassFilter[1], nz(xPeak[1])) 
xValley =  iff (xBandpassFilter[1] < xBandpassFilter and xBandpassFilter[1] < xBandpassFilter[2], xBandpassFilter[1], nz(xValley[1])) 
xAvrPeak = sma(xPeak, 50)
xAvrValley = sma(xValley, 50)
nAvrPeak = Fraction * xAvrPeak
nAvrValley = Fraction * xAvrValley
pos = iff(xMean > nAvrPeak and xMean > nAvrValley, 1,
	     iff(xMean < nAvrPeak and xMean < nAvrValley, -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(xMean, color=red, title="Mean")
plot(nAvrPeak, color=blue, title="Peak")
plot(nAvrValley, color=blue, title="Valley")

Lebih banyak