Momentum Arbitrage Strategi Backtest Analisis

Penulis:ChaoZhang, Tanggal: 2023-10-25 11:10:59
Tag:

img

I. Nama Strategi

Berdasarkan fitur utama strategi ini, saya menyebutnya Momentum Arbitrage Strategy.

II. Ringkasan Strategi

Strategi ini menghasilkan sinyal perdagangan dengan menghitung Chande Momentum Oscillator dan menetapkan ambang batas atas dan bawah, membentuk peluang arbitrage untuk keuntungan.

III. Logika Strategi

Kode pertama menetapkan parameter Panjang, TopBand dan LowBand, di mana Panjang mewakili jumlah hari untuk perhitungan momentum, dan TopBand dan LowBand mewakili ambang atas dan bawah.

Kemudian menghitung momentum mutlak xMom selama hari-hari Panjang terakhir, dan rata-rata bergerak sederhana xMom selama hari-hari Panjang, xSMA_mom.

Setelah itu, ia menghitung momentum kumulatif selama hari Panjang, xMomLength.

Selanjutnya, ia menghitung momentum oscillator nRes, yang sama dengan xMomLength dibagi dengan xSMA_mom kemudian dikalikan dengan Length, diperkuat dengan 100.

Berdasarkan perbandingan antara nRes dan ambang batas, ia menentukan arah panjang atau pendek dan menyimpannya di pos.

Akhirnya, ia menyesuaikan pos berdasarkan apakah perdagangan terbalik diaktifkan, menghasilkan sinyal perdagangan possig, dan menciptakan entri panjang / pendek.

IV. Kekuatan Strategi

  1. Mengidentifikasi titik perubahan tren potensial menggunakan indikator momentum, yang menguntungkan penangkapan tren.

  2. Membentuk sinyal panjang/pendek yang jelas dikombinasikan dengan penyaringan ambang, menghindari perdagangan yang salah.

  3. Menerapkan logika perdagangan terbalik untuk mendapatkan peluang pembalikan.

  4. Ruang parameter yang dapat disesuaikan yang besar, dapat dioptimalkan untuk produk dan kerangka waktu yang berbeda.

  5. Parameter yang ditampilkan adalah intuitif, mudah untuk memahami logika perdagangan.

V. Risiko Strategi

  1. Hanya mempertimbangkan momentum, mungkin melewatkan peluang yang dibentuk oleh indikator teknis lainnya.

  2. Momentum breakout tidak selalu berarti pembalikan tren, ada risiko penilaian yang salah.

  3. Meskipun reverse trading memiliki potensi keuntungan, hal ini juga dapat memperkuat kerugian.

  4. Optimasi parameter yang tidak tepat dapat menyebabkan perdagangan berlebihan atau kehilangan titik masuk terbaik.

  5. Perlu menyaring distorsi momentum jangka pendek yang disebabkan oleh peristiwa mendadak.

Risiko dapat dikendalikan dengan menggabungkan indikator lain seperti tren dan volatilitas untuk mengkonfirmasi keandalan sinyal, menyesuaikan parameter untuk mengurangi frekuensi perdagangan, meringankan stop loss dengan benar, dll.

VI. Arah Optimasi Strategi

  1. Tambahkan filter indikator teknis lainnya untuk meningkatkan akurasi sinyal.

Konfirmasi harga penutupan berada di atas sistem rata-rata bergerak, atau volatilitas berada dalam kisaran normal, sebelum sinyal momentum dipicu.

  1. Mengoptimalkan parameter sesuai dengan karakteristik produk.

Untuk produk yang lebih volatil, meredakan kisaran ambang normal untuk mengurangi frekuensi perdagangan.

  1. Optimasi multi-timeframe berdasarkan periode waktu yang berbeda.

Menggunakan jangka waktu yang lebih kecil Panjang untuk perdagangan intraday ultra-pendek. Sesuaikan parameter berdasarkan grafik mingguan atau bulanan untuk tren jangka menengah dan panjang.

  1. Tetapkan kondisi divergensi bawah.

Untuk sinyal beli, meminta harga berada di atas lereng sebelumnya untuk menghindari sinyal pembalikan palsu.

VII. Kesimpulan

Strategi ini terutama mengidentifikasi pembalikan tren jangka pendek melalui indikator momentum, dengan penyaringan parameter untuk menghasilkan sinyal perdagangan, menyeimbangkan trend mengikuti dan pemangkasan menangkap. Risiko dapat dikendalikan. Penelitian lebih lanjut dan penerapan dengan optimasi multi-frame waktu dan menggabungkan indikator teknis lainnya dapat meningkatkan kinerja strategi.


/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 07/02/2017
//    This indicator plots Chande Momentum Oscillator. This indicator was 
//    developed by Tushar Chande. A scientist, an inventor, and a respected 
//    trading system developer, Mr. Chande developed the CMO to capture what 
//    he calls "pure momentum". For more definitive information on the CMO and 
//    other indicators we recommend the book The New Technical Trader by Tushar 
//    Chande and Stanley Kroll.
//    The CMO is closely related to, yet unique from, other momentum oriented 
//    indicators such as Relative Strength Index, Stochastic, Rate-of-Change, 
//    etc. It is most closely related to Welles Wilder`s RSI, yet it differs 
//    in several ways:
//        - It uses data for both up days and down days in the numerator, thereby 
//          directly measuring momentum;
//        - The calculations are applied on unsmoothed data. Therefore, short-term 
//          extreme movements in price are not hidden. Once calculated, smoothing 
//          can be applied to the CMO, if desired;
//        - The scale is bounded between +100 and -100, thereby allowing you to 
//          clearly see changes in net momentum using the 0 level. The bounded scale 
//          also allows you to conveniently compare values across different securities.
////////////////////////////////////////////////////////////
strategy(title="CMO (Chande Momentum Oscillator)", shorttitle="CMO")
Length = input(9, minval=1)
TopBand = input(70, minval=1)
LowBand = input(-70, maxval=-1)
reverse = input(false, title="Trade reverse")
// hline(0, color=gray, linestyle=dashed)
// hline(TopBand, color=red, linestyle=line)
// hline(LowBand, color=green, linestyle=line)
xMom = abs(close - close[1])
xSMA_mom = sma(xMom, Length)
xMomLength = close - close[Length]
nRes = 100 * (xMomLength / (xSMA_mom * Length))
pos = iff(nRes > TopBand, 1,
	   iff(nRes <= LowBand, -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(nRes, color=blue, title="CMO")

Lebih banyak