Strategi Pelacakan Reversi Rata-rata Faktor Ganda

Penulis:ChaoZhang, Tanggal: 2023-12-19 11:09:20
Tag:

img

Gambaran umum

Strategi ini termasuk dalam strategi pelacakan reversi rata-rata faktor ganda dalam bidang perdagangan kuantitatif. Strategi ini mengintegrasikan strategi reversi 123 dan strategi saluran Keltner dengan dua faktor, yang bertujuan untuk menemukan sinyal reversi dan mewujudkan ide perdagangan membeli rendah dan menjual tinggi.

Prinsip

Strategi ini terdiri dari dua sub-strategi. Sub-strategi pertama adalah strategi pembalikan 123. Ini menilai apakah pasar berada di titik pembalikan dengan menghitung perubahan harga penutupan selama dua hari perdagangan sebelumnya dan menggabungkan indikator Stochastic. Secara khusus, ketika harga penutupan naik selama dua hari berturut-turut dan indikator Stochastic berada di bawah 50, sinyal beli dikeluarkan; Ketika harga penutupan turun selama dua hari berturut-turut dan indikator Stochastic berada di atas 50, sinyal jual dikeluarkan.

Strategi sub kedua adalah strategi saluran Keltner. Strategi ini menghitung rata-rata pergerakan harga dan rentang volatilitas selama n hari perdagangan terakhir. Ketika harga mendekati rel atas atau bawah, sinyal perdagangan terbalik dikeluarkan. Ketika harga berada di bawah rel bawah, pergi pendek; ketika berada di atas rel atas, pergi panjang.

Akhirnya, dengan menilai arah sinyal dari dua sub-strategi, strategi menghitung sinyal posisi akhir. Ketika sinyal dari dua sub-strategi konsisten, pesanan perdagangan nyata dikeluarkan, jika tidak tidak ada transaksi yang dilakukan untuk mencapai tujuan verifikasi dua faktor.

Analisis Keuntungan

Keuntungan terbesar dari strategi pelacakan reversi rata-rata dua faktor ini adalah dapat menangkap peluang tepat waktu ketika pasar berbalik dan mewujudkan ide perdagangan membeli rendah dan menjual tinggi. Pada saat yang sama, mekanisme konfirmasi dua faktor dapat mengurangi sinyal palsu sampai batas tertentu dan meningkatkan kualitas sinyal.

Secara khusus, pengaturan parameter indikator Stochastic dalam strategi pembalikan 123 relatif konservatif, yang dapat secara efektif menyaring pembalikan palsu di pasar osilasi.

Analisis Risiko

Risiko utama dari strategi ini adalah bahwa waktu sinyal pembalikan sangat penting. Jika pembalikan palsu berkelanjutan terjadi atau waktu sinyal pembalikan tidak dipilih dengan benar, itu akan menyebabkan kegagalan untuk mempertahankan tren yang lengkap, sehingga mempengaruhi pengembalian akhir.

Selain itu, strategi faktor ganda memiliki kesulitan yang lebih besar dalam pemilihan parameter dan optimasi daripada strategi faktor tunggal. pengujian komprehensif dan evaluasi parameter dari dua sub-strategi diperlukan, jika tidak kegagalan juga sangat mungkin.

Akhirnya, perdagangan terbalik sendiri memiliki rasio risiko-manfaat yang tidak proporsional. Kondisi pasar yang tidak normal dapat dengan mudah menyebabkan likuidasi. Hal ini perlu dihindari melalui stop loss yang ketat.

Arahan Optimasi

Menurut analisis risiko di atas, strategi dapat dioptimalkan dalam aspek berikut:

  1. Uji pengaturan yang berbeda dari parameter indikator pembalikan untuk menemukan kombinasi dengan toleransi kesalahan yang lebih tinggi dan kurang sinyal palsu
  2. Coba nilai parameter dari panjang siklus yang berbeda untuk menemukan nilai yang menangkap pembalikan lebih tepat
  3. Tambahkan modul stop loss untuk mengontrol kerugian maksimum per perdagangan secara ketat
  4. Uji efek dari periode penahan yang berbeda untuk menemukan titik keluar yang lebih sesuai dengan logika strategi
  5. Meningkatkan jumlah posisi terbuka atau menambahkan modul kontrol posisi untuk membuat rasio risiko-manfaat lebih wajar

Ringkasan

Sebagai strategi pelacakan reversi rata-rata faktor ganda yang khas, dengan mengintegrasikan reversi 123 dan sub-strategi saluran Keltner, strategi ini bertujuan untuk lebih tepat menangkap waktu membeli rendah dan menjual tinggi pada titik pembalikan pasar. Dengan optimasi parameter yang tepat dan pengendalian risiko, strategi seperti itu dapat memperoleh alfa yang relatif besar.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 09/12/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
// The Keltner Channel, a classic indicator 
// of technical analysis developed by Chester Keltner in 1960. 
// The indicator is a bit like Bollinger Bands and Envelopes.
//
// 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

KeltnerChn(nPeriod) =>
    pos = 0.0
    xPrice = sma(hlc3, nPeriod)
    xMove = sma(high - low, nPeriod)
    reverse = input(false, title="Trade reverse")
    xUpper = xPrice + xMove
    xLower = xPrice - xMove
    pos := iff(close < xLower, -1,
             iff(close > xUpper, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Keltner Channel", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
nPeriod = input(title="Period", defval=10, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posKeltnerChn = KeltnerChn(nPeriod)
pos = iff(posReversal123 == 1 and posKeltnerChn == 1 , 1,
	   iff(posReversal123 == -1 and posKeltnerChn == -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