Strategi Kombo Pembalikan Momentum Multi-faktor

Penulis:ChaoZhang, Tanggal: 2023-11-21 11:20:31
Tag:

img

Gambaran umum

Strategi ini adalah strategi kombinasi multi-faktor yang menggabungkan faktor pembalikan dan faktor momentum untuk menemukan peluang pembalikan di pasar. Strategi pertama menggunakan faktor pembalikan jangka panjang untuk mengidentifikasi peluang pembalikan setelah penurunan yang terikat kisaran, dan kemudian menggunakan indikator momentum untuk skrining sekunder untuk menyaring sinyal pembalikan palsu di bawah tren utama, sehingga mengunci peluang reversal arbitrage jangka pendek.

Logika Strategi

Strategi ini terdiri dari dua bagian:

  1. 123 Faktor pembalikan

    Bagian ini menggunakan gagasan pembalikan intraday untuk menentukan hubungan antara harga penutupan hari sebelumnya dan harga penutupan 2 hari yang lalu untuk mengidentifikasi peluang pembalikan dengan garis K yang lambat.

    • Sinyal beli: Setelah dua hari berturut-turut penurunan harga penutupan, jika harga penutupan naik pada hari saat ini, dan garis K lambat 9 hari di bawah 50, sinyal beli dihasilkan;

    • Sinyal jual: Setelah dua hari berturut-turut kenaikan harga penutupan, jika harga penutupan turun pada hari saat ini, dan garis K cepat 9 hari lebih tinggi dari 50, sinyal jual dihasilkan.

  2. Ehlers Dynamic Momentum Oscillator (ETSI)

    Bagian ini menggunakan metode tiga EMA smoothing price momentum untuk membangun indikator momentum.

    xPrice1 = close - close[1]
    xPrice2 = abs(close - close[1]) 
    xSMA_R = EMA(EMA(EMA(xPrice1,r), s), u)
    xSMA_aR = EMA(EMA(EMA(xPrice2, r), s), u) 
    xTSI = xSMA_R / xSMA_aR * 100
    xEMA_TSI = EMA(xTSI, N)
    

    Di mana xSMA_R adalah nilai EMA rata momentum harga, xSMA_aR adalah nilai EMA rata volatilitas harga, xTSI adalah indikator momentum yang dibangun dari rasio keduanya, dan xEMA_TSI adalah penyelarasan EMA sekunder dari xTSI. Indikator menentukan arah sinyal perdagangan berdasarkan hubungan antara xTSI dan xEMA_TSI.

Akhirnya, strategi ANDs sinyal dari kedua bagian, dan hanya mengeluarkan pesanan perdagangan yang sebenarnya ketika sinyal dari kedua faktor setuju.

Keuntungan dari Strategi

Keuntungan terbesar dari strategi ini terletak pada desain multi-faktornya, yang dapat menyaring sinyal palsu dan menemukan peluang perdagangan berkualitas tinggi.

  1. Faktor pembalikan 123 dapat mengidentifikasi titik rebound jangka pendek setelah penurunan yang terbatas pada kisaran.

  2. Indikator momentum Ehlers dapat secara efektif menentukan arah tren utama untuk menghindari sinyal pembalikan yang terjadi di bawah tren utama, sehingga menyaring sinyal palsu.

  3. Operasi AND pada dua bagian sinyal dapat meningkatkan kualitas sinyal dan meningkatkan stabilitas strategi.

Risiko dari Strategi

Meskipun strategi mengadopsi desain multi-faktor untuk mengendalikan risiko, masih ada risiko utama berikut:

  1. Sinyal pembalikan dapat terjadi dalam tren osilasi dan gagal menghasilkan keuntungan.

  2. Ada subjektivitas dalam pengaturan parameter antara kedua faktor, yang mungkin terlalu cocok dengan produk tertentu.

  3. Risiko peningkatan kerugian setelah pembalikan harga kembali membalik.

Risiko ini dapat dikurangi dengan mengoptimalkan parameter untuk beradaptasi dengan lebih banyak varietas, mengontrol posisi pasca pembalikan, pemantauan perubahan hubungan indikator secara real-time, dan cara lainnya.

Arahan Optimasi

Aspek utama untuk mengoptimalkan strategi ini meliputi:

  1. Menyesuaikan parameter dari dua faktor untuk menemukan sampel data yang lebih cocok.

  2. Meningkatkan strategi stop loss untuk mengendalikan kerugian tunggal.

  3. Menggunakan kombinasi parameter yang berbeda untuk varietas tren dan osilasi.

  4. Meningkatkan mekanisme pembobotan faktor untuk memberikan faktor kinerja yang lebih baik bobot yang lebih besar.

  5. Meningkatkan algoritma pembelajaran mesin untuk mencapai optimasi otomatis dan pembaruan parameter.

Kesimpulan

Strategi ini berhasil menggabungkan faktor pembalikan dan indikator momentum untuk mencapai desain yang dioptimalkan multi-faktor. Ini dapat secara efektif mengidentifikasi peluang pembalikan jangka pendek dan menggunakan indikator momentum untuk melakukan verifikasi sekunder sinyal, sehingga meningkatkan tingkat kemenangan strategi. Meskipun masih ada ruang untuk perbaikan dalam strategi, gagasan utamanya memberikan referensi yang baik untuk desain strategi kuantitatif.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 30/07/2020
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// r - Length of first EMA smoothing of 1 day momentum        4
// s - Length of second EMA smoothing of 1 day smoothing      8    
// u- Length of third EMA smoothing of 1 day momentum         6  
// Length of EMA signal line                                  3
// Source of Ergotic TSI                                      Close
//
// This is one of the techniques described by William Blau in his book "Momentum,
// Direction and Divergence" (1995). If you like to learn more, we advise you to 
// read this book. His book focuses on three key aspects of trading: momentum, 
// direction and divergence. Blau, who was an electrical engineer before becoming 
// a trader, thoroughly examines the relationship between price and momentum in 
// step-by-step examples. From this grounding, he then looks at the deficiencies 
// in other oscillators and introduces some innovative techniques, including a 
// fresh twist on Stochastics. On directional issues, he analyzes the intricacies 
// of ADX and offers a unique approach to help define trending and non-trending periods.  
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos


ETSI(r,s,u,SmthLen) =>
    pos = 0
    xPrice = close
    xPrice1 = xPrice - xPrice[1]
    xPrice2 = abs(xPrice - xPrice[1])
    xSMA_R = ema(ema(ema(xPrice1,r), s),u)
    xSMA_aR = ema(ema(ema(xPrice2, r), s),u)
    Val1 = 100 * xSMA_R
    Val2 = xSMA_aR
    xTSI = iff (Val2 != 0, Val1 / Val2, 0)
    xEMA_TSI = ema(xTSI, SmthLen)
    pos:= iff(xTSI > xEMA_TSI, 1,
    	   iff(xTSI < xEMA_TSI, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Ergodic TSI", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
r = input(4, minval=1)
s = input(8, minval=1)
u = input(6, minval=1)
SmthLen = input(3, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posETSI = ETSI(r,s,u,SmthLen)
pos = iff(posReversal123 == 1 and posETSI == 1 , 1,
	   iff(posReversal123 == -1 and posETSI == -1, -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)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Lebih banyak