DiNapoli Mengurangi Strategi Osilator

Penulis:ChaoZhang, Tanggal: 2023-09-23
Tag:

Gambaran umum

Strategi ini menghasilkan sinyal perdagangan berdasarkan DiNapoli Detrended Oscillator. Ini mencerminkan tingkat overbought / oversold dengan perbedaan antara harga dan moving average, bertujuan untuk mengidentifikasi peluang pembalikan. Sinyal dihasilkan ketika osilator melintasi ambang batas.

Logika Strategi

Komponen utama adalah:

  1. Moving average: Menghitung garis dasar tren.

  2. Indikator perbedaan: Harga dikurangi rata-rata bergerak membentuk osilator.

  3. Garis ambang: Menyambangi tingkat ini memicu sinyal.

  4. Sinyal panjang: Osilator melintasi batas.

  5. Sinyal pendek: Osilator melintasi di bawah ambang batas.

  6. Opsi terbalik: Menghidupkan sinyal panjang/pendek.

Strategi ini bertujuan untuk menangkap pembalikan jangka pendek dengan mengidentifikasi perbedaan antara harga dan tren.

Keuntungan

Dibandingkan dengan strategi pembalikan lainnya, keuntungannya adalah:

  1. Logika sederhana dan intuitif, mudah diterapkan.

  2. Parameter minimal, backtesting yang nyaman.

  3. Fleksibilitas dalam pengaturan parameter untuk periode yang berbeda.

  4. Opsi terbalik yang dapat disesuaikan dengan pasar yang berbeda.

  5. Hapus berhenti dan keluar kendali risiko.

  6. Pengurangan relatif kecil, disesuaikan melalui parameter.

  7. Potensi untuk mengoptimalkan dengan pembelajaran mesin.

  8. Secara keseluruhan profil risiko/manfaat yang baik untuk perdagangan jangka pendek.

Risiko

Namun, risiko utama adalah:

  1. Terlalu bergantung pada optimasi parameter berisiko overfit.

  2. Meninggalkan rata-rata bergerak dan osilator.

  3. Kurangnya konfirmasi dari variabel lain.

  4. Efek waktu dapat menurun di pasar yang berubah.

  5. Sulit untuk terus-menerus menghasilkan alfa, membutuhkan penyesuaian yang sering.

  6. Perlu memantau rasio reward/risiko dan kelancaran kurva.

  7. Frekuensi perdagangan yang tinggi meningkatkan biaya transaksi.

  8. Ketahanan di seluruh pasar membutuhkan validasi.

Peningkatan

Berdasarkan analisis, peningkatan dapat mencakup:

  1. Mencoba parameter rata-rata bergerak yang berbeda.

  2. Menambahkan konfirmasi volume.

  3. Mengimplementasikan berhenti dan keluar untuk mengendalikan risiko.

  4. Mengevaluasi ketahanan di berbagai pasar dan kerangka waktu.

  5. Pengujian balik jendela gulung untuk verifikasi terus menerus.

  6. Menyesuaikan ukuran posisi ke frekuensi yang lebih rendah.

  7. Mengintegrasikan pembelajaran mesin untuk parameter yang lebih baik.

  8. Mengoptimalkan strategi manajemen risiko secara keseluruhan.

  9. Iterasi terus menerus untuk beradaptasi dengan perubahan pasar.

Kesimpulan

Singkatnya, ini adalah ide strategi pembalikan rata-rata yang relatif sederhana. penyesuaian parameter yang tepat dapat menghasilkan hasil yang layak. tetapi mencegah overfit dan mencapai kesuksesan yang gigih membutuhkan backtesting, pengoptimalan dan peningkatan yang berkelanjutan dari beberapa dimensi.


/*backtest
start: 2023-08-23 00:00:00
end: 2023-09-22 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version = 2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 05/12/2016
// DiNapoli Detrended Oscillator Strategy
// 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="DiNapoli Detrended Oscillator Strategy Backtest")
Length = input(14, minval=1)
Trigger = input(0)
reverse = input(true, title="Trade reverse")
hline(Trigger, color=gray, linestyle=line)
xSMA = sma(close, Length)
nRes = close - xSMA
pos = iff(nRes > Trigger, 1,
	   iff(nRes <= Trigger, -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)	   	    
plot(nRes, color=blue, title="DiNapoli")
barcolor(possig == -1 ? red: possig == 1 ? green : blue )

Lebih banyak