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

RSI Stratégie de négociation intelligente dynamique de stop-loss

Auteur:ChaoZhang est là., Date: le 12 novembre 2024 à 11h39
Les étiquettes:Indice de résistanceSMAATR

img

Résumé

Cette stratégie est un système de trading stop-loss dynamique basé sur l'indicateur RSI, combinant les indicateurs SMA et ATR pour optimiser les décisions de trading.

Principes de stratégie

La stratégie utilise principalement les conditions de survente du RSI (RSI<30) comme signaux d'entrée tout en exigeant que le prix soit supérieur à la moyenne mobile de 200 jours pour assurer une tendance haussière.

  1. Conditions d'entrée: RSI inférieur à 30 et prix supérieur à SMA200
  2. Gestion des positions: 75% du capital par transaction
  3. Stop-loss: stop dynamique basé sur un ATR de 1,5x
  4. Prise de bénéfice: trois niveaux de 5%, 10%, 15%, clôture respectivement de 33%, 66% et 100%

Les avantages de la stratégie

  1. Gestion dynamique des risques: adaptation de l'ATR à la volatilité du marché
  2. Prise de bénéfices par étapes: réduit l'interférence émotionnelle et améliore la probabilité de profit
  3. Confirmation de tendance: utilise la moyenne mobile pour filtrer les faux signaux
  4. Gestion de trésorerie: dimensionnement des positions en pourcentage pour les différentes tailles de comptes
  5. Optimisation de la Commission: prise en compte des coûts commerciaux pour la mise en œuvre pratique

Risques stratégiques

  1. Le décalage moyen mobile peut retarder les entrées
  2. Le survente de l'indice de rentabilité ne garantit pas un renversement
  3. Les positions de grande taille peuvent entraîner des retraits importants
  4. Les sorties partielles fréquentes peuvent augmenter les coûts de négociation Ces risques peuvent être gérés par des ajustements de paramètres et des filtres supplémentaires.

Directions d'optimisation

  1. Ajouter des signaux de confirmation de volume
  2. Incorporer des indicateurs de force de tendance
  3. Optimiser les ratios de prise de profit
  4. Ajouter des filtres de temps
  5. Considérer la dimension de position adaptée à la volatilité

Résumé

Cette stratégie combine des indicateurs techniques avec une gestion dynamique des risques pour créer un système de négociation complet. Ses atouts résident dans l'adaptabilité et le risque contrôlé, bien que l'optimisation des paramètres basée sur les conditions du marché soit toujours nécessaire.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-11 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA/4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © wielkieef

//@version=5
strategy("Simple RSI stock Strategy [1D] ", overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=75, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.03)

// Rsi
oversoldLevel = input(30, title="Oversold Level")
overboughtLevel = input(70, title="Overbought Level")
rsi = ta.rsi(close, 5)
rsi_overbought = rsi > overboughtLevel  
rsi_oversold = rsi < oversoldLevel

// Sma 200
lenghtSMA = input(200, title = "SMA lenght")
sma200 = ta.sma(close, lenghtSMA)

// ATR stop-loss
atrLength = input.int(20, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Multiplier")
atrValue = ta.atr(atrLength)
var float long_stop_level = na
var float short_stop_level = na
var float tp1_level = na
var float tp2_level = na
var float tp3_level = na

// Strategy entry
long = (rsi_oversold ) and close > sma200 

// Take Profit levels
tp_1 = input.float(5.0, "TP 1", minval=0.1, step=0.1)
tp_2 = input.float(10.0, "TP 2", minval=0.2, step=0.1)
tp_3 = input.float(15.0, "TP 3", minval=0.3, step=0.1)

if long
    strategy.entry('Long', strategy.long)
    long_stop_level := close - atrMultiplier * atrValue
    tp1_level := strategy.position_avg_price * (1 + tp_1 / 100)
    tp2_level := strategy.position_avg_price * (1 + tp_2 / 100)
    tp3_level := strategy.position_avg_price * (1 + tp_3 / 100)

// basic SL - this code is from author RafaelZioni, modified by wielkieef
sl = input.float(25.0, 'Basic Stop Loss %', step=0.1)
per(procent) =>
    strategy.position_size != 0 ? math.round(procent / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)

// ATR SL
if (strategy.position_size > 0 and (close <= long_stop_level))
    strategy.close("Long")
    tp1_level := na
    tp2_level := na
    tp3_level := na
plot(long_stop_level, color=color.orange, linewidth=2, title="Long Stop Loss")

// TP levels
if (strategy.position_size > 0)
    if (not na(tp1_level) and close >= tp1_level)
        tp1_level := na
    if (not na(tp2_level) and close >= tp2_level)
        tp2_level := na
    if (not na(tp3_level) and close >= tp3_level)
        tp3_level := na

plot(strategy.position_size > 0 and not na(tp1_level) ? tp1_level : na, color=color.gray, style=plot.style_circles , linewidth=1, title="Take Profit 1")
plot(strategy.position_size > 0 and not na(tp2_level) ? tp2_level : na, color=color.gray, style=plot.style_circles , linewidth=1, title="Take Profit 2")
plot(strategy.position_size > 0 and not na(tp3_level) ? tp3_level : na, color=color.gray, style=plot.style_circles , linewidth=1, title="Take Profit 3")

// Strategy exit points for Take Profits
strategy.exit('TP 1', from_entry="Long", qty_percent=33, profit=per(tp_1), loss=per(sl))
strategy.exit('TP 2', from_entry="Long", qty_percent=66, profit=per(tp_2), loss=per(sl))
strategy.exit('TP 3', from_entry="Long", qty_percent=100, profit=per(tp_3), loss=per(sl))

// by wielkieef

Relationnée

Plus de