Stratégie de suivi des tendances à indicateurs techniques multiples combinée à une percée dans le graphique en nuage et à un système de stop loss

RSI MA SMA EMA
Date de création: 2024-11-28 15:13:23 Dernière modification: 2024-11-28 15:13:23
Copier: 0 Nombre de clics: 484
1
Suivre
1617
Abonnés

Stratégie de suivi des tendances à indicateurs techniques multiples combinée à une percée dans le graphique en nuage et à un système de stop loss

Aperçu

La stratégie est un système de négociation complet combinant une série d’indicateurs techniques, principalement basé sur les indicateurs de l’Ichimoku Cloud. Le système détermine le moment d’entrée en jeu par la croisée de l’antenne Tenkan et de la ligne de référence Kijun, tout en combinant l’indice relativement faible RSI et la moyenne mobile MA comme conditions de filtrage auxiliaires. La stratégie utilise le composant de la nuée comme point d’arrêt dynamique, formant un système complet de contrôle des risques.

Principe de stratégie

La logique fondamentale de la stratégie repose sur les éléments clés suivants :

  1. Le signal d’entrée est généré par la croisée de l’antenne et de la ligne de référence, la traversée supérieure forme un signal multiple, la traversée inférieure forme un signal de vide
  2. La relation entre la position du prix par rapport au nuage (Kumo) et la confirmation de tendance, le prix étant plus élevé au-dessus du nuage et moins élevé en dessous.
  3. La relation entre la position des moyennes mobiles de 50 et 200 jours comme condition de filtrage de tendance
  4. L’indicateur RSI périphérique confirme la faiblesse du marché et filtre les fausses signaux
  5. Utilisation de la limite supérieure et inférieure de la couche nuageuse comme position d’arrêt dynamique pour la gestion dynamique du risque

Avantages stratégiques

  1. La combinaison de plusieurs indicateurs techniques fournit des signaux de trading plus fiables et réduit considérablement l’impact des faux signaux.
  2. L’utilisation d’un diagramme de nuage comme point de stop dynamique, capable d’ajuster automatiquement la position de stop en fonction des fluctuations du marché, protège les bénéfices et donne suffisamment de marge de manœuvre au prix
  3. Le filtrage du RSI en périphérie permet d’éviter les transactions défavorables dans les zones de survente et de surachat
  4. Le croisement des moyennes mobiles fournit une confirmation supplémentaire de la tendance et augmente le taux de réussite des transactions
  5. Système complet de contrôle des risques, comprenant les étapes d’entrée, de détention et de sortie

Risque stratégique

  1. Le filtrage sur plusieurs indicateurs peut vous faire rater des opportunités potentielles
  2. De faux signaux de rupture fréquents peuvent se produire sur un marché volatil
  3. L’indicateur de Cloud Graph est lui-même un peu en retard, ce qui peut affecter le temps d’entrée.
  4. Dans un marché en évolution rapide, les stop-loss dynamiques peuvent être trop relâchés.
  5. Les conditions de filtrage excessives peuvent entraîner une diminution des opportunités de négociation, affectant les gains globaux de la stratégie.

Orientation de l’optimisation de la stratégie

  1. Introduction d’indicateurs de volatilité qui permettent d’ajuster les paramètres stratégiques en fonction des fluctuations du marché
  2. Optimisation des paramètres du diagramme de nuages pour les rendre plus adaptés aux différents environnements de marché
  3. Augmentation de l’analyse du volume des transactions et de la fiabilité des signaux
  4. Introduction d’un mécanisme de filtrage temporel pour éviter les périodes de plus grande volatilité
  5. Développer un système d’optimisation des paramètres adaptatif pour une adaptation dynamique des stratégies

Résumer

La stratégie a été conçue en combinant plusieurs indicateurs techniques pour construire un système de trading complet. La stratégie ne se concentre pas seulement sur la génération de signaux, mais comprend également un mécanisme de contrôle du risque parfait.

Code source de la stratégie
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Ichimoku Strategy with Optional RSI, MA Filters and Alerts", overlay=true)

// Input for date and time filter
startDate = input(timestamp("2020-01-01 00:00"), title="Start Date")
endDate = input(timestamp("2023-01-01 00:00"), title="End Date")

// Inputs for Ichimoku settings
tenkanPeriod = input.int(9, title="Tenkan Period")
kijunPeriod = input.int(26, title="Kijun Period")
senkouBPeriod = input.int(52, title="Senkou B Period")

// Inputs for Moving Average settings
useMAFilter = input.bool(true, title="Enable Moving Average Filter?")
ma50Period = input.int(50, title="50-day MA Period")
ma200Period = input.int(200, title="200-day MA Period")

