Sumber dimuat naik... memuat...

Strategi Dagangan Kuantitatif Berdasarkan Penunjuk Trend TRSI dan SUPER

Penulis:ChaoZhang, Tarikh: 2023-12-15 16:05:51
Tag:

img

Ringkasan

Strategi ini menggabungkan Indeks Kekuatan Relatif (TRSI) dan penunjuk Super Trend untuk membentuk strategi perdagangan kuantitatif yang agak lengkap.

Logika Strategi

  1. Mengira penunjuk TRSI untuk menentukan sama ada pasaran berada dalam keadaan overbought atau oversold dan mengeluarkan isyarat beli dan jual
  2. Gunakan penunjuk Super Trend untuk menapis isyarat bunyi bising dan mengesahkan trend asas
  3. Tetapkan titik stop loss dan mengambil keuntungan pada peringkat yang berbeza dari kedudukan yang menguntungkan

Secara khusus, strategi ini mula-mula mengira penunjuk TRSI untuk menilai sama ada pasaran telah memasuki zon overbought atau oversold, dan kemudian mengira penunjuk Super Trend untuk menentukan arah trend utama. Isyarat perdagangan dikeluarkan dengan menggabungkan kedua-duanya.

Analisis Kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Kombinasi pelbagai penunjuk meningkatkan ketepatan isyarat. TRSI menentukan masa dan Super Trend penapis arah.
  2. Berlaku untuk perdagangan trend jangka sederhana dan panjang. Isyarat overbought dan oversold cenderung membentuk pembalikan trend.
  3. Tetapan Stop Loss dan Take Profit adalah munasabah, mengeluarkan perkadaran dana yang berbeza pada peringkat keuntungan yang berbeza untuk mengawal risiko dengan berkesan.

Analisis Risiko

Strategi ini juga mempunyai beberapa risiko:

  1. Perdagangan jangka sederhana hingga panjang gagal menangkap peluang perdagangan jangka pendek.
  2. Tetapan parameter TRSI yang tidak betul mungkin terlepas zon overbought dan oversold.
  3. Tetapan parameter Super Trend yang tidak betul boleh mengeluarkan isyarat yang salah.
  4. Jarak stop loss yang terlalu besar gagal mengawal risiko dengan berkesan.

Untuk menangani risiko ini, kita boleh mengoptimumkan dari aspek berikut:

Arahan pengoptimuman

  1. Masukkan lebih banyak penunjuk jangka pendek untuk mengenal pasti lebih banyak peluang perdagangan.
  2. Sesuaikan parameter TRSI untuk menyempitkan selang kesilapan.
  3. Uji dan optimumkan parameter Super Trend.
  4. Tetapkan stop loss terapung untuk mengesan garis stop loss dalam masa nyata.

Ringkasan

Strategi ini mengintegrasikan pelbagai penunjuk seperti TRSI dan Super Trend untuk membentuk strategi perdagangan kuantitatif yang agak lengkap. Ia dapat secara berkesan mengenal pasti trend jangka menengah hingga panjang sambil menetapkan stop loss dan mengambil keuntungan untuk mengawal risiko. Masih ada banyak ruang untuk pengoptimuman, dengan peningkatan seterusnya mungkin dalam bidang seperti meningkatkan ketepatan isyarat dan mengenal pasti lebih banyak peluang perdagangan. Secara keseluruhan, ini adalah titik permulaan yang baik untuk strategi kuantitatif.


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


//@version=4
strategy(title = "SuperTREX strategy", overlay = true)
strat_dir_input = input(title="Strategy Direction", defval="long", options=["long", "short", "all"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)
length = input( 14 )
overSold = input( 35 )
overBought = input( 70 )
HTF = input("W", type=input.resolution)
ti = change( time(HTF) ) != 0
p = fixnan( ti ? close : na )

vrsi = rsi(p, length)
price = close
var bool long = na
var bool short = na

long :=crossover(vrsi,overSold) 
short := crossunder(vrsi,overBought)

var float last_open_long = na
var float last_open_short = na

last_open_long := long ? close : nz(last_open_long[1])
last_open_short := short ? close : nz(last_open_short[1])


entry_value =last_open_long
entry_value1=last_open_short

xy=(entry_value+entry_value)/2

// INPUTS //
st_mult   = input(4,   title = 'SuperTrend Multiplier', minval = 0, maxval = 100, step = 0.01)
st_period = input(10, title = 'SuperTrend Period',     minval = 1)

// CALCULATIONS //
up_lev =xy - (st_mult * atr(st_period))
dn_lev =xy + (st_mult * atr(st_period))

up_trend   = 0.0
up_trend   := entry_value[1] > up_trend[1]   ? max(up_lev, up_trend[1])   : up_lev

down_trend = 0.0
down_trend := entry_value1[1] < down_trend[1] ? min(dn_lev, down_trend[1]) : dn_lev

// Calculate trend var
trend = 0
trend := close > down_trend[1] ? 1: close < up_trend[1] ? -1 : nz(trend[1], 1)

// Calculate SuperTrend Line
st_line = trend ==1 ? up_trend : down_trend
plot(xy,color = trend == 1 ? color.green : color.red)

buy=crossover( close, st_line) 
sell1=crossunder(close, st_line) 
 


buy1=buy
//

sell=sell1


// STRATEGY

plotshape(buy , title="buy", text="Buy", color=color.green, style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.white, transp=0)  //plot for buy icon
plotshape(sell, title="sell", text="Sell", color=color.red, style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.white, transp=0)  //plot for sell icon
// Take profit

//
l = buy 
s1=sell 
if l 
    strategy.entry("buy", strategy.long)
if s1 
    strategy.entry("sell", strategy.short)
per(pcnt) =>  strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
stoploss=input(title=" stop loss", defval=25, minval=0.01)
los = per(stoploss)
q1=input(title=" qty_percent1", defval=25, minval=1)
q2=input(title=" qty_percent2", defval=25, minval=1)
q3=input(title=" qty_percent3", defval=25, minval=1)
tp1=input(title=" Take profit1", defval=2, minval=0.01)
tp2=input(title=" Take profit2", defval=4, minval=0.01)
tp3=input(title=" Take profit3", defval=6, minval=0.01)
tp4=input(title=" Take profit4", defval=8, minval=0.01)
strategy.exit("x1", qty_percent = q1, profit = per(tp1), loss = los)
strategy.exit("x2", qty_percent = q2, profit = per(tp2), loss = los)
strategy.exit("x3", qty_percent = q3, profit = per(tp3), loss = los)
strategy.exit("x4", profit = per(tp4), loss = los)


Lebih lanjut