Stratégie de suivi de tendance et de momentum EMA RSI


Date de création: 2024-03-29 16:30:42 Dernière modification: 2024-03-29 16:30:42
Copier: 0 Nombre de clics: 612
1
Suivre
1617
Abonnés

Stratégie de suivi de tendance et de momentum EMA RSI

Aperçu

La stratégie de suivi de la tendance des EMA RSI de Bybit est une stratégie de trading quantitative qui combine une moyenne mobile indicielle (EMA) et un indice relativement faible (RSI). La stratégie utilise deux périodes distinctes d’EMA pour juger de la tendance du marché, tout en utilisant l’indicateur RSI pour confirmer l’efficacité de la tendance.

Principe de stratégie

  1. Calculez les EMA rapides et les EMA lentes avec des cycles de 90 et 300 respectivement.
  2. Calculer le RSI avec une période de 5 ◦
  3. Un signal de coupe est généré lorsque l’EMA rapide traverse l’EMA lente et que le RSI est inférieur à 45; un signal de coupe est généré lorsque l’EMA lente traverse l’EMA rapide et que le RSI est supérieur à 85.
  4. Les frais de traitement varient selon le niveau du compte Bybit, allant de 0,075% pour le VIP 0 à 0,035% pour le VIP 4.
  5. Le prix d’ouverture est calculé avec les frais de transaction.
  6. Le prix d’arrêt et le prix d’arrêt-perte sont calculés en fonction du pourcentage d’arrêt-perte (5% et 3%) défini.
  7. Tracez le prix d’ouverture, le stop loss et le stop loss sur le graphique.
  8. Opération d’ouverture d’une position sur la base d’un signal de négociation

Avantages stratégiques

  1. Le suivi des tendances et les indicateurs de dynamique permettent de mieux saisir les tendances du marché.
  2. La fonction d’arrêt de perte de freinage intégrée permet de contrôler efficacement les risques.
  3. Les frais de traitement sont réglés selon le niveau de compte de Bybit et s’adaptent aux conditions de transaction des différents utilisateurs.
  4. Le prix d’ouverture, le stop loss et le stop loss sont tracés sur le graphique, ce qui fournit une confirmation intuitive du signal de transaction.

Risque stratégique

  1. Le choix des paramètres EMA et RSI peut ne pas s’appliquer à tous les environnements de marché et doit être optimisé en fonction de la situation réelle.
  2. Cette stratégie peut générer des signaux de trading fréquents et entraîner des coûts de transaction élevés dans les marchés en crise.
  3. Les réglages de stop loss peuvent être trop conservateurs ou radicaux et doivent être adaptés en fonction des préférences de risque individuelles.

Orientation de l’optimisation de la stratégie

  1. Les paramètres de l’EMA et du RSI sont optimisés pour s’adapter à différents environnements de marché. Les meilleures combinaisons de paramètres peuvent être recherchées à l’aide de retours et de scans de paramètres.
  2. L’introduction d’autres indicateurs techniques, tels que les bandes de Brin, le MACD, etc., pour améliorer la précision des signaux de négociation.
  3. Optimiser les paramètres de stop-loss, par exemple en utilisant un stop-loss mobile ou un stop-loss dynamique, pour mieux protéger les bénéfices et contrôler les risques.
  4. Il faut tenir compte de facteurs tels que la volatilité du marché et le volume des transactions, filtrer les signaux de transaction et réduire les coûts liés à la fréquence des transactions.

Résumer

La stratégie de suivi de tendance et de dynamique de Bybit EMA RSI est une stratégie de trading quantitative qui combine le suivi de tendance et les indicateurs de dynamique. Grâce à l’utilisation conjointe de l’EMA et du RSI, les tendances du marché peuvent être mieux capturées. La stratégie intègre une fonction de stop-loss et une fonction de mise en place de frais de commission en fonction du niveau du compte Bybit, ce qui permet de contrôler efficacement les risques et d’adapter les différentes conditions de négociation des utilisateurs.

Code source de la stratégie
/*backtest
start: 2024-03-21 00:00:00
end: 2024-03-28 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @BryanAaron

//@version=5
strategy("Bybit EMA RSI Strategy", overlay=true)

// Input parameters
fastLength = input(90, title="Fast EMA Length")
slowLength = input(300, title="Slow EMA Length")
rsiLength = input(5, title="RSI Length")
rsiUpperThreshold = input(85, title="RSI Upper Threshold")
rsiLowerThreshold = input(45, title="RSI Lower Threshold")
takeProfitPerc = input(5, title="Take Profit %")
stopLossPerc = input(3, title="Stop Loss %")
bybitAccountLevel = input.string("VIP 0", title="Bybit Account Level", options=["VIP 0", "VIP 1", "VIP 2", "VIP 3", "VIP 4"])

// Calculate moving averages
fastMA = ta.ema(close, fastLength)
slowMA = ta.ema(close, slowLength)

// Calculate RSI
rsi = ta.rsi(close, rsiLength)

// Trading conditions
longCondition = (fastMA > slowMA) and (rsi < rsiLowerThreshold)
shortCondition = (fastMA < slowMA) and (rsi > rsiUpperThreshold)

// Set commission based on Bybit account level
commissionPerc = switch bybitAccountLevel
    "VIP 0" => 0.075
    "VIP 1" => 0.065
    "VIP 2" => 0.055
    "VIP 3" => 0.045
    "VIP 4" => 0.035
    => 0.075

// Calculate entry prices with commission
var float longEntryPrice = na
var float shortEntryPrice = na

longEntryPriceWithCommission = close * (1 + commissionPerc / 100)
shortEntryPriceWithCommission = close * (1 - commissionPerc / 100)

// Calculate take profit and stop loss prices
takeProfitPrice(entryPrice) => entryPrice * (1 + takeProfitPerc / 100)
stopLossPrice(entryPrice) => entryPrice * (1 - stopLossPerc / 100)

// Plot entry prices
plotchar(longCondition, title="Long Entry Price", char="LE", location=location.belowbar, color=color.green)
plotchar(shortCondition, title="Short Entry Price", char="SE", location=location.abovebar, color=color.red)

// Draw position on the chart
longColor = color.green
shortColor = color.red
profitColor = color.new(color.green, 80)
lossColor = color.new(color.red, 80)

plotshape(longCondition and strategy.position_size > 0, title="Long Position", text="Long", location=location.belowbar, style=shape.labelup, size=size.small, color=longColor, textcolor=color.white)
plotshape(shortCondition and strategy.position_size < 0, title="Short Position", text="Short", location=location.abovebar, style=shape.labeldown, size=size.small, color=shortColor, textcolor=color.white)

if (strategy.position_size > 0)
    line.new(bar_index, longEntryPrice, bar_index + 1, longEntryPrice, color=longColor, width=2)
    
    longProfitLine = line.new(bar_index, takeProfitPrice(longEntryPrice), bar_index + 1, takeProfitPrice(longEntryPrice), color=profitColor, width=1)
    longLossLine = line.new(bar_index, stopLossPrice(longEntryPrice), bar_index + 1, stopLossPrice(longEntryPrice), color=lossColor, width=1)
    

else if (strategy.position_size < 0)
    line.new(bar_index, shortEntryPrice, bar_index + 1, shortEntryPrice, color=shortColor, width=2)
    
    shortProfitLine = line.new(bar_index, stopLossPrice(shortEntryPrice), bar_index + 1, stopLossPrice(shortEntryPrice), color=profitColor, width=1)
    shortLossLine = line.new(bar_index, takeProfitPrice(shortEntryPrice), bar_index + 1, takeProfitPrice(shortEntryPrice), color=lossColor, width=1)
    


// Entry
if (longCondition)
    strategy.entry("Long", strategy.long)
    longEntryPrice := longEntryPriceWithCommission
else if (shortCondition)
    strategy.entry("Short", strategy.short)
    shortEntryPrice := shortEntryPriceWithCommission