
La stratégie de négociation en synchronisation avec les indicateurs binaires est un système de négociation quantitative basé sur l’analyse technique qui combine habilement les avantages d’un indicateur relativement faible (RSI) et d’un indicateur de dispersion de la convergence des moyennes mobiles (MACD) et se concentre sur la capture d’une forte tendance à la hausse sur le marché. La stratégie ne fait que des transactions à plusieurs têtes et permet un processus de décision de négociation systématisé en identifiant les signaux de rupture dynamiques et en associant un mécanisme de gestion des risques.
Le fonctionnement de la stratégie est basé sur la synergie de deux indicateurs techniques clés. Premièrement, la stratégie utilise l’indicateur RSI pour mesurer la vitesse et l’ampleur des variations de prix et déterminer si le marché est en survente ou en survente. Deuxièmement, l’indicateur MACD est utilisé pour identifier les variations et la force de la dynamique des tendances du marché.
Conditions d’entrée :
Conditions de filtrage supplémentaires:
Conditions de jeu:
La stratégie a conçu un mécanisme de suivi de l’état pour s’assurer que l’entrée est possible en position blanche et que la sortie est possible en position tenue, évitant ainsi le problème de la répétition du signal. Cette conception permet de ne faire qu’une seule sortie après chaque entrée, en préservant la clarté et la cohérence de la logique de négociation.
Synergie des indicateursLa combinaison des avantages des deux indicateurs RSI et MACD, le RSI étant capable de réagir rapidement aux variations de prix, tandis que le MACD peut confirmer les tendances à moyen et long terme, améliore la fiabilité du signal.
Un mécanisme de filtrage flexibleLes stratégies offrent deux mécanismes de filtrage de tendance EMA et de filtrage contextuel de survente, permettant aux traders d’adapter leur stratégie en fonction des différentes conditions du marché.
Une bonne gestion des risques: un mécanisme de stop-loss intégré qui permet aux traders de définir des paramètres de pourcentage en fonction de leurs préférences en matière de risque et de contrôler efficacement le seuil de risque d’une seule transaction.
La gestion de l’état est claire: Suivi des positions par les variables de statut, assurant la cohérence et la logique des signaux de négociation, évitant ainsi les problèmes de doubles entrées et sorties.
Haute personnalisationLa stratégie fournit plusieurs paramètres réglables, y compris la longueur du RSI, les paramètres MACD, les conditions de filtrage et les paramètres de gestion du risque, permettant aux traders d’optimiser en fonction des différentes conditions du marché et des variétés de transactions.
Aide visuelle: La stratégie fournit des fonctionnalités visuelles telles que les marqueurs d’entrée/sortie, la coloration de la ligne K et l’affichage du fond de déclenchement, afin de permettre aux traders de comprendre et d’ajuster la stratégie de manière intuitive.
Risque de fausse percée: Dans les marchés en turbulence, le RSI et le MACD peuvent générer de fréquents signaux de fausses ruptures, entraînant des transactions à perte continues. Pour atténuer ce risque, des filtres supplémentaires sur l’environnement du marché peuvent être ajoutés, tels qu’un indicateur de volatilité ou un indicateur de force de tendance.
Limitation des échanges unidirectionnels: Cette stratégie exécute uniquement des trades à plusieurs têtes, ce qui laisse passer des opportunités potentielles de dépréciation dans une tendance baissière. Dans un système de négociation complet, il est possible d’envisager d’ajouter une stratégie à tête blanche correspondante ou de suspendre la négociation dans une tendance baissière évidente.
Paramètre SensibilitéLes performances stratégiques sont sensibles aux paramètres, et différents marchés et périodes de temps peuvent nécessiter des combinaisons de paramètres différentes. Il est recommandé d’optimiser les paramètres en testant en arrière plusieurs conditions de marché et d’envisager d’utiliser une méthode de paramètres adaptatifs.
Réservation de risqueUn stop trop petit peut entraîner un déclenchement trop fréquent, un stop trop grand peut entraîner une perte trop importante. Le pourcentage de stop doit être ajusté en fonction de la volatilité du marché cible, ou envisager d’utiliser une méthode de stop dynamique telle que le multiplicateur ATR.
Rarité du signal: En tant qu’indicateurs en retard, les signaux du RSI et du MACD peuvent apparaître après que le prix a déjà changé de manière significative, affectant le prix d’entrée et le taux de rendement.
Système de paramètres adaptatifsDévelopper un mécanisme d’ajustement des paramètres d’adaptation basé sur la volatilité du marché ou la force de la tendance, permettant aux paramètres du RSI et du MACD d’être automatiquement optimisés en fonction des conditions actuelles du marché, améliorant ainsi l’adaptabilité des stratégies dans différents environnements de marché.
Analyse de plusieurs périodesIntroduction de mécanismes de confirmation de plusieurs périodes, par exemple la confirmation de la direction de la tendance dans les périodes plus longues, puis l’exécution de transactions spécifiques dans les périodes plus courtes, afin de réduire les faux signaux et d’améliorer le taux de victoire.
Système d’arrêt dynamiqueLa conversion des arrêts à pourcentage fixe en arrêts dynamiques basés sur l’ATR (Average True Range) permet de mieux s’adapter aux changements de volatilité du marché tout en protégeant les fonds et en donnant suffisamment de marge de manœuvre aux prix.
Optimisation de la gestion des fondsIntroduction d’algorithmes de gestion de position basés sur la valeur nette, la volatilité et le gain des comptes, tels que la formule de Kelly ou le modèle de risque à taux fixe, afin que la marge de risque de chaque transaction correspond à la situation actuelle du compte et aux conditions du marché.
Filtres intégrés au marché: Ajout de filtres permettant d’identifier l’environnement du marché (tendance, oscillation ou retournement), tels que l’ADX (indice de direction moyenne), un indicateur de volatilité ou un outil d’analyse cyclique, pour effectuer des transactions dans des conditions de marché adaptées à la stratégie.
Ajout de logique de négociation à vide: Stratégie d’extension pour inclure les règles de trading à vide, afin qu’elles soient tout aussi efficaces dans les tendances baissières, et ainsi construire un système de trading complet.
La stratégie de négociation en synchronisation de deux indicateurs dynamiques, combinant les avantages de deux indicateurs techniques classiques, le RSI et le MACD, pour créer un système de négociation quantitative avec une clarté logique et un risque contrôlable. La stratégie est axée sur la capture d’opportunités dynamiques de tendance à la hausse, tout en améliorant la qualité des transactions grâce à des mécanismes de filtrage multiples et des outils de gestion des risques. Bien qu’il existe des risques inhérents tels que les fausses percées et la sensibilité aux paramètres, la stratégie a le potentiel d’améliorer encore sa performance dans divers environnements de marché grâce à des orientations d’optimisation recommandées telles que l’adaptation aux paramètres, l’analyse des cadres temporels multiples et la gestion des risques dynamiques.
/*backtest
start: 2025-02-28 00:00:00
end: 2025-08-10 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
// Vibe coded by Andrew Grothe 2025-08-08. Adjust the TP/SL on lines 28 & 29 to fine tune the strategy
strategy("RSI + MACD Long-Only Strategy", overlay=true, pyramiding=0, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.0)
// Inputs — RSI
rsiLen = input.int(14, "RSI Length", minval=1, group="RSI")
rsiOB = input.int(70, "RSI Overbought", minval=50, maxval=100, group="RSI")
rsiOS = input.int(30, "RSI Oversold", minval=0, maxval=50, group="RSI")
rsiMid = input.int(50, "RSI Midline", minval=0, maxval=100, group="RSI")
// Inputs — MACD
fastLen = input.int(12, "MACD Fast Length", minval=1, group="MACD")
slowLen = input.int(26, "MACD Slow Length", minval=1, group="MACD")
sigLen = input.int(9, "MACD Signal Length", minval=1, group="MACD")
requireAboveZero = input.bool(false, "Require MACD > 0 (trend filter)", group="MACD")
// Inputs — Filters & Visuals
useOversoldContext = input.bool(false, "Entry must be within N bars after RSI < Oversold", group="Signals")
oversoldWindowBars = input.int(10, "N bars after oversold", minval=1, group="Signals")
useEMATrend = input.bool(false, "Only Long if price > EMA", group="Signals")
emaLen = input.int(200, "EMA Length", minval=1, group="Signals")
showMarkers = input.bool(true, "Plot Entry/Exit Markers", group="Visuals")
colorBars = input.bool(false, "Color Bars on Signals", group="Visuals")
// Inputs — Risk
// 1 hour = 2.0/1.0, 2 hour = 10.5/2.5
useTPSL = input.bool(true, "Use Take Profit / Stop Loss", group="Risk")
tpPerc = input.float(11.5, "Take Profit %", minval=0.0, step=0.1, group="Risk")
slPerc = input.float(2.5, "Stop Loss %", minval=0.0, step=0.1, group="Risk")
// Core calculations
rsi = ta.rsi(close, rsiLen)
[macd, macdSignal, macdHist] = ta.macd(close, fastLen, slowLen, sigLen)
emaTrend = ta.ema(close, emaLen)
// Conditions
macdBull = macd > macdSignal and (not requireAboveZero or macd > 0)
rsiBull = rsi > rsiMid
recentlyOversold = ta.barssince(rsi < rsiOS) <= oversoldWindowBars
trendOk = not useEMATrend or close > emaTrend
// Precompute cross events to avoid conditional execution warnings
rsiCrossUpMid = ta.crossover(rsi, rsiMid)
macdCrossUp = ta.crossover(macd, macdSignal)
rsiCrossDownMid = ta.crossunder(rsi, rsiMid)
macdCrossDown = ta.crossunder(macd, macdSignal)
// Signals (long-only)
longTrigger = (rsiCrossUpMid and macdBull) or (macdCrossUp and rsi >= rsiMid)
longEntry = longTrigger and (not useOversoldContext or recentlyOversold) and trendOk
exitSignal = rsiCrossDownMid or (macdCrossDown and macdHist <= 0)
// Stateful gating so we only get one exit per entry
var bool inLong = false
inLongPrev = barstate.isfirst ? false : inLong[1]
finalLongEntry = longEntry and not inLongPrev
finalExit = exitSignal and inLongPrev
inLong := (inLongPrev or finalLongEntry) and not finalExit
// Plots
plot(useEMATrend ? emaTrend : na, title="EMA", color=color.orange, linewidth=2)
plotshape(showMarkers and finalLongEntry, title="Long Entry", style=shape.triangleup, location=location.belowbar, color=color.lime, size=size.tiny, text="Long")
plotshape(showMarkers and finalExit, title="Exit", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny, text="Exit")
barcolor(colorBars ? (finalLongEntry ? color.lime : finalExit ? color.red : na) : na)
// Debug background to visualize when raw long trigger occurs
bgcolor(longTrigger ? color.new(color.lime, 90) : na)
// Alerts
//alertcondition(finalLongEntry, title="RSI+MACD Long Entry", message="RSI+MACD Long Entry on {{ticker}} {{interval}} at {{close}}")
//alertcondition(finalExit, title="RSI+MACD Exit", message="RSI+MACD Exit on {{ticker}} {{interval}} at {{close}}")
// Strategy Orders — Long only
if finalLongEntry
strategy.entry("Long", strategy.long)
// Protective exits (TP/SL) while in position
if useTPSL and strategy.position_size > 0
longSL = strategy.position_avg_price * (1 - slPerc / 100.0)
longTP = strategy.position_avg_price * (1 + tpPerc / 100.0)
strategy.exit("Long TP/SL", from_entry="Long", stop=longSL, limit=longTP)
// Signal-based exit
if finalExit and strategy.position_size > 0
strategy.close("Long", comment="Signal Exit")