Quantitative Handelsstrategie basierend auf TRSI- und SUPER-Trendindikatoren


Erstellungsdatum: 2023-12-15 16:05:51 zuletzt geändert: 2023-12-15 16:05:51
Kopie: 0 Klicks: 738
1
konzentrieren Sie sich auf
1621
Anhänger

Quantitative Handelsstrategie basierend auf TRSI- und SUPER-Trendindikatoren

Überblick

Die Strategie kombiniert einen relativ starken und schwachen Indikator (TRSI) und einen Supertrend-Indikator (SUPER Trend) zu einem relativ vollständigen Satz von quantitativen Handelsstrategien. Die Strategie dient hauptsächlich dazu, mittlere und lange Trends zu erfassen, während die kurzfristigen Indikatoren genutzt werden, um die Handelssignale zu filtern.

Strategieprinzip

  1. Berechnung des TRSI-Wertes, um zu bestimmen, ob der Markt überkauft ist und ein Kauf- und Verkaufssignal ausstrahlt
  2. Filterung von Geräuschsignalen mit dem SUPER Trend-Indikator zur Bestätigung grundlegender Trends
  3. Setzen Sie Stop-Loss-Stoppstellen in verschiedenen Phasen der Gewinntabelle

Konkret berechnet die Strategie zunächst den TRSI-Indikator, um zu bestimmen, ob ein Überverkauf aufgetreten ist, und berechnet dann den SUPER Trend-Indikator, um die Richtung des großen Trends zu bestimmen. Die Kombination der beiden sendet ein Handelssignal.

Analyse der Stärken

Diese Strategie hat folgende Vorteile:

  1. Mehrfache Kombination von Indikatoren, Signalgenauigkeit verbessert. TRSI-Beschlusszeitpunkt, SUPER Trend-Filterrichtung.
  2. Es ist für den Handel mit mittleren und langen Linien geeignet. Überkauf-Überverkauf-Signal kann zu einer Trendwende führen.
  3. Die Stop-Loss-Stoppschranke ist vernünftig eingerichtet, die Gewinnrücknahme in verschiedenen Phasen erfolgt in unterschiedlichem Verhältnis und die Risiken werden effektiv kontrolliert.

Risikoanalyse

Die Strategie birgt auch Risiken:

  1. Es ist nicht möglich, kurzfristige Handelsmöglichkeiten zu nutzen.
  2. Die TRSI-Parameter sind falsch eingestellt und haben möglicherweise einen Überkauf-Überverkaufsprozess verpasst.
  3. Die SUPER Trend Parameter sind falsch eingestellt und können ein falsches Signal erzeugen.
  4. Der Stop-Loss-Raum ist zu groß, um das Risiko effektiv zu kontrollieren.

Wir können Optimierungen für diese Risiken in folgenden Bereichen vornehmen:

Optimierungsrichtung

  1. In Kombination mit mehr Short-Line-Indikatoren werden mehr Handelsmöglichkeiten identifiziert.
  2. Anpassung der TRSI-Parameter zur Verringerung der Abweichung.
  3. Test und Optimierung der SUPER Trend-Parameter.
  4. Setzen Sie einen Floating Stop und verfolgen Sie den Stop in Echtzeit.

Zusammenfassen

Die Strategie verwendet mehrere Indikatoren wie den TRSI und den SUPER Trend, um eine vollständige quantitative Handelsstrategie zu bilden. Sie kann einen mittleren langen Trend effektiv identifizieren und gleichzeitig die Stop-Loss-Stop-Risiken kontrollieren. Die Strategie kann noch optimiert werden, und es kann nachfolgend verbessert werden, um die Signalgenauigkeit zu verbessern und mehr Handelsmöglichkeiten zu identifizieren.

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