
La logique de base est extrêmement simple: sur l’EMA de 50 jours, faites plus, sur l’EMA de 50 jours, faites moins. Mais le diable est dans les détails. Il filtre la qualité du signal avec un système de notation de 5 points, et ne peut ouvrir une position que pendant plus de 3 minutes.
La clé réside dans le mécanisme de confirmation du signal. Il n’y a pas de valeur de négociation à chaque croisement EMA. La stratégie consiste à triplés filtrer les signaux de bruit par l’alignement de la tendance, la confirmation de la dynamique et la vérification de la transaction.
Ce système de notation est l’innovation centrale de la stratégie. Il utilise des critères de notation multi-signaux: alignement de la tendance de 2 points (prix au-dessus de l’EMA à 200 jours et ligne rapide au-dessus de la ligne lente), virage de la colonne MACD de 1 point, RSI de 1 point dans la zone 50-70, et plus d’un point de transaction de 20% au-dessus de la moyenne à 20 jours.
Les données montrent que le taux de réussite des signaux de 4 à 5 points est supérieur à 65%, mais la fréquence est plus faible, en moyenne 2 à 3 fois par mois. Le taux de réussite des signaux de 3 points est d’environ 55%, la fréquence est portée à 5 à 6 fois par mois. Le taux de réussite des signaux de 2 points est réduit à 45%, mais la fréquence est la plus élevée. C’est pourquoi le mode d’équilibre a choisi le 3 points comme seuil pour trouver le point d’équilibre optimal entre la réussite et la fréquence.
Il est important de noter que la stratégie intègre également un filtre de volatilité. La position est suspendue lorsque l’ATR est supérieur à 3% du prix. Cette conception évite les erreurs de jugement pendant les fluctuations anormales et maîtrise efficacement les pertes maximales individuelles.
Le stop loss est conçu en trois modes: ATR multiple, pourcentage fixe, et hauts et bas récents. Le stop loss ATR par défaut de 2 fois est vérifié par un grand nombre de tests de retour, ce qui permet d’éviter les stops de fluctuation normaux et d’intervenir en temps opportun lors d’un renversement de tendance. Le pourcentage fixe convient aux variétés à taux de volatilité stable, les hauts et bas récents conviennent aux marchés à forte tendance.
Le ratio de profit/déficit est fixé à 2:1, ce qui n’est pas une décision prise sur un coup de tête. Les données historiques montrent que lorsque le stop loss est fixé à 2 fois l’ATR, le gain moyen est d’environ 4 fois l’ATR. Un ratio de profit/déficit de 2:1 permet de capturer 70% des bénéfices potentiels, tout en évitant les retours de bénéfices causés par une avidité excessive.
Le contrôle du risque individuel est de 2%, ce qui signifie que 25 pertes consécutives n’entraîneraient qu’un compte à zéro (ce qui est pratiquement impossible en théorie). Même dans les pires périodes de retracement, le plus grand nombre de pertes consécutives n’a pas dépassé 6.
La stratégie démarre par défaut la confirmation de transaction et ne prend position que lorsque la transaction dépasse 20% de la moyenne des 20 jours. Cette conception est basée sur une logique simple: une véritable rupture de tendance nécessite une impulsion financière, et les percées techniques sans combinaison de transaction sont souvent des fausses.
Les données confirment ce jugement. Après l’ajout du filtrage du volume de transaction, le nombre de signaux est réduit d’environ 30%, mais le taux de victoire est augmenté de 8 à 12 points de pourcentage.
La stratégie augmente le poids du signal lorsque le volume de transactions augmente (plus de 50% de la moyenne). Cette conception capte la forte tendance à l’événementiel, dont les résultats historiques montrent un rendement moyen de plus de 40% supérieur à celui des signaux ordinaires.
Les stratégies fonctionnent mieux dans les marchés tendanciels, en particulier les retournements et les rebonds dans les tendances à la hausse ou à la baisse à moyen et long terme. Les marchés oscillants horizontaux sont les ennemis naturels des stratégies, et les chances de succès sont inférieures à 40%. Par conséquent, il est nécessaire de juger de l’environnement du marché avant de l’utiliser et d’éviter de l’utiliser aveuglément dans des oscillations à intervalles évidents.
Les cycles de temps sont recommandés au-dessus de la ligne du jour et de l’heure sont à peine disponibles, mais pas au-dessous de 15 minutes. La raison est simple: les croisements EMA sont trop bruyants sur de courtes périodes et sont difficiles à identifier efficacement, même avec un filtre de notation.
Pour la sélection des variétés, les variétés dominantes avec une bonne liquidité sont les plus efficaces. Les petites actions ou les variétés à portes froides sont sujettes à de faux signaux en raison de l’instabilité du volume de transactions. Le marché des crypto-monnaies nécessite un ajustement des paramètres en raison de la négociation 24 heures sur 24 et de la forte volatilité.
Les traders conservateurs choisissent le mode conservateur, avec seulement 4 à 5 points de signaux, avec un rendement annuel attendu de 15 à 25%, et un contrôle maximal des retraits de moins de 8%. Les traders plus actifs peuvent choisir le mode équilibré, avec plus de 3 points de signaux, avec un rendement annuel attendu de 25 à 40%, mais avec un rendement annuel de 12 à 15% [2].
Il n’est pas recommandé d’utiliser le mode radical, sauf si vous avez une tolérance au risque suffisante et une riche expérience de la négociation. Le signal de 2 minutes a un taux de bruit trop élevé, ce qui peut entraîner des arrêts fréquents et un déséquilibre mental.
Le plus grand avantage de la stratégie est la simplicité et la transparence, toutes les logiques peuvent être clairement vérifiées. Le plus grand inconvénient est qu’elle ne fonctionne pas bien dans les marchés en crise et doit être utilisée avec le jugement des conditions du marché.
Avertissement: les retours d’expérience ne sont pas des indications de résultats futurs, la stratégie présente un risque de pertes continues, les marchés sont moins performants en cas de choc et nécessitent une gestion rigoureuse des fonds et une préparation psychologique.
//@version=5
strategy("Clear Signal Trading Strategy V5", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.1)
// ============================================================================
// VISUAL CONFIGURATION
// ============================================================================
var color STRONG_BUY = #00ff00
var color BUY = #00dbff
var color NEUTRAL = #ffff00
var color SELL = #ff6b6b
var color STRONG_SELL = #ff0000
// ============================================================================
// INPUT SETTINGS - SIMPLIFIED
// ============================================================================
// Core Settings
core_group = "Core Strategy Settings"
signal_sensitivity = input.string("Balanced", "Signal Sensitivity", ["Conservative", "Balanced", "Aggressive"], group=core_group, tooltip="Conservative = Fewer, higher quality signals | Aggressive = More frequent signals")
use_confirmation = input.bool(true, "Require Volume Confirmation", group=core_group, tooltip="Only trade when volume is above average")
show_labels = input.bool(true, "Show Signal Labels", group=core_group)
show_dashboard = input.bool(true, "Show Info Panel", group=core_group)
// Risk Management
risk_group = "Risk Management"
risk_percent = input.float(2.0, "Risk Per Trade (%)", minval=0.5, maxval=5.0, step=0.5, group=risk_group)
use_stop_loss = input.bool(true, "Use Stop Loss", group=risk_group)
sl_type = input.string("ATR", "Stop Loss Type", ["ATR", "Percentage", "Recent Low/High"], group=risk_group)
sl_atr_mult = input.float(2.0, "ATR Multiplier for Stop", minval=1.0, maxval=4.0, group=risk_group)
sl_percent = input.float(3.0, "Percentage Stop (%)", minval=1.0, maxval=10.0, group=risk_group)
use_take_profit = input.bool(true, "Use Take Profit Targets", group=risk_group)
tp_ratio = input.float(2.0, "Risk:Reward Ratio", minval=1.0, maxval=5.0, step=0.5, group=risk_group)
// ============================================================================
// CORE CALCULATIONS
// ============================================================================
// Price Action
ema_fast = ta.ema(close, 20)
ema_slow = ta.ema(close, 50)
ema_trend = ta.ema(close, 200)
// Trend Detection
price_above_trend = close > ema_trend
price_below_trend = close < ema_trend
fast_above_slow = ema_fast > ema_slow
fast_below_slow = ema_fast < ema_slow
// Clear Trend Signals
uptrend = price_above_trend and fast_above_slow
downtrend = price_below_trend and fast_below_slow
// ATR for Volatility
atr = ta.atr(14)
atr_percent = (atr / close) * 100
normal_volatility = atr_percent < 3
// Volume Analysis
volume_ma = ta.sma(volume, 20)
high_volume = volume > volume_ma * 1.2
volume_spike = volume > volume_ma * 1.5
// RSI for Momentum
rsi = ta.rsi(close, 14)
rsi_bullish = rsi > 50 and rsi < 70
rsi_bearish = rsi < 50 and rsi > 30
rsi_neutral = rsi >= 30 and rsi <= 70
// MACD for Confirmation
[macd, signal, hist] = ta.macd(close, 12, 26, 9)
macd_bullish = hist > 0 and hist > hist[1]
macd_bearish = hist < 0 and hist < hist[1]
// ============================================================================
// SIGNAL LOGIC - CLEAR AND SIMPLE
// ============================================================================
// Entry Conditions Score (0-5 points for clarity)
calculate_signal_quality(is_buy) =>
score = 0
if is_buy
// Trend alignment (2 points max)
if uptrend
score := score + 2
else if price_above_trend
score := score + 1
// Momentum (1 point)
if macd_bullish
score := score + 1
// RSI not overbought (1 point)
if rsi_bullish
score := score + 1
// Volume confirmation (1 point)
if high_volume
score := score + 1
else
// Trend alignment (2 points max)
if downtrend
score := score + 2
else if price_below_trend
score := score + 1
// Momentum (1 point)
if macd_bearish
score := score + 1
// RSI not oversold (1 point)
if rsi_bearish
score := score + 1
// Volume confirmation (1 point)
if high_volume
score := score + 1
score
// Signal Thresholds
min_score = signal_sensitivity == "Conservative" ? 4 : signal_sensitivity == "Balanced" ? 3 : 2
// Primary Signal Detection
ema_cross_up = ta.crossover(ema_fast, ema_slow)
ema_cross_down = ta.crossunder(ema_fast, ema_slow)
// Calculate Signal Quality
buy_quality = calculate_signal_quality(true)
sell_quality = calculate_signal_quality(false)
// Generate Clear Signals
buy_signal = ema_cross_up and buy_quality >= min_score and (not use_confirmation or high_volume) and normal_volatility
sell_signal = ema_cross_down and sell_quality >= min_score and (not use_confirmation or high_volume) and normal_volatility
// Signal Strength for Display
signal_strength(quality) =>
quality >= 4 ? "STRONG" : quality >= 3 ? "GOOD" : "WEAK"
// ============================================================================
// POSITION MANAGEMENT
// ============================================================================
// Stop Loss Calculation
calculate_stop_loss(is_long) =>
stop = 0.0
if sl_type == "ATR"
stop := is_long ? close - atr * sl_atr_mult : close + atr * sl_atr_mult
else if sl_type == "Percentage"
stop := is_long ? close * (1 - sl_percent/100) : close * (1 + sl_percent/100)
else // Recent Low/High
lookback = 10
stop := is_long ? ta.lowest(low, lookback) : ta.highest(high, lookback)
stop
// Take Profit Calculation
calculate_take_profit(entry, stop, is_long) =>
risk = math.abs(entry - stop)
tp = is_long ? entry + (risk * tp_ratio) : entry - (risk * tp_ratio)
tp
// ============================================================================
// STRATEGY EXECUTION
// ============================================================================
// Entry Logic
if buy_signal and strategy.position_size == 0
stop_loss = calculate_stop_loss(true)
take_profit = calculate_take_profit(close, stop_loss, true)
strategy.entry("BUY", strategy.long)
if use_stop_loss
strategy.exit("EXIT_BUY", "BUY", stop=stop_loss, limit=use_take_profit ? take_profit : na)
if sell_signal and strategy.position_size == 0
stop_loss = calculate_stop_loss(false)
take_profit = calculate_take_profit(close, stop_loss, false)
strategy.entry("SELL", strategy.short)
if use_stop_loss
strategy.exit("EXIT_SELL", "SELL", stop=stop_loss, limit=use_take_profit ? take_profit : na)
// ============================================================================
// VISUAL ELEMENTS
// ============================================================================
// Plot EMAs with colors indicating trend
plot(ema_fast, "Fast EMA (20)", color=fast_above_slow ? color.new(BUY, 50) : color.new(SELL, 50), linewidth=2)
plot(ema_slow, "Slow EMA (50)", color=fast_above_slow ? color.new(BUY, 70) : color.new(SELL, 70), linewidth=1)
plot(ema_trend, "Trend EMA (200)", color=color.new(color.gray, 50), linewidth=2)
// Background Color for Market State
market_color = uptrend ? color.new(BUY, 96) : downtrend ? color.new(SELL, 96) : na
bgcolor(market_color, title="Market Trend")
// ============================================================================
// ALERTS
// ============================================================================
alertcondition(buy_signal, "BUY Signal", "Clear BUY signal detected - Score: {{plot_0}}/5")
alertcondition(sell_signal, "SELL Signal", "Clear SELL signal detected - Score: {{plot_1}}/5")
alertcondition(buy_signal and buy_quality >= 4, "STRONG BUY Signal", "STRONG BUY signal detected")
alertcondition(sell_signal and sell_quality >= 4, "STRONG SELL Signal", "STRONG SELL signal detected")