Strategi perdagangan kuantitatif berdasarkan indikator TRSI dan SUPER

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

img

Gambaran umum

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

Logika Strategi

  1. Menghitung indikator TRSI untuk menentukan apakah pasar berada dalam keadaan overbought atau oversold dan mengeluarkan sinyal beli dan jual
  2. Gunakan indikator Super Trend untuk menyaring sinyal kebisingan dan mengkonfirmasi tren yang mendasari
  3. Setel stop loss dan take profit point pada tahap yang berbeda dari posisi menguntungkan

Secara khusus, strategi ini pertama kali menghitung indikator TRSI untuk menilai apakah pasar telah memasuki zona overbought atau oversold, dan kemudian menghitung indikator Super Trend untuk menentukan arah tren utama. Sinyal perdagangan dikeluarkan dengan menggabungkan keduanya. Stop loss dan take profit point kemudian ditetapkan untuk menarik proporsi dana yang berbeda pada berbagai tahap profitabilitas.

Analisis Keuntungan

Strategi ini memiliki keuntungan berikut:

  1. Kombinasi multi-indikator meningkatkan akurasi sinyal. TRSI menentukan waktu dan Super Trend filter arah.
  2. Berlaku pada perdagangan tren jangka menengah dan panjang.
  3. Pengaturan stop loss dan take profit wajar, menarik proporsi dana yang berbeda pada tahap profitabilitas yang berbeda untuk mengontrol risiko secara efektif.

Analisis Risiko

Strategi ini juga memiliki beberapa risiko:

  1. Perdagangan jangka menengah hingga panjang gagal menangkap peluang perdagangan jangka pendek.
  2. Pengaturan parameter TRSI yang tidak benar dapat kehilangan zona overbought dan oversold.
  3. Pengaturan parameter Super Trend yang tidak benar dapat mengeluarkan sinyal yang salah.
  4. Ruang stop loss yang terlalu besar gagal mengendalikan risiko secara efektif.

Untuk mengatasi risiko ini, kita dapat mengoptimalkan dari aspek berikut:

Arahan Optimasi

  1. Masukkan lebih banyak indikator jangka pendek untuk mengidentifikasi lebih banyak peluang perdagangan.
  2. Sesuaikan parameter TRSI untuk mempersempit interval kesalahan.
  3. Uji dan optimalkan parameter Super Trend.
  4. Atur stop loss yang mengambang untuk melacak stop loss line secara real time.

Ringkasan

Strategi ini mengintegrasikan beberapa indikator seperti TRSI dan Super Trend untuk membentuk strategi perdagangan kuantitatif yang relatif lengkap. Ini dapat secara efektif mengidentifikasi tren jangka menengah hingga panjang sambil mengatur stop loss dan mengambil keuntungan untuk mengendalikan risiko. Masih banyak ruang untuk optimasi, dengan perbaikan berikutnya mungkin di bidang seperti meningkatkan akurasi sinyal dan mengidentifikasi lebih banyak peluang perdagangan. Secara keseluruhan, ini adalah titik awal 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 banyak