Strategi kuantitatif berdasarkan pembalikan dan kekuatan relatif perbandingan

Penulis:ChaoZhang, Tarikh: 2023-12-13 17:17:10
Tag:

img

Ringkasan

Strategi ini pertama menggabungkan strategi pembalikan yang dicadangkan oleh Ulf Jensen di halaman 183 bukunya How I Tripped My Money in the Futures Market dengan penunjuk kekuatan relatif perbandingan untuk mendapatkan isyarat yang lebih kuat.

Idea utama strategi ini adalah untuk menilai oleh beberapa faktor pada masa yang sama. Dengan menggabungkan faktor pembalikan dan isyarat kekuatan relatif perbandingan, ia hanya akan meletakkan pesanan beli atau jual apabila kedua-duanya memberikan isyarat yang sama, untuk meningkatkan kestabilan strategi.

Prinsip Strategi

Bahagian pertama adalah strategi pembalikan. Strategi ini berjalan lama apabila: harga penutupan telah meningkat secara berterusan selama dua hari terakhir, dan garis perlahan Stochastic 9 hari berada di bawah 50. Syarat penutupan adalah: harga penutupan telah jatuh secara berterusan selama dua hari terakhir, dan garis cepat Stochastic 9 hari berada di atas 50.

Bahagian kedua adalah penunjuk kekuatan relatif perbandingan. Penunjuk ini mengira purata bergerak kadar perubahan harga penutupan N-hari antara stok sasaran dan indeks penanda aras, dan membandingkannya dengan zon beli, zon jual dan zon penutupan yang telah ditetapkan. Ia pergi lama apabila penunjuk melintasi di atas zon beli, pergi pendek apabila jatuh di bawah zon jual, dan menutup kedudukan apabila panjang dan penunjuk jatuh di bawah zon dekat, dan apabila pendek dan penunjuk naik di atas zon dekat.

Strategi gabungan ini menilai isyarat kedua-dua pihak pada masa yang sama. Ia hanya akan meletakkan pesanan beli atau jual apabila kedua-dua memberi isyarat yang sama (kedua-dua membeli atau kedua-dua menjual).

Analisis Kelebihan

Strategi ini menggabungkan kelebihan faktor pembalikan dan faktor kekuatan relatif. Strategi pembalikan dapat menangkap ekstrem dalam jangka pendek; strategi kekuatan relatif dapat memahami trend utama pasaran yang lebih luas. Isyarat dari kedua-dua strategi dapat meningkatkan kebolehpercayaan dan menapis beberapa isyarat palsu yang disebabkan oleh bunyi bising.

Di samping itu, penunjuk Stochastic, sebagai penunjuk untuk membezakan zon overbought dan oversold, dapat menentukan titik pembalikan dengan lebih baik.

Analisis Risiko

Risiko terbesar strategi pembalikan adalah bahawa mereka tidak dapat menentukan masa pembalikan pasaran, yang boleh membawa kepada kerugian berterusan selepas pembalikan pasaran.

Risiko strategi kekuatan relatif terletak pada tetapan parameter yang tidak sesuai, yang boleh menghasilkan terlalu banyak isyarat palsu.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Uji lebih banyak faktor pembalikan untuk mencari strategi pembalikan yang lebih baik.

  2. Uji dan optimumkan parameter untuk penunjuk kekuatan relatif untuk mencari kombinasi parameter optimum, kerana tetapan semasa adalah subjektif dan mungkin tidak dioptimumkan.

  3. Tambah strategi stop loss. Pada masa ini tidak ada stop loss, menambah stop loss yang munasabah dapat mengawal risiko penurunan.

  4. Uji indeks penanda aras yang berbeza untuk mengira kekuatan relatif kepada stok sasaran dan mencari indeks yang paling sesuai.

Kesimpulan

Strategi ini menggabungkan faktor pembalikan dan faktor kekuatan relatif untuk perdagangan. Ia menggunakan kelebihan kedua-dua untuk meningkatkan kualiti isyarat dan merupakan strategi gabungan yang agak matang. Masih ada banyak ruang untuk pengoptimuman dengan penyesuaian parameter, menambah strategi stop loss, dan menyesuaikan kaedah gabungan strategi untuk mencapai hasil yang lebih baik.


/*backtest
start: 2022-12-06 00:00:00
end: 2023-12-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 30/10/2019
// 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
// Comparative Relative Strength Strategy for ES
//
// 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

CRS(a, b, len, BuyBand, SellBand, CloseBand) =>
    pos = 0.0
    as = security(a, timeframe.period, close) 
    bs = security(b, timeframe.period, close) 
    nRes = sma(as/bs, len)
    pos := iff(nRes > BuyBand, 1,
	         iff(nRes < SellBand, -1,
	          iff(pos[1] == 1 and nRes < CloseBand, 0,
    	       iff(pos[1] == -1 and nRes > CloseBand, 0, nz(pos[1], 0)))))
    pos

strategy(title="Combo Backtest 123 Reversal & Comparative Relative Strength", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
a = syminfo.tickerid 
b = input("BTC_USDT:swap", type=input.symbol) 
LengthCRS = input(10) 
BuyBand = input(0.9988, step = 0.0001)
SellBand = input(0.9960, step = 0.0001)
CloseBand = input(0.9975, step = 0.0001)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posCRS = CRS(a, b, LengthCRS, BuyBand, SellBand, CloseBand)
pos = iff(posReversal123 == 1 and posCRS == 1 , 1,
	   iff(posReversal123 == -1 and posCRS == -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