Strategi perdagangan kuantitatif berdasarkan indikator tren TRSI dan SUPER


Tanggal Pembuatan: 2023-12-15 16:05:51 Akhirnya memodifikasi: 2023-12-15 16:05:51
menyalin: 0 Jumlah klik: 738
1
fokus pada
1621
Pengikut

Strategi perdagangan kuantitatif berdasarkan indikator tren TRSI dan SUPER

Ringkasan

Strategi ini menggabungkan indikator relatif kuat (TRSI) dan indikator super trend (SUPER Trend) untuk membentuk satu set strategi perdagangan kuantitatif yang lebih lengkap. Strategi ini terutama digunakan untuk menangkap tren garis tengah dan panjang, sementara menggunakan indikator jangka pendek untuk memfilter sinyal perdagangan yang berisik.

Prinsip Strategi

  1. Perhitungan indikator TRSI untuk menentukan apakah pasar berada dalam kondisi overbought atau oversold, dan mengirimkan sinyal buy and sell
  2. Filter sinyal kebisingan dengan indikator SUPER Trend untuk mengkonfirmasi tren fundamental
  3. Tetapkan Stop Loss pada berbagai tahap dalam tabel laba

Secara khusus, strategi pertama kali menghitung indikator TRSI untuk menentukan apakah ada zona oversold di pasar, kemudian menghitung indikator SUPER Trend untuk menentukan arah tren besar. Kombinasi keduanya untuk mengirimkan sinyal perdagangan. Setelah itu, atur titik stop loss, dan menarik kembali keuntungan dalam berbagai tahapan.

Analisis Keunggulan

Strategi ini memiliki beberapa keuntungan:

  1. Kombinasi multi-indikator, meningkatkan akurasi sinyal. Waktu penilaian TRSI, filter arah SUPER Trend.
  2. Ini berlaku untuk perdagangan tren garis panjang dan menengah.
  3. Pengaturan stop loss yang masuk akal, pengembalian keuntungan pada tahap yang berbeda, pengendalian risiko yang efektif.

Analisis risiko

Strategi ini juga memiliki beberapa risiko:

  1. “Kami tidak bisa menangkap peluang perdagangan jangka pendek.
  2. Parameter TRSI tidak disetel dengan benar, mungkin melewatkan zona overbought dan oversold.
  3. Parameter SUPER Trend tidak disetel dengan benar, mungkin akan mengirimkan sinyal yang salah.
  4. Stop loss terlalu besar untuk mengontrol risiko secara efektif.

Untuk mengatasi risiko ini, kita dapat mengoptimalkan beberapa hal berikut:

Arah optimasi

  1. Dengan lebih banyak indikator garis pendek, lebih banyak peluang perdagangan dapat diidentifikasi.
  2. Menyesuaikan parameter TRSI untuk mempersempit margin of error.
  3. Uji dan optimasi parameter SUPER Trend.
  4. Setting floating stop, real-time tracking stop line.

Meringkaskan

Strategi ini menggabungkan beberapa indikator seperti TRSI dan SUPER Trend untuk membentuk strategi perdagangan kuantitatif yang lebih lengkap. Strategi ini dapat secara efektif mengidentifikasi tren lini tengah dan panjang, sambil mengatur risiko pengendalian stop loss. Ada banyak ruang untuk mengoptimalkan strategi ini, dan selanjutnya dapat ditingkatkan dari segi meningkatkan akurasi sinyal, mengidentifikasi lebih banyak peluang perdagangan, dan sebagainya. Secara keseluruhan, ini adalah strategi kuantitatif yang lebih baik.

Kode Sumber Strategi
/*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)