Strategi perdagangan kuantitatif dwi-faktor


Tarikh penciptaan: 2023-12-07 15:11:37 Akhirnya diubah suai: 2023-12-07 15:11:37
Salin: 0 Bilangan klik: 609
1
fokus pada
1619
Pengikut

Strategi perdagangan kuantitatif dwi-faktor

Gambaran keseluruhan

Strategi ini menggabungkan 123 reversal dan kedua-dua faktor penunjuk goyah kuantitatif yang didorong oleh dua faktor. Strategi ini menangkap peluang reversal jangka pendek, tetapi juga dapat mengenal pasti trend yang lebih lama untuk mencapai pulangan berlebihan berisiko rendah.

Prinsip Strategi

Bahagian pertama adalah strategi 123 berbalik. Strategi ini menggunakan ciri-ciri harga penutupan yang berbalik dalam 2 hari untuk menilai titik jual beli. Apabila harga penutupan naik 2 hari berturut-turut dan garis K perlahan di bawah 50, dianggap sebagai overcorrection, menghasilkan titik beli; Apabila harga penutupan turun 2 hari berturut-turut dan garis K cepat di atas 50, dianggap sebagai rebound overhead, menghasilkan titik jual.

Bahagian kedua adalah strategi penunjuk penonjolan kuantitatif. Penunjuk ini mengira kuantitatif yang paling dekat dengan harga semasa dalam julat harga yang ditetapkan, dan mengeluarkan perbezaan dengan harga semasa. Nilai positif menunjukkan harga semasa mendekati kuantitatif atas, nilai negatif menunjukkan harga semasa mendekati kuantitatif bawah.

Prinsip gabungan isyarat perdagangan strategi dua anak adalah: menghasilkan isyarat perdagangan sebenar jika isyarat sama arah, tidak membuka kedudukan jika isyarat ke arah yang berlawanan.

Analisis kelebihan

Strategi ini menggabungkan dua faktor, mempertimbangkan kesan pembalikan jangka pendek dan ciri-ciri trend jangka panjang, menilai pasaran dari pelbagai sudut, meningkatkan daya tahan strategi terhadap risiko.

Berbanding dengan strategi momentum tunggal, strategi ini dapat menggunakan faktor pembalikan untuk menghentikan atau membalikkan kedudukan tepat pada masanya untuk mengawal risiko intraday dengan berkesan apabila peristiwa mendadak menyebabkan harga melompat dalam jangka pendek.

Berbanding dengan strategi pembalikan tunggal, strategi ini memperkenalkan penunjuk goyangan bilangan prima untuk menentukan arah trend, yang dapat mengelakkan perdagangan pembalikan yang kerap menyebabkan overtrading.

Analisis risiko

Risiko terbesar dalam strategi ini adalah apabila terdapat pertentangan isyarat antara dua faktor. Apabila 123 berbalik menunjukkan tanda-tanda overbought dan oversold, menghasilkan isyarat berbalik, manakala indikator goyah kuantitatif menunjukkan masih dalam trend, jika perdagangan berbalik secara langsung boleh menyebabkan kerugian.

Untuk mengawal risiko ini, strategi ini menambah logik penilaian tambahan, yang menghasilkan isyarat perdagangan sebenar hanya apabila kedua-dua isyarat faktor bersempena. Tetapi ini juga boleh kehilangan sebahagian peluang perdagangan.

Arah pengoptimuman

  1. Mengoptimumkan parameter penunjuk Stochastic untuk mencari kombinasi parameter pembalikan yang lebih sesuai untuk parameter tertentu

  2. Optimumkan parameter peratusan perbezaan kapasiti bagi penunjuk getaran kuantitatif, mengurangkan urus niaga bising

  3. Meningkatkan strategi penangguhan kerugian untuk mengelakkan kerugian satu arah

  4. Tambah modul pengurusan kedudukan untuk menyesuaikan kedudukan dalam keadaan pasaran yang berbeza

  5. Menggabungkan model pembelajaran mesin untuk menilai kebolehpercayaan isyarat dua faktor, mengurangkan kebarangkalian pertembungan isyarat

ringkaskan

Strategi ini berjaya menggabungkan faktor pembalikan jangka pendek dengan faktor trend jangka panjang, untuk mencapai perdagangan kuantitatif yang berisiko rendah. Menggunakan perdagangan bunyi penapis faktor ganda dengan berkesan, dan menetapkan risiko kawalan logik penilaian tambahan, adalah strategi pertempuran yang stabil.

Kod sumber strategi
/*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 )