Stratégie de négociation quantitative basée sur les indicateurs TRSI et SUPER

Auteur:ChaoZhang est là., Date: 15 décembre 2023 à 16h05
Les étiquettes:

img

Résumé

Cette stratégie combine l'indice de force relative (TRSI) et les indicateurs de super tendance pour former une stratégie de trading quantitative relativement complète.

La logique de la stratégie

  1. Calculer l'indicateur TRSI pour déterminer si le marché est en surachat ou en survente et émettre des signaux d'achat et de vente
  2. Utilisez l'indicateur Super Trend pour filtrer les signaux sonores et confirmer la tendance sous-jacente
  3. Définir des points de stop-loss et de prise de profit à différents stades des positions rentables

Plus précisément, la stratégie calcule d'abord l'indicateur TRSI pour juger si le marché est entré dans la zone de surachat ou de survente, puis calcule l'indicateur Super Trend pour déterminer la direction de la tendance principale.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. La combinaison d'indicateurs multiples améliore la précision du signal.
  2. Applicable au trading de tendance à moyen et à long terme.
  3. Les paramètres de stop loss et de take profit sont raisonnables et permettent de retirer différentes proportions de fonds à différents stades de rentabilité afin de contrôler efficacement le risque.

Analyse des risques

Cette stratégie comporte également des risques:

  1. Le commerce à moyen et à long terme ne parvient pas à saisir les opportunités commerciales à court terme.
  2. Les paramètres TRSI incorrects peuvent manquer les zones de surachat et de survente.
  3. Des paramètres de Super Trend incorrects peuvent émettre de mauvais signaux.
  4. Un espace stop loss trop large ne permet pas de contrôler efficacement les risques.

Pour faire face à ces risques, nous pouvons optimiser les aspects suivants:

Directions d'optimisation

  1. Incorporer davantage d'indicateurs à court terme pour identifier davantage d'opportunités commerciales.
  2. Ajustez les paramètres TRSI pour réduire l'intervalle d'erreur.
  3. Testez et optimisez les paramètres de Super Trend.
  4. Configurez des stop-loss flottants pour suivre les lignes de stop-loss en temps réel.

Résumé

Cette stratégie intègre plusieurs indicateurs tels que TRSI et Super Trend pour former une stratégie de trading quantitative relativement complète. Elle permet d'identifier efficacement les tendances à moyen et long terme tout en définissant un stop loss et un profit pour contrôler les risques. Il y a encore beaucoup de place pour l'optimisation, avec des améliorations ultérieures possibles dans des domaines tels que l'amélioration de la précision du signal et l'identification de plus d'opportunités de trading.


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


Plus de