// Inputs for RSI settings
useRSIFilter = input.bool(true, title="Enable RSI Filter?")
rsiPeriod = input.int(14, title="RSI Period")
rsiOverbought = input.int(70, title="RSI Overbought Level")
rsiOversold = input.int(30, title="RSI Oversold Level")

// Ichimoku Cloud components
tenkan = (ta.highest(high, tenkanPeriod) + ta.lowest(low, tenkanPeriod)) / 2
kijun = (ta.highest(high, kijunPeriod) + ta.lowest(low, kijunPeriod)) / 2
senkouA = ta.sma(tenkan + kijun, 2) / 2
senkouB = (ta.highest(high, senkouBPeriod) + ta.lowest(low, senkouBPeriod)) / 2
chikou = close[26]

// Moving Averages
ma50 = ta.sma(close, ma50Period)
ma200 = ta.sma(close, ma200Period)

// Weekly RSI
rsiSource = request.security(syminfo.tickerid, "W", ta.rsi(close, rsiPeriod))

// Plotting the Ichimoku Cloud components
pTenkan = plot(tenkan, color=color.blue, title="Tenkan")
pKijun = plot(kijun, color=color.red, title="Kijun")
pSenkouA = plot(senkouA, color=color.green, title="Senkou A")
pSenkouB = plot(senkouB, color=color.maroon, title="Senkou B")
plot(chikou, color=color.purple, title="Chikou")
plot(ma50, color=color.orange, title="50-day MA")
plot(ma200, color=color.yellow, title="200-day MA")

// Corrected fill function
fill(pSenkouA, pSenkouB, color=senkouA > senkouB ? color.green : color.red, transp=90)

// Debugging: Output values on the chart to see if conditions are ever met
plotshape(series=(tenkan > kijun), color=color.blue, style=shape.triangleup, title="Tenkan > Kijun")
plotshape(series=(tenkan < kijun), color=color.red, style=shape.triangledown, title="Tenkan < Kijun")
plotshape(series=(ma50 > ma200), color=color.orange, style=shape.labelup, title="MA 50 > MA 200")
plotshape(series=(ma50 < ma200), color=color.yellow, style=shape.labeldown, title="MA 50 < MA 200")

// Define the trailing stop loss using Kumo
var float trailingStopLoss = na

// Check for MA conditions (apply only if enabled)
maConditionLong = not useMAFilter or (useMAFilter and ma50 > ma200)
maConditionShort = not useMAFilter or (useMAFilter and ma50 < ma200)

// Check for Ichimoku Cloud conditions
ichimokuLongCondition = close > math.max(senkouA, senkouB)
ichimokuShortCondition = close < math.min(senkouA, senkouB)

// Check for RSI conditions (apply only if enabled)
rsiConditionLong = not useRSIFilter or (useRSIFilter and rsiSource > rsiOverbought)
rsiConditionShort = not useRSIFilter or (useRSIFilter and rsiSource < rsiOversold)

// Combine conditions for entry
longCondition = maConditionLong and tenkan > kijun and ichimokuLongCondition and rsiConditionLong
shortCondition = maConditionShort and tenkan < kijun and ichimokuShortCondition and rsiConditionShort

// Date and time filter
withinDateRange = true

// Check for Long Condition
if (longCondition and withinDateRange) 
    strategy.entry("Long", strategy.long)
    trailingStopLoss := math.min(senkouA, senkouB)
    alert("Buy Signal: Entering Long Position", alert.freq_once_per_bar_close)

// Check for Short Condition
if (shortCondition and withinDateRange) 
    strategy.entry("Short", strategy.short)
    trailingStopLoss := math.max(senkouA, senkouB)
    alert("Sell Signal: Entering Short Position", alert.freq_once_per_bar_close)

// Exit conditions
exitLongCondition = close < kijun or tenkan < kijun
exitShortCondition = close > kijun or tenkan > kijun

if (exitLongCondition and strategy.position_size > 0)
    strategy.close("Long")
    alert("Exit Signal: Closing Long Position", alert.freq_once_per_bar_close)

if (exitShortCondition and strategy.position_size < 0)
    strategy.close("Short")
    alert("Exit Signal: Closing Short Position", alert.freq_once_per_bar_close)

// Apply trailing stop loss
if (strategy.position_size > 0)
    strategy.exit("Trailing Stop Long", stop=trailingStopLoss)
else if (strategy.position_size < 0)
    strategy.exit("Trailing Stop Short", stop=trailingStopLoss)