Les ressources ont été chargées... Je charge...

Stratégie d'inversion de la tendance de l'indicateur de risque

Auteur:ChaoZhang est là., Date: 2024-04-28 13:33:19
Les étiquettes:Indice de résistanceATR

img

Résumé

La stratégie d'inversion de tendance RSI est une stratégie de trading quantitative basée sur l'indice de force relative (RSI) et la plage moyenne vraie (ATR). Elle ajuste dynamiquement les niveaux de profit et de stop loss (TP / SL) pour s'adapter aux fluctuations rapides du marché et saisir les opportunités d'inversion de tendance.

Principe de stratégie

Le noyau de la stratégie d'inversion de tendance RSI réside dans la construction de bandes dynamiques TP/SL. Premièrement, il utilise les fonctions personnalisées highest_custom et lowest_custom pour trouver les prix les plus élevés et les plus bas depuis le dernier croisement, formant la base des bandes. Ensuite, il calcule le RSI et l'ATR avec une longueur spécifiée par l'utilisateur et effectue les calculs suivants:

  1. La marge inférieure = prix le plus élevé × [1 - (ATR/prix + 1/(RSI Marge inférieure × multiplicateur))]
  2. La marge supérieure = prix le plus bas × [1 + (ATR/prix + 1/(RSI Marge supérieure × multiplicateur))]

Ici, le multiplicateur est un facteur d'expansion de bande défini par l'utilisateur. Si le prix dépasse la bande supérieure, il va long; s'il dépasse la bande inférieure, il va court. Les couleurs de ces deux bandes changent également en fonction de la position du prix par rapport aux bandes, ce qui facilite l'observation.

Les avantages de la stratégie

  1. Haute adaptabilité: les bandes TP/SL peuvent s'ajuster automatiquement en fonction de la volatilité des prix, répondant rapidement aux changements du marché.
  2. Paramètres réglables: en ajustant des paramètres tels que la longueur et le multiplicateur, la sensibilité de la stratégie peut être contrôlée de manière flexible.
  3. Logique claire: la structure du code est raisonnable et facile à comprendre et à développer.
  4. Large application: il peut être utilisé indépendamment comme stratégie ou ajouter des fonctionnalités TP/SL à d'autres stratégies.
  5. Efficacité de calcul: en utilisant des fonctions personnalisées comme highest_custom, il évite les calculs répétitifs massifs causés par l'utilisation de types de séries.

Risques stratégiques

  1. Une mauvaise sélection de paramètres peut entraîner des risques supplémentaires. Par exemple, une petite longueur peut conduire à des transactions fréquentes, et un grand multiplicateur peut conduire à des pertes de stop trop lâches.
  2. Les performances peuvent être médiocres dans des conditions de marché spécifiques, telles que la consolidation fréquente et les fausses ruptures dans un marché volatil, ce qui peut entraîner davantage de pertes dans les transactions.
  3. La stratégie elle-même n'a pas de fonction de jugement de tendance et doit être utilisée en combinaison avec d'autres signaux.

Directions d'optimisation de la stratégie

  1. Considérez l'ajout d'indicateurs de tendance, tels que des moyennes mobiles, pour ne négocier qu'aux points de renversement dans la direction de la tendance principale.
  2. Optimiser les paramètres pour trouver la meilleure combinaison de longueur, de multiplicateur, etc.
  3. Combiner avec d'autres indicateurs techniques ou des indicateurs de sentiment du marché pour améliorer la précision des points d'entrée et de sortie.
  4. Ajouter la gestion des positions pour contrôler strictement l'exposition au risque de chaque transaction.

Résumé

La stratégie d'inversion de tendance du RSI utilise le RSI et l'ATR pour construire des bandes adaptatives qui peuvent ajuster dynamiquement les points TP / SL et répondre rapidement aux changements du marché. La stratégie a une logique claire, une large applicabilité et peut être un outil puissant pour les traders quantitatifs. Cependant, dans l'utilisation pratique, il faut toujours faire attention à la sélection des paramètres et au contrôle des risques, et il est recommandé de l'utiliser en combinaison avec d'autres signaux d'indicateur pour améliorer la performance globale. La stratégie a davantage de marge d'optimisation, comme l'ajout de filtres de tendance et l'optimisation des paramètres.


/*backtest
start: 2023-04-22 00:00:00
end: 2024-04-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("RSI Trend Reversal", overlay=true, max_bars_back = 4999, calc_on_every_tick = false)


//INPUTS 
rsi_length = input.int(title = "Lenght", defval = 8)
rsi_mult = input.float(title = "Multiplier", defval = 1.5, step = .05)
lookback = input.int(title = "Delay to prevent idealization", defval = 1)
sltp = input.float(title = "Minimum Difference", defval = 10)
src = input.source(title = "Source Input", defval = close)

//PARAMETERS INITILIZATION
hclose = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, src)
//FUNCTION INITILIZATION
highest_custom(src, length) =>
    x = src
    for i = 0 to length
        if src[i] > x
            x := src[i]
    x
lowest_custom(src, length) => 
    x = src
    for i = 0 to length
        if src[i] < x
            x := src[i]
    x
rsilev(src, length, mult, sltp) =>
    sl = (100 - sltp) / 100
    tp = (100 + sltp) / 100
    var bool crossup = na
    var bool crossdown = na
    var float dir = na
    dir_change = ta.change(dir)
    var float BearGuy = 0
    BullGuy = ta.barssince(crossup or crossdown)
    if na(BullGuy)
        BearGuy += 1
    else
        BearGuy := BullGuy
    var float upper = na
    var float lower = na
    rsilower = ta.rsi(src, length)
    rsiupper = math.abs(ta.rsi(src, length) - 100)
    atr = ta.atr(length) / src
    lower := highest_custom(math.max(highest_custom(highest_custom(src, BearGuy) * (1 - (atr + ((1 / (rsilower) * mult)))), BearGuy), src * sl), BearGuy)
    upper := lowest_custom(math.min(lowest_custom(lowest_custom(src, BearGuy) * (1 + (atr + ((1 / (rsiupper) * mult)))), BearGuy), src * tp), BearGuy)
    var float thresh = na
    if na(thresh)
        thresh := lower
    if na(dir)
        dir := 1
    if crossdown
        dir := -1
    if crossup
        dir := 1
    if dir == 1
        thresh := lower
    if dir == -1
        thresh := upper
    crossup := ta.crossover(src, thresh)
    crossdown := ta.crossunder(src, thresh)
    thresh

rsiclose = rsilev(hclose, rsi_length, rsi_mult, sltp)

//PLOTTING
var color col = color.lime
if hclose > rsiclose
    col := color.lime
if hclose < rsiclose
    col := color.red
plot(rsiclose, linewidth = 2, color = col)

//STRATEGY
buy = ta.crossover(hclose, rsiclose)
sell = ta.crossunder(hclose, rsiclose)

if buy[lookback]
    strategy.entry("long", strategy.long)
if sell[lookback]
    strategy.entry("Short", strategy.short)

Relationnée

Plus de