Penembusan Tinggi Rendah untuk Perdagangan Kuantitatif

Penulis:ChaoZhang, Tarikh: 2023-11-10 11:09:28
Tag:

img

Ringkasan

Strategi Fusion menggabungkan strategi corak pembalikan 123 dan strategi pecah tinggi rendah ke dalam sistem perdagangan kuantitatif. Dengan mensintesis isyarat penunjuk di pelbagai jangka masa, ia bertujuan untuk mencapai kelebihan modal pelbagai jangka masa dan menjana pulangan yang berlebihan dalam jangka sederhana hingga panjang.

Logika Strategi

Strategi Fusi terdiri daripada dua komponen:

  1. 123 Strategi Pembalikan Strategi ini berasal dari idea pada p183 buku How I Tripled My Money in the Futures Market oleh Ulf Jensen. Ia menjana isyarat perdagangan dengan memeriksa hubungan antara harga penutupan dua hari yang lalu dan hari sebelumnya, bersama-sama dengan penunjuk Stochastic untuk mengukur keadaan pasaran yang terlalu banyak dibeli dan terlalu banyak dijual. Khususnya, isyarat beli dihasilkan apabila harga penutupan dua hari berturut-turut lebih tinggi daripada hari sebelumnya, dan penunjuk Slow Stochastic di bawah 50. Isyarat jual dihasilkan apabila harga penutupan dua hari berturut-turut lebih rendah daripada hari sebelumnya, dan penunjuk Stochastic Fast di atas 50. Dengan menggabungkan penunjuk Stochastic, strategi ini mengelakkan membeli di puncak pasaran dan menjual atom.

  2. Strategi Penembusan Tinggi dan Rendah Strategi ini mengenal pasti isyarat dagangan dengan mengesan penembusan harga di luar tahap tinggi / rendah sebelumnya dalam tempoh masa yang berbeza. Ia mengira tertinggi tertinggi dan terendah terendah semasa dan tempoh sebelumnya dan menghasilkan isyarat beli apabila harga memecahkan di atas tahap tinggi, dan isyarat jual apabila harga memecahkan di bawah tahap rendah. Kelebihan strategi ini adalah keupayaannya untuk mengenal pasti perubahan corak trend dalam jangka masa yang lebih tinggi, yang membolehkan kemasukan lebih awal.

Strategi Fusion menggabungkan isyarat dari dua strategi di atas, dan menghasilkan isyarat dagangan sebenar hanya apabila arah isyarat sejajar. Ini menapis beberapa isyarat palsu yang disebabkan oleh kesilapan dalam satu strategi dan meningkatkan kebolehpercayaan isyarat.

Kelebihan Strategi

  1. Sintesis pelbagai jangka masa meningkatkan ketepatan isyarat Integrasi corak harian dan jangka masa yang lebih tinggi meningkatkan ketepatan penjanaan isyarat perdagangan, mengelakkan gangguan dari bunyi pasaran jangka pendek.

  2. Menggunakan sepenuhnya penilaian overbought / oversold dari Stochastic Penggunaan penunjuk Stochastic Slow menghalang pembelian yang bersemangat di zon overbought. Penunjuk Stochastic Fast menghalang penjualan yang bersemangat di zon oversold. Kerugian yang tidak perlu dikurangkan.

  3. Mengesan corak trend tepat pada masanya, mengurangkan peluang yang hilang Strategi pecah tinggi rendah mengenal pasti permulaan trend dalam jangka masa yang lebih tinggi lebih awal, mengurangkan peluang perdagangan yang hilang.

  4. Pengoptimuman fleksibel dengan pelbagai sub-strategi Dengan pelbagai sub-strategi, ruang pengoptimuman yang besar membolehkan penyesuaian parameter sub-strategi atau memperkenalkan yang baru untuk menjadikan strategi lebih stabil dan boleh dipercayai.

  5. Logik yang mudah dan jelas Struktur dan logik yang mudah membuat strategi mudah difahami, diubah suai dan dikekalkan pada masa akan datang.

Risiko Strategi

  1. Sintesis pelbagai jangka masa menyebabkan kelewatan isyarat Walaupun ketepatan meningkat, menggabungkan isyarat merentasi jangka masa menyebabkan kelewatan dan mungkin kehilangan peluang perdagangan jangka pendek.

  2. 123 corak tidak dapat mengenal pasti pembalikan trend jangka masa yang lebih lama Strategi pembalikan 123 hanya melihat hari-hari terakhir dan terlepas titik pembalikan utama dalam jangka masa yang lebih lama.

  3. Tetapan parameter yang salah boleh menyebabkan isyarat palsu Penyesuaian parameter Stochastic dan tempoh pecah yang tidak baik boleh menyebabkan isyarat palsu yang berlebihan.

  4. Teknis semata-mata, daya adaptasi yang lemah untuk peristiwa yang melampau Tanpa mempertimbangkan asas, strategi ini tidak sesuai dengan peristiwa Black Swan.

Penyelesaian yang sepadan:

  1. Memendekkan tempoh pengiraan dengan betul untuk mengurangkan lag.

  2. Cuba memperkenalkan penunjuk jangka panjang atau corak sebagai penapis.

  3. Mengoptimumkan parameter dan menguji ketahanan dengan teliti dalam backtest.

  4. Pertimbangkan untuk memasukkan faktor asas untuk penapisan isyarat.

Arahan untuk Pengoptimuman

  1. Uji dan optimumkan parameter sub-strategi untuk ketahanan.

  2. Menggabungkan isyarat tambahan seperti asas, aliran wang dan sebagainya.

  3. Memperkenalkan stop loss untuk mengehadkan kerugian maksimum setiap perdagangan.

  4. Parameter penyuntingan halus untuk produk tertentu untuk meningkatkan kesesuaian.

  5. Bantu dengan model pembelajaran mesin.

Kesimpulan

Ringkasnya, strategi Fusion menggabungkan kelebihan penunjuk teknikal pelbagai jangka masa, bertujuan untuk penjanaan isyarat yang lebih tepat dan tepat pada masanya. Berbanding dengan strategi penunjuk tunggal, ia mempunyai keupayaan pengesanan trend yang unggul dan pengeluaran isyarat yang lebih kukuh. Tetapi ia juga mengalami kelewatan dan adaptiviti yang tidak mencukupi untuk peristiwa melampau. Penambahbaikan masa depan boleh datang dari lebih banyak alat tambahan, pengoptimuman parameter yang lebih baik dan menaik taraf kestabilan dan keuntungan.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 25/11/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
// This script shows a high and low period value.
//    Width - width of lines
//    SelectPeriod - Day or Week or Month and etc.
//    LookBack - Shift levels 0 - current period, 1 - previous and etc. 
//
// 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

    
HLL(LookBack, SelectPeriod) =>
    pos = 0.0
    xHigh  = security(syminfo.tickerid, SelectPeriod, high[LookBack])
    xLow   = security(syminfo.tickerid, SelectPeriod, low[LookBack])
    vS1 = xHigh
    vR1 = xLow
    pos := iff(close > vR1, 1,
             iff(close < vS1, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & High and Low Levels", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
SelectPeriod = input(title="Resolution", type=input.resolution, defval="D")
LookBack = input(1,  minval=0)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posHLL = HLL(LookBack, SelectPeriod)
pos = iff(posReversal123 == 1 and posHLL == 1 , 1,
	   iff(posReversal123 == -1 and posHLL == -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