Strategi dagangan kuantitatif berdasarkan penunjuk arah aliran TRSI dan SUPER


Tarikh penciptaan: 2023-12-15 16:05:51 Akhirnya diubah suai: 2023-12-15 16:05:51
Salin: 0 Bilangan klik: 738
1
fokus pada
1621
Pengikut

Strategi dagangan kuantitatif berdasarkan penunjuk arah aliran TRSI dan SUPER

Gambaran keseluruhan

Strategi ini menggabungkan penunjuk yang agak kuat ((TRSI) dan penunjuk super trend ((SUPER Trend), membentuk satu set strategi perdagangan kuantitatif yang lebih lengkap. Strategi ini digunakan terutamanya untuk menangkap trend garis tengah dan panjang, sambil menggunakan penunjuk jangka pendek untuk menyaring isyarat perdagangan bising.

Prinsip Strategi

  1. Pengiraan indikator TRSI untuk menentukan sama ada pasaran berada dalam keadaan overbought atau oversold, dan menghantar isyarat beli dan jual
  2. Menapis isyarat bising menggunakan indikator SUPER Trend untuk mengesahkan trend asas
  3. Tetapkan stop loss pada tahap yang berbeza dalam cakera keuntungan

Khususnya, strategi pertama mengira indikator TRSI untuk menentukan sama ada pasaran mempunyai kawasan yang terlalu banyak dijual, kemudian mengira indikator SUPER Trend untuk menentukan arah trend besar. Gabungan kedua-duanya mengeluarkan isyarat perdagangan. Kemudian menetapkan titik berhenti kerugian, dan mengambil keuntungan dan menarik balik dana dalam perkadaran yang berbeza pada tahap yang berbeza.

Analisis kelebihan

Strategi ini mempunyai beberapa kelebihan:

  1. Kombinasi pelbagai petunjuk, meningkatkan ketepatan isyarat. Waktu penilaian TRSI, penapis arah SUPER Trend.
  2. Ia digunakan untuk perdagangan trend garis panjang dan tengah. Isyarat overbuy dan oversell mudah membentuk pembalikan trend.
  3. Penetapan stop loss adalah munasabah, pengunduran keuntungan pada peringkat yang berbeza dan peratusan dana yang berbeza, dan kawalan risiko yang berkesan.

Analisis risiko

Strategi ini juga mempunyai risiko:

  1. Perdagangan dalam talian yang panjang dan sederhana, tidak dapat menangkap peluang perdagangan dalam talian pendek.
  2. Parameter TRSI tidak ditetapkan dengan betul, mungkin terlewatkan tempoh jual-beli yang berlebihan.
  3. SUPER Trend parameter yang tidak betul, mungkin akan menghantar isyarat yang salah.
  4. Ruang hentian terlalu besar untuk mengawal risiko secara berkesan.

Untuk mengatasi risiko ini, kita boleh mengoptimumkan beberapa aspek:

Arah pengoptimuman

  1. Menerusi lebih banyak indikator garis pendek, lebih banyak peluang perdagangan dapat dikenal pasti.
  2. Menyesuaikan parameter TRSI untuk mengurangkan jurang kesilapan.
  3. Uji dan optimumkan parameter SUPER Trend.
  4. Tetapkan hentian terapung, dan ikuti garis hentian dalam masa nyata.

ringkaskan

Strategi ini menggabungkan beberapa petunjuk seperti TRSI dan SUPER Trend untuk membentuk strategi perdagangan kuantitatif yang lebih lengkap. Ia dapat mengenal pasti trend garis tengah yang panjang dengan berkesan, sambil menetapkan risiko kawalan hentian berhenti.

Kod 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)