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

Stratégie RSI renforcée par la probabilité

Auteur:ChaoZhang est là., Date: 2023-12-20 à 15h05
Les étiquettes:

img

Résumé

Il s'agit d'une stratégie simple à long terme utilisant l'indicateur RSI pour déterminer les niveaux de surachat et de survente. Nous l'avons améliorée en ajoutant un stop loss et un take profit, et en intégrant un module de probabilité au trading de renforcement uniquement lorsque la probabilité récente d'une transaction rentable est supérieure ou égale à 51%.

Principaux

La stratégie utilise l'indicateur RSI pour juger des conditions de surachat et de survente du marché. Plus précisément, elle est longue lorsque le RSI dépasse la limite inférieure de la zone de surachat; et ferme la position lorsque le RSI dépasse la limite supérieure de la zone de surachat.

La clé est que nous avons intégré un module de jugement de probabilité. Ce module calcule le pourcentage rentable des transactions longues au cours des dernières périodes (défini par le paramètre lookback). Il n'autorise l'entrée que si la probabilité de transaction rentable récente est supérieure ou égale à 51%.

Les avantages

En tant que stratégie RSI améliorée par la probabilité, elle présente les avantages suivants par rapport aux stratégies RSI simples:

  1. L'exposition à la valeur ajoutée de la valeur ajoutée de la valeur ajoutée de la valeur ajoutée de la valeur ajoutée de la valeur ajoutée de la valeur ajoutée de la valeur ajoutée de la valeur ajoutée
  2. Le module de probabilité intégré évite les marchés à faible probabilité
  3. Le module de probabilité est réglable pour différents environnements de marché
  4. Le mécanisme à long terme est simple à comprendre et à mettre en œuvre

Analyse des risques

Cette stratégie comporte encore certains risques:

  1. Uniquement à long terme, incapable de tirer profit de la baisse du marché
  2. Un mauvais jugement du module de probabilité pourrait faire rater des opportunités
  3. Difficile de trouver la meilleure combinaison de paramètres, différence significative de performance entre les environnements du marché
  4. Réglage du stop-loss lâche, une perte importante d'une seule transaction est toujours possible

Les solutions:

  1. Considérez l'ajout d'un mécanisme court
  2. Optimiser le module de probabilité pour réduire le taux d'erreur de jugement
  3. Utiliser l'apprentissage automatique pour optimiser dynamiquement les paramètres
  4. Définir un niveau de stop loss plus prudent pour limiter les pertes

Directions de renforcement

La stratégie pourrait être encore optimisée dans les domaines suivants:

  1. Augmentation du module court pour les opérations bidirectionnelles
  2. Utiliser l'apprentissage automatique pour optimiser les paramètres dynamiques
  3. Essayez d'autres indicateurs de surachat/survente
  4. Optimiser le stop loss/take profit pour améliorer le ratio de profit
  5. Ajouter d'autres facteurs pour filtrer les signaux et améliorer la probabilité

Résumé

Il s'agit d'une stratégie RSI simple améliorée par un module de probabilité intégré. Par rapport aux stratégies RSI vanille, elle filtre certaines transactions perdantes et améliore le ratio de tirage et de profit global.


/*backtest
start: 2023-11-19 00:00:00
end: 2023-12-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © thequantscience

//@version=5
strategy("Reinforced RSI",
     overlay = true,
     default_qty_type = strategy.percent_of_equity, 
     default_qty_value = 100,
     pyramiding = 1,
     currency = currency.EUR, 
     initial_capital = 1000,
     commission_type = strategy.commission.percent, 
     commission_value = 0.07)

lenght_rsi = input.int(defval = 14, minval = 1, title = "RSI lenght: ")
rsi = ta.rsi(close, length = lenght_rsi)

rsi_value_check_entry = input.int(defval = 35, minval = 1, title = "Oversold: ")
rsi_value_check_exit = input.int(defval = 75, minval = 1, title = "Overbought: ")

trigger = ta.crossunder(rsi, rsi_value_check_entry)
exit = ta.crossover(rsi, rsi_value_check_exit)

entry_condition   = trigger 
TPcondition_exit  = exit

look = input.int(defval = 30, minval = 0, maxval = 500, title = "Lookback period: ")

Probabilities(lookback) =>

    isActiveLong = false
    isActiveLong := nz(isActiveLong[1], false)
    isSellLong = false
    isSellLong := nz(isSellLong[1], false)

    int positive_results = 0
    int negative_results = 0

    float positive_percentage_probabilities = 0 
    float negative_percentage_probabilities = 0 

    LONG = not isActiveLong and entry_condition == true 
    CLOSE_LONG_TP = not isSellLong and TPcondition_exit == true

    p = ta.valuewhen(LONG, close, 0)
    p2 = ta.valuewhen(CLOSE_LONG_TP, close, 0)

    for i = 1 to lookback

	    if (LONG[i])
            isActiveLong := true
		    isSellLong := false

        if (CLOSE_LONG_TP[i])
	        isActiveLong := false
	        isSellLong := true

        if p[i] > p2[i]
            positive_results += 1
        else 
            negative_results -= 1 

	    positive_relative_probabilities = positive_results / lookback
	    negative_relative_probabilities = negative_results / lookback
	    positive_percentage_probabilities := positive_relative_probabilities * 100
	    negative_percentage_probabilities := negative_relative_probabilities * 100

    positive_percentage_probabilities
	
probabilities = Probabilities(look) 

lots = strategy.equity/close

var float e = 0 
var float c = 0 

tp = input.float(defval = 1.00, minval = 0, title = "Take profit: ")
sl = input.float(defval = 1.00, minval = 0, title = "Stop loss: ")

if trigger==true and strategy.opentrades==0 and probabilities >= 51
    e := close
    strategy.entry(id = "e", direction = strategy.long, qty = lots, limit = e) 
takeprofit = e + ((e * tp)/100)
stoploss = e - ((e * sl)/100)
if exit==true
    c := close 
    strategy.exit(id = "c", from_entry = "e", limit = c)
if takeprofit and stoploss 
    strategy.exit(id = "c", from_entry = "e", stop = stoploss, limit = takeprofit)

Plus de