Strategi Perdagangan Kuantitas Faktor Dua

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

img

Gambaran umum

Strategi ini menggabungkan faktor 123 pembalikan dan faktor osilator bilangan prima untuk menerapkan perdagangan kuantitatif yang didorong oleh faktor ganda.

Prinsip-prinsip

Bagian pertama adalah strategi pembalikan 123. Ini menggunakan fitur pembalikan harga selama 2 hari untuk menentukan titik masuk dan keluar. Ketika harga naik terus menerus selama 2 hari dan stokastik lambat berada di bawah 50, itu dianggap oversold, menghasilkan sinyal beli. Ketika harga turun terus menerus selama 2 hari dan stokastik cepat berada di atas 50, itu dianggap bouncing overbought, menghasilkan sinyal jual.

Bagian kedua adalah strategi osilator bilangan prima. Indikator ini menghitung bilangan prima terdekat di atas dan di bawah harga saat ini dalam kisaran yang ditentukan, dan menghasilkan perbedaan dari harga saat ini. Nilai positif berarti harga saat ini dekat dengan langit-langit bilangan prima, sedangkan nilai negatif berarti dekat dengan lantai bilangan prima. Arah tren dinilai oleh nilai perbedaan, yang dikombinasikan dengan 123 sinyal pembalikan untuk menghasilkan sinyal perdagangan akhir.

Aturan penggabungan sinyal adalah: sinyal perdagangan yang sebenarnya hanya dihasilkan ketika kedua sub-strategi memberikan sinyal ke arah yang sama, jika tidak tidak ada posisi baru yang dibuka ketika sinyal bertentangan.

Keuntungan

Dengan menggabungkan dua faktor, strategi ini mempertimbangkan efek pembalikan jangka pendek dan karakteristik tren jangka panjang untuk membuat penilaian pasar multi-sudut, meningkatkan ketahanan risiko strategi.

Dibandingkan dengan strategi momentum tunggal, strategi ini dapat menghentikan kerugian tepat waktu atau membalikkan posisi selama penurunan harga tiba-tiba, secara efektif mengendalikan risiko intraday dengan menggunakan faktor pembalikan.

Dibandingkan dengan strategi pembalikan tunggal, memperkenalkan osilator bilangan prima untuk arah tren menghindari overtrading dari perdagangan pembalikan yang sering.

Risiko

Risiko terbesar adalah konflik sinyal antara kedua faktor. Jika 123 reversal menunjukkan tanda overbought/oversold dan menghasilkan sinyal reversal, sementara osilator bilangan prima menunjukkan masih dalam tren, mengambil perdagangan reversal secara langsung dapat menyebabkan kerugian.

Untuk mengendalikan risiko ini, logika tambahan ditambahkan - perdagangan sebenarnya hanya dihasilkan ketika kedua sinyal sejajar ke arah.

Peningkatan

  1. Mengoptimalkan parameter stokastik untuk menemukan set parameter pembalikan yang lebih baik untuk produk tertentu

  2. Mengoptimalkan persentase toleransi dari osilator bilangan prima untuk mengurangi perdagangan kebisingan

  3. Tambahkan strategi stop loss untuk membatasi ekspansi kerugian satu arah

  4. Tambahkan modul ukuran posisi untuk menyesuaikan posisi untuk lingkungan pasar yang berbeda

  5. Tambahkan model pembelajaran mesin untuk menilai kredibilitas sinyal antara dua faktor, mengurangi konflik

Kesimpulan

Strategi ini berhasil menggabungkan faktor pembalikan jangka pendek dan faktor tren jangka panjang untuk mencapai perdagangan kuantitatif berisiko rendah. Dengan secara efektif menggunakan faktor ganda untuk menyaring kebisingan dan menetapkan logika tambahan untuk mengendalikan risiko, ini adalah strategi praktis keuntungan yang stabil. Parameter dan fungsi akan terus dioptimalkan agar sesuai dengan karakteristik pasar nyata.


/*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 banyak