Quantitative Handelsstrategie auf der Grundlage von TRSI- und SUPER-Trendindikatoren

Schriftsteller:ChaoZhang, Datum: 2023-12-15 16:05:51
Tags:

img

Übersicht

Diese Strategie kombiniert den Relative Strength Index (TRSI) und die Super Trend Indikatoren zu einer relativ vollständigen quantitativen Handelsstrategie.

Strategie Logik

  1. Berechnung des TRSI-Indikators, um festzustellen, ob sich der Markt in einem Überkauf- oder Überverkaufszustand befindet, und Ausgabe von Kauf- und Verkaufssignalen
  2. Verwenden Sie den Super Trend-Indikator, um Geräuschsignale auszufiltern und den zugrunde liegenden Trend zu bestätigen
  3. Setzen Sie Stop-Loss- und Take-Profit-Punkte in verschiedenen Phasen der profitablen Positionen

Die Strategie berechnet zunächst den TRSI-Indikator, um zu beurteilen, ob der Markt in die Überkauf- oder Überverkaufszone eingetreten ist, und berechnet dann den Super Trend-Indikator, um die Haupttrendrichtung zu bestimmen.

Analyse der Vorteile

Diese Strategie hat folgende Vorteile:

  1. Die Kombination von mehreren Indikatoren verbessert die Signalgenauigkeit.
  2. Für den mittelfristigen und langfristigen Trendhandel gilt: Überkauf- und Überverkaufssignale führen in der Regel zu Trendumkehrungen.
  3. Die Einstellungen für Stop-Loss und Take-Profit sind angemessen, da unterschiedliche Anteile von Geldern in verschiedenen Rentabilitätsstadien abgezogen werden, um das Risiko wirksam zu kontrollieren.

Risikoanalyse

Diese Strategie birgt auch einige Risiken:

  1. Der mittel- bis langfristige Handel kann kurzfristige Handelschancen nicht nutzen.
  2. Bei falschen Einstellungen der TRSI-Parameter können Überkauf- und Überverkaufszonen verfehlt werden.
  3. Eine falsche Einstellung des Super Trend-Parameters kann falsche Signale auslösen.
  4. Ein zu großer Stop-Loss-Bereich kann die Risiken nicht wirksam kontrollieren.

Um diesen Risiken entgegenzuwirken, können wir folgende Aspekte optimieren:

Optimierungsrichtlinien

  1. Mehr kurzfristige Indikatoren einbeziehen, um mehr Handelsmöglichkeiten zu identifizieren.
  2. Anpassen der TRSI-Parameter, um das Fehlerintervall zu verringern.
  3. Testen und optimieren Sie die Super Trend Parameter.
  4. Setzen Sie schwebende Stop-Losses ein, um die Stop-Loss-Linien in Echtzeit zu verfolgen.

Zusammenfassung

Diese Strategie integriert mehrere Indikatoren wie TRSI und Super Trend, um eine relativ vollständige quantitative Handelsstrategie zu bilden. Sie kann mittelfristige bis langfristige Trends effektiv identifizieren und gleichzeitig Stop Loss und Take Profit festlegen, um Risiken zu kontrollieren. Es gibt immer noch viel Raum für Optimierung, wobei nachfolgende Verbesserungen in Bereichen wie Verbesserung der Signalgenauigkeit und Identifizierung mehrer Handelsmöglichkeiten möglich sind. Insgesamt ist dies ein guter Ausgangspunkt für eine quantitative Strategie.


/*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)


Mehr