
La stratégie est basée sur la capacité à identifier en temps réel les hauts et les bas des mouvements, en simulant la façon dont les traders artificiels ajustent constamment leur analyse au cours de l’évolution du graphique. Le système émet un signal d’achat lorsqu’il détecte de nouveaux bas mouvementés et un signal de vente lorsque de nouveaux hauts mouvementés apparaissent, tout en mettant en œuvre un mécanisme de refroidissement pour éviter les transactions excessives. De plus, la stratégie est équipée d’un pourcentage de stop-loss et de profit qui peut être réglé, ce qui aide les traders à gérer efficacement leurs risques.
La stratégie fonctionne selon les principes clés suivants:
Mécanisme de détection des points de basculement: Stratégie utilisant la longueur de rétroaction définie par l’utilisateur (swingLen) pour identifier les hauts et les bas de swing non confirmés en temps réel.ta.highestbarsetta.lowestbarsLa fonction permet au système de déterminer si le prix actuel constitue le plus haut ou le plus bas point d’une période donnée. Cette méthode permet à la stratégie de “redessiner” son analyse, comme le ferait un trader artificiel, en s’adaptant à l’apparition de nouvelles données de prix.
Logistique d’entrée:
Stratégie de sortie: La stratégie utilise les pourcentages de stop (TP) et stop (SL) prédéfinis pour gérer le risque. Pour les lots, le stop est défini comme prix d’entrée (1+tp_pct), le stop est défini comme prix d’entrée (1-sl_pct). Pour les lots vides, le stop est défini comme prix d’entrée (1-tp_pct), le stop est défini comme prix d’entrée (1+sl_pct).
Tendances et contextePar défaut, l’EMA à 50 cycles est utilisé, ce qui aide à déterminer la direction générale du marché et fournit des conditions de filtrage supplémentaires pour les décisions de négociation.
Ligne de tendance en temps réel: La stratégie trace une ligne de tendance à partir des hauts et des bas de fluctuation les plus récents détectés vers le prix actuel, fournissant une confirmation visuelle de la tendance des prix. La ligne de tendance est automatiquement mise à jour lorsque de nouveaux points de fluctuation se forment.
En analysant le code en profondeur, cette stratégie présente les avantages suivants:
Très adaptableLa stratégie est capable de s’adapter aux changements du marché en temps réel grâce à un mécanisme de refonte, qui simule le processus de pensée dynamique des traders manuels. Cela lui permet de conserver une certaine adaptabilité dans différentes conditions de marché.
Signaux de négociation visuelsLes stratégies fournissent un retour visuel clair à travers des marqueurs graphiques clairs (tels que des triangles et des cercles) et des lignes de tendance, permettant aux traders de comprendre intuitivement la dynamique du marché et les points de génération de signaux.
Une gestion des risques souple: L’utilisateur peut ajuster le stop-loss et le stop-loss pourcentage en fonction de ses préférences en matière de risque, ce qui lui permet d’adopter une stratégie de gestion des risques personnalisée.
Une protection excessive contre les transactionsLe mécanisme de la période de refroidissement empêche efficacement le système de produire trop de signaux en peu de temps, réduisant ainsi les transactions inutiles causées par le bruit du marché.
Vérification multidimensionnelle: Combiné à la détection des points de basculement et au filtrage des tendances EMA, il offre une confirmation de transaction à plusieurs niveaux, ce qui améliore la qualité du signal.
Convient aux transactions à court ou moyen termeLa stratégie est particulièrement adaptée aux traders d’action de prix sur des graphiques de 5 minutes à 1 heure, et est parfaitement adaptée aux transactions manuelles nécessitant une analyse en temps réel et une confirmation visuelle.
Bien que cette stratégie présente de nombreux avantages, elle comporte les risques suivants:
Problème de redessineLes points de basculement étant calculés sur la base des données actuellement disponibles, les résultats de retracement peuvent montrer des signaux historiques “parfaits” qui peuvent ne pas s’être encore formés ou avoir une apparence différente dans les transactions en temps réel.
Risque de choc sur le marché: Dans un marché turbulent, les stratégies peuvent générer des hauts et des bas fluctuants fréquents, ce qui peut conduire à des transactions excessives et à des arrêts de pertes continues, même avec un mécanisme de période de refroidissement.
Un retour en arrière retardéLa stratégie repose sur l’identification des points de basculement des données historiques, qui peuvent être lents à réagir en cas de revers brusque de la tendance, entraînant des retards d’entrée ou des opportunités manquées.
Paramètre SensibilitéLa performance de la stratégie est fortement dépendante des paramètres (longueur d’oscillation, cycle EMA et période de refroidissement), et des paramètres inappropriés peuvent entraîner une suradaptation ou une baisse de la qualité du signal.
Pourcentage de risque fixeLa stratégie utilise des arrêts et des arrêts à pourcentage fixe, sans tenir compte des variations de la volatilité du marché, ce qui peut entraîner un déclenchement prématuré des arrêts pendant les périodes de forte volatilité et un objectif trop éloigné pendant les périodes de faible volatilité.
Sur la base d’une analyse approfondie du code, voici les principales directions dans lesquelles cette stratégie peut être optimisée:
Paramètres d’adaptation: transformer la longueur d’oscillation fixe et le cycle EMA en paramètres dynamiques qui s’ajustent automatiquement en fonction de la volatilité du marché. Par exemple, l’ATR (Average True Range) peut être utilisé pour ajuster la sensibilité de la détection des oscillations, en augmentant la longueur d’oscillation lorsque la volatilité est élevée.
Filtrage de la force de la tendanceIntroduction d’indicateurs de force de tendance (comme l’ADX) qui permettent d’effectuer des transactions conformes à la direction de la tendance uniquement lorsque la tendance est suffisamment forte pour éviter les transactions excessives dans des marchés faibles ou en crise.
Analyse de plusieurs périodesL’objectif est d’intégrer des informations sur les tendances des périodes plus longues, de s’assurer que la direction des transactions est cohérente avec les tendances plus larges et d’améliorer les taux de réussite.
Gestion des risques basée sur la volatilité: le remplacement des pourcentages fixes par des stop-loss et des stop-loss dynamiques basés sur l’ATR rend la gestion des risques plus adaptée aux conditions actuelles du marché.
Optimisation de l’entrée: ajouter des conditions supplémentaires d’entrée, telles que la position relative du prix par rapport à l’EMA, la confirmation de la quantité de transaction ou le signal d’indicateur de dynamique, pour améliorer la qualité de l’entrée.
Notes de qualité du signal: développer un système de notation qui évalue chaque signal en fonction de plusieurs facteurs (tels que la clarté des points d’oscillation, la distance par rapport à l’EMA, les mouvements de prix récents, etc.) et n’effectue que des transactions avec des signaux de qualité.
La stratégie de trading oscillant en temps réel représente une méthode d’analyse technique innovante qui fournit des outils précieux aux traders à court et moyen terme en identifiant dynamiquement les hauts et les bas des oscillations, combinés à un filtrage des tendances EMA et à des commentaires visuels clairs. Son plus grand avantage réside dans sa capacité à simuler le processus de décision dynamique des traders manuels, tout en offrant un cadre de gestion des risques rigoureux.
Cependant, la nature de la redéfinition de la stratégie comporte également le risque que les résultats de la rétroaction ne soient pas conformes à la performance des transactions réelles. Afin de maximiser le potentiel de la stratégie, les traders devraient envisager d’adopter les recommandations d’optimisation ci-dessus, en particulier les paramètres d’adaptation et la gestion des risques basés sur la volatilité, afin d’améliorer leur adaptabilité dans différentes conditions de marché.
Dans l’ensemble, la stratégie est idéale pour les traders qui préfèrent les transactions sur les prix, la confirmation visuelle et l’analyse en temps réel. Avec un ajustement approprié des paramètres et une gestion des risques, elle peut être un outil efficace pour capturer les fluctuations du marché à court et moyen terme.
/*backtest
start: 2024-05-13 00:00:00
end: 2025-05-11 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/
//@version=6
strategy("Live Repainting Swing Strategy (Trendlines + EMA)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// === Inputs ===
swingLen = input.int(20, title="Swing Length")
cooldownBars = input.int(10, title="Min Bars Between Swing Signals")
emaLength = input.int(50, title="EMA Length")
sl_pct = input.float(1.0, title="Stop Loss (%)") / 100
tp_pct = input.float(2.0, title="Take Profit (%)") / 100
// === Indicators
ema = ta.ema(close, emaLength)
plot(ema, color=color.orange, title="EMA")
// === Live (repainting) swing detection
isSwingHigh = ta.highestbars(high, swingLen) == 0
isSwingLow = ta.lowestbars(low, swingLen) == 0
// === Cooldown logic
var int lastSignalBar = na
canTrigger = na(lastSignalBar) or (bar_index - lastSignalBar > cooldownBars)
buySignal = isSwingLow and canTrigger
sellSignal = isSwingHigh and canTrigger
if buySignal or sellSignal
lastSignalBar := bar_index
// === Orders
if buySignal
strategy.entry("BUY", strategy.long)
if sellSignal
strategy.entry("SELL", strategy.short)
// === TP/SL Levels
tpLong = strategy.position_avg_price * (1 + tp_pct)
slLong = strategy.position_avg_price * (1 - sl_pct)
tpShort = strategy.position_avg_price * (1 - tp_pct)
slShort = strategy.position_avg_price * (1 + sl_pct)
strategy.exit("TP/SL BUY", from_entry="BUY", limit=tpLong, stop=slLong)
strategy.exit("TP/SL SELL", from_entry="SELL", limit=tpShort, stop=slShort)
// === TP Hit Detection
tpHitLong = strategy.position_size > 0 and high >= tpLong
tpHitShort = strategy.position_size < 0 and low <= tpShort
// === Clean Markers (No text)
plotshape(buySignal, location=location.belowbar, style=shape.triangleup, color=color.green, size=size.small)
plotshape(sellSignal, location=location.abovebar, style=shape.triangledown, color=color.red, size=size.small)
plotshape(tpHitLong, location=location.abovebar, style=shape.circle, color=color.lime, size=size.tiny)
plotshape(tpHitShort, location=location.belowbar, style=shape.circle, color=color.orange, size=size.tiny)
// === Live Trendlines from last swing high/low
var float lastSwingLow = na
var float lastSwingHigh = na
var int lastLowBar = na
var int lastHighBar = na
if isSwingLow
lastSwingLow := low
lastLowBar := bar_index
if isSwingHigh
lastSwingHigh := high
lastHighBar := bar_index
var line lowTrend = na
var line highTrend = na