Stratégie d'ajout de position dynamique basée sur le RSI


Date de création: 2024-02-06 09:44:05 Dernière modification: 2024-02-06 09:44:05
Copier: 1 Nombre de clics: 727
1
Suivre
1617
Abonnés

Stratégie d’ajout de position dynamique basée sur le RSI

Aperçu

Cette stratégie combine l’indice de relative faiblesse (RSI) et le principe de l’hypothèque de Martingale. Le premier achat et l’ouverture d’une position sont effectués lorsque le RSI est inférieur à la ligne de dépassement.

Principe de stratégie

  1. L’indicateur RSI est utilisé pour juger si le marché est en survente, le RSI étant réglé sur 14 et le seuil de survente sur 30.
  2. Lorsque le RSI est inférieur ou égal à 30, il est préférable d’ouvrir une position initiale avec 5% du capital du compte.
  3. Si le prix baisse de 0,5% par rapport au prix d’entrée initial, il est possible d’augmenter la position de 2 fois; si le prix continue de baisser, il est possible de réaugmenter la position de 4 fois.
  4. Chaque hausse de 0,5% est compensée par un arrêt des bénéfices.
  5. Répétez les étapes ci-dessus pour effectuer une transaction circulaire.

Analyse des avantages

  • Le RSI peut être utilisé pour juger si le marché est en survente, ou pour prendre une position plus élevée à un niveau relativement bas.
  • Le prix moyen d’un dépôt sur la base de l’augmentation de la marge de Martingale pourrait être de plus en plus bas.
  • Un petit arrêt peut générer des bénéfices stables et durables.
  • Le risque est maîtrisé pour les transactions en espèces dans les devises à forte valeur marchande.

Analyse des risques

  • Les pertes de détention pourraient s’accentuer si la tendance se prolonge.
  • Il n’y a pas de paramètre de stop-loss et il n’y a pas de limite à la perte maximale.
  • Le nombre excessif de mises en dépôt peut aussi aggraver les pertes.
  • Il y a toujours un risque élevé que la baisse se poursuive avec des transactions dans plusieurs directions.

Optimisation de la stratégie

  1. Il est possible de définir des points de stop-loss pour limiter les pertes maximales.
  2. Optimiser les paramètres du RSI pour trouver le meilleur signal de survente et de survente.
  3. Il est possible de définir des limites raisonnables en fonction de la volatilité d’une devise donnée.
  4. La marge d’acquisition peut être définie en fonction de l’actif total ou de la proportion de positions individuelles.

Résumer

Cette stratégie, combinée à l’indicateur RSI et au principe d’hypothèque de Martingale, consiste à prendre des positions plus élevées lorsque l’on dépasse le point de vente et à tirer profit d’un petit stop-loss. Elle permet d’obtenir des gains stables et durables, mais elle comporte également un certain risque.

Code source de la stratégie
/*backtest
start: 2024-01-06 00:00:00
end: 2024-02-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Stavolt

//@version=5
strategy("RSI Martingale Strategy", overlay=true, default_qty_type=strategy.cash, currency=currency.USD)

// Inputs
rsiLength = input(14, title="RSI Length")
oversoldThreshold = input(30, title="Oversold Threshold") // Keeping RSI threshold
profitTargetPercent = input(0.5, title="Profit Target (%)") / 100
initialInvestmentPercent = input(5, title="Initial Investment % of Equity")

// Calculating RSI
rsiValue = ta.rsi(close, rsiLength)

// State variables for tracking the initial entry
var float initialEntryPrice = na
var int multiplier = 1

// Entry condition based on RSI
if (rsiValue < oversoldThreshold and na(initialEntryPrice))
    initialEntryPrice := close
    strategy.entry("Initial Buy", strategy.long, qty=(strategy.equity * initialInvestmentPercent / 100) / close)
    multiplier := 1

// Adjusting for errors and simplifying the Martingale logic
// Note: This section simplifies the aggressive position size adjustments without loops
if (not na(initialEntryPrice))
    if (close < initialEntryPrice * 0.995) // 0.5% drop from initial entry
        strategy.entry("Martingale Buy 1", strategy.long, qty=((strategy.equity * initialInvestmentPercent / 100) / close) * 2)
        multiplier := 2 // Adjusting multiplier for the next potential entry

    if (close < initialEntryPrice * 0.990) // Further drop
        strategy.entry("Martingale Buy 2", strategy.long, qty=((strategy.equity * initialInvestmentPercent / 100) / close) * 4)
        multiplier := 4

    // Additional conditional entries could follow the same pattern

// Checking for profit target to close positions
if (strategy.position_size > 0 and (close - strategy.position_avg_price) / strategy.position_avg_price >= profitTargetPercent)
    strategy.close_all(comment="Take Profit")
    initialEntryPrice := na // Reset for next cycle