Strategi perdagangan kuantitatif faktor ganda


Tanggal Pembuatan: 2023-12-07 15:11:37 Akhirnya memodifikasi: 2023-12-07 15:11:37
menyalin: 0 Jumlah klik: 611
1
fokus pada
1621
Pengikut

Strategi perdagangan kuantitatif faktor ganda

Ringkasan

Strategi ini menggabungkan 123 reversal dan variabel positif untuk memungkinkan perdagangan kuantitatif yang didorong oleh dua faktor. Strategi ini menangkap peluang reversal jangka pendek, tetapi juga dapat mengidentifikasi tren jangka panjang untuk menghasilkan excess return dengan risiko rendah.

Prinsip Strategi

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

Bagian kedua adalah strategi indikator oscillasi bilangan bulat. Indikator ini menghitung bilangan bulat yang paling dekat dengan harga saat ini dalam kisaran harga yang ditentukan, dan menghasilkan perbedaan dengan harga saat ini. Nilai positif menunjukkan harga saat ini mendekati batas atas bilangan bulat, nilai negatif menunjukkan harga saat ini mendekati batas bawah bilangan bulat.

Prinsip penggabungan sinyal perdagangan dari dua strategi anak adalah: menghasilkan sinyal perdagangan aktual jika ada sinyal arah yang sama, tidak membuka posisi jika ada sinyal arah yang berlawanan.

Analisis Keunggulan

Strategi ini menggabungkan faktor ganda, baik mempertimbangkan efek reversal jangka pendek, dan juga karakteristik tren jangka panjang, menilai pasar dari berbagai sudut, meningkatkan kemampuan strategi untuk menahan risiko.

Berbeda dengan strategi momentum tunggal, strategi ini dapat menggunakan faktor reversal untuk menghentikan atau membalik posisi tepat waktu untuk mengontrol risiko intraday secara efektif ketika kejadian mendadak menyebabkan harga melonjak dalam jangka pendek.

Berbeda dengan strategi reversal tunggal, strategi ini memperkenalkan indikator gesekan bilangan prima untuk menentukan arah tren, yang dapat mencegah overtrading akibat seringnya perdagangan reversal.

Analisis risiko

Risiko terbesar dari strategi ini adalah adanya konflik sinyal antara dua faktor. Jika 123 berbalik menunjukkan tanda-tanda overbought dan oversold, menghasilkan sinyal berbalik, sementara indikator oscillasi pluralitas menunjukkan masih dalam tren, maka perdagangan berbalik langsung dapat menyebabkan kerugian.

Untuk mengontrol risiko ini, strategi ini menambahkan logika penilaian tambahan, yang hanya menghasilkan sinyal perdagangan aktual ketika sinyal dua faktor diarahkan. Namun, ini juga dapat melewatkan beberapa peluang perdagangan.

Arah optimasi

  1. Optimalkan parameter indikator Stochastic untuk menemukan kombinasi parameter inversi yang lebih cocok untuk parameter tertentu

  2. Optimalkan parameter persentase perbedaan kapasitatif dari indikator getaran kuantitatif, mengurangi noise trading

  3. Meningkatkan strategi stop loss untuk mencegah pertumbuhan kerugian satu arah

  4. Menambahkan modul manajemen posisi untuk menyesuaikan posisi dalam berbagai kondisi pasar

  5. Menambahkan model pembelajaran mesin untuk menilai keandalan sinyal dua faktor, mengurangi kemungkinan sinyal bertentangan

Meringkaskan

Strategi ini berhasil menggabungkan faktor pembalikan jangka pendek dengan faktor tren jangka panjang, untuk mencapai perdagangan kuantitatif dengan risiko rendah. Efektif menggunakan faktor ganda untuk memfilter perdagangan noise, dan menetapkan penilaian tambahan untuk mengendalikan risiko logis, adalah strategi pertempuran nyata dengan pendapatan yang stabil.

Kode 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 )