Strategi Dagangan Kuantum Faktor Dua

Penulis:ChaoZhang, Tarikh: 2023-12-07 15:11:37
Tag:

img

Ringkasan

Strategi ini menggabungkan faktor pembalikan 123 dan faktor osilator nombor perdana untuk melaksanakan perdagangan kuantitatif yang didorong oleh faktor dua.

Prinsip-prinsip

Bahagian pertama adalah strategi pembalikan 123. Ia menggunakan ciri pembalikan harga selama 2 hari untuk menentukan titik masuk dan keluar. Apabila harga meningkat secara berterusan selama 2 hari dan stokastik perlahan di bawah 50, ia dianggap terlalu banyak dijual, menghasilkan isyarat beli. Apabila harga terus jatuh selama 2 hari dan stokastik pantas di atas 50, ia dianggap melonjak terlalu banyak, menghasilkan isyarat jual.

Bahagian kedua adalah strategi pengayun nombor perdana. Penunjuk ini mengira nombor perdana terdekat di atas dan di bawah harga semasa dalam julat tertentu, dan mengeluarkan perbezaan dari harga semasa. Nilai positif bermaksud harga semasa berhampiran siling nombor perdana, sementara nilai negatif bermaksud ia berhampiran lantai nombor perdana. Arah trend dinilai oleh nilai perbezaan, yang digabungkan dengan 123 isyarat pembalikan untuk menghasilkan isyarat perdagangan akhir.

Peraturan penggabungan isyarat adalah: isyarat dagangan sebenar dihasilkan hanya apabila kedua-dua sub-strategi memberi isyarat ke arah yang sama, jika tidak, tiada kedudukan baru dibuka apabila isyarat bertentangan.

Kelebihan

Dengan menggabungkan faktor dua, strategi ini mengambil kira kedua-dua kesan pembalikan jangka pendek dan ciri-ciri trend jangka panjang untuk membuat penilaian pasaran pelbagai sudut, meningkatkan ketahanan risiko strategi.

Berbanding dengan strategi momentum tunggal, strategi ini boleh menghentikan kerugian tepat pada masanya atau membalikkan kedudukan semasa kejatuhan harga tiba-tiba, dengan berkesan mengawal risiko intraday dengan menggunakan faktor pembalikan.

Berbanding dengan strategi pembalikan tunggal, pengenalan pengayun nombor perdana untuk arah trend mengelakkan perdagangan berlebihan dari perdagangan pembalikan yang kerap.

Risiko

Risiko terbesar adalah konflik isyarat antara kedua-dua faktor. Jika 123 pembalikan menunjukkan tanda-tanda overbought / oversold dan menghasilkan isyarat pembalikan, sementara osilator nombor perdana menunjukkan ia masih dalam trend, mengambil perdagangan pembalikan secara langsung boleh membawa kepada kerugian.

Untuk mengawal risiko ini, logik tambahan ditambahkan - perdagangan sebenar dihasilkan hanya apabila kedua-dua isyarat sejajar ke arah.

Peningkatan

  1. Mengoptimumkan parameter Stochastic untuk mencari set parameter pembalikan yang lebih baik untuk produk tertentu

  2. Mengoptimumkan peratusan toleransi pengayun nombor perdana untuk mengurangkan perdagangan bising

  3. Tambah strategi stop loss untuk mengehadkan pengembangan kerugian satu hala

  4. Tambah modul saiz kedudukan untuk menyesuaikan kedudukan untuk persekitaran pasaran yang berbeza

  5. Tambah model pembelajaran mesin untuk menilai kredibiliti isyarat antara dua faktor, mengurangkan konflik

Kesimpulan

Strategi ini berjaya menggabungkan faktor pembalikan jangka pendek dan faktor trend jangka panjang untuk mencapai perdagangan kuantitatif berisiko rendah. Dengan berkesan menggunakan faktor dua untuk menapis bunyi bising dan menetapkan logik tambahan untuk mengawal risiko, ia adalah strategi praktikal keuntungan yang stabil. Parameter dan fungsi akan terus dioptimumkan untuk memenuhi ciri pasaran sebenar.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 28/04/2021
// 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
// Determining market trends has become a science even though a high number or people 
// still believe it’s a gambling game. Mathematicians, technicians, brokers and investors 
// have worked together in developing quite several indicators to help them better understand 
// and forecast market movements.
//
// Developed by Modulus Financial Engineering Inc., the prime number oscillator indicates the 
// nearest prime number, be it at the top or the bottom of the series, and outlines the 
// difference between that prime number and the respective series.
//
// 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

PrimeNumberOscillator(price, percent) =>
    res = 0.0
    res1 = 0.0
    res2 = 0.0
    for j = price to price + (price * percent / 100)
        res1 := j
	    for i = 2 to sqrt(price)
        	res1 := iff(j % i == 0 , 0, j)
            if res1 == 0 
                break
		if res1 > 0 
		    break
    for j = price to price - (price * percent / 100)
        res2 := j
	    for i = 2 to sqrt(price)
        	res2 := iff(j % i == 0 , 0, j)
            if res2 == 0 
                break
		if res2 > 0 
		    break
    res := iff(res1 - price < price - res2,  res1 - price, res2 - price)
    res := iff(res == 0, res[1], res)
    res
    
PNO(percent) =>
    pos = 0.0
    xPNO = PrimeNumberOscillator(close, percent)
    pos:= iff(xPNO > 0, 1,
           iff(xPNO < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Prime Number Oscillator", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Prime Number Oscillator ----")
percent = input(5, minval=0.01, step = 0.01, title="Tolerance Percentage")
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posPNO = PNO(percent)
pos = iff(posReversal123 == 1 and posPNO == 1 , 1,
	   iff(posReversal123 == -1 and posPNO == -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 lanjut