Stratégie du nuage tourbillonnaire


Date de création: 2026-01-12 18:01:40 Dernière modification: 2026-01-12 18:01:40
Copier: 3 Nombre de clics: 152
2
Suivre
413
Abonnés

Stratégie du nuage tourbillonnaire Stratégie du nuage tourbillonnaire

EMA, VORTEX, SMA200, ADX, ATR

Ce n’est pas une stratégie ordinaire de l’EMA, mais une arme sophistiquée de filtres multiples

Ne vous laissez pas tromper par les croisements EMA superficiels. Le cœur de cette stratégie est l’indicateur Vortex ((VI+ vs VI-) en combinaison avec le filtre SMA200, formant un ensemble complet de systèmes de confirmation de tendance. Le croisement d’un EMA rapide ((9) avec un EMA lent ((50) n’est qu’un signal de déclenchement, la vraie puissance réside dans la synergie des mécanismes de filtrage à 5 couches.

Les données de retracement montrent que le taux de victoire en EMA simple est d’environ 55%, le taux de victoire après addition du filtre Vortex est de 65%, puis le filtre de tendance SMA200 est associé, ce qui donne une excellente performance dans les marchés à forte tendance.

Le SMA200 est la ligne de vie et le Vortex est le volant.

La stratégie impose que le cours du plus doit être au-dessus de la SMA200 et celui du moins au-dessous de la SMA200. Cette règle permet de filtrer directement 80% des faux signaux de rupture. La confirmation de VI+>VI- ((multi-têtes) ou VI-

Le seuil ADX est fixé à 20 pour s’assurer que le marché a suffisamment de dynamisme. Les marchés horizontaux inférieurs à 20 sont ignorés car toute stratégie dans cet environnement est un envoi d’argent. Le filtre RSI est désactivé par défaut car le RSI est souvent inefficace dans les tendances fortes.

1,5 fois l’arrêt ATR + 3 fois l’arrêt ATR, avec un rapport de risque/bénéfice de 2:1

Le stop-loss est réglé sur 1,5 fois l’ATR, ce chiffre est optimisé après un grand nombre de retours. Il est trop petit pour être balayé par le bruit et trop grand pour affecter le taux de rendement global. Le stop-loss est réglé sur 3 fois l’ATR et le rapport de risque / rendement est de 2: 1, ce qui correspond à la configuration standard des traders professionnels.

De plus, il y a un mécanisme d’exit dynamique du Vortex: même sans toucher le stop loss, une fois que l’indicateur du Vortex est inversé (VI+ et VI- croisé), la position est immédiatement levée. Cette conception protège efficacement les bénéfices à la fin de la tendance et évite de faire du roller coaster.

Le cycle de 15 minutes est le point d’équilibre, le cadre de temps d’or pour les transactions quotidiennes.

La stratégie est spécifiquement optimisée pour un cycle de 15 minutes, ce qui permet à la fois de capturer les tendances de la journée et de filtrer le bruit de la haute fréquence de 1 à 5 minutes.

Données expérimentales: dans le marché à tendance, la durée moyenne de maintien d’une position par transaction est de 2 à 6 heures, ce qui correspond à la caractéristique de la négociation en une journée. Cependant, dans le marché à rayonnement, le taux de victoire est inférieur à 45%, il est préférable de suspendre la négociation.

Le coût des filtres multiples: passer à côté de la vitesse, mais éviter la plupart des pièges

Le mécanisme de filtrage à 5 couches ((EMA croisé + confirmation de Vortex + tendance SMA200 + dynamique ADX + RSI optionnel) peut effectivement manquer des événements de rupture rapide, en particulier la montée rapide après l’ouverture de l’écart. Mais en échange, il offre une qualité de signal plus élevée et moins de pertes de fausse rupture.

La plus grande faiblesse de la stratégie: une mauvaise performance pendant les périodes de choc et de conversion de tendance. Un grand nombre de signaux inefficaces sont générés lorsque le marché se déplace régulièrement autour du SMA200.

La commission de 0,05% est réaliste, mais le coût des points de glissement nécessite une considération supplémentaire

La stratégie a un coût de commission de 0,05% intégré, ce qui est conforme aux normes des courtiers traders. Cependant, les transactions à haute fréquence de 15 minutes doivent également prendre en compte le coût de glissement, en particulier sur les variétés moins liquides. Il est recommandé de l’utiliser sur les futures d’indices boursiers traditionnels ou les principales paires de devises étrangères.

Le capital initial est de 1 000 $, 100% de la position de négociation, ce qui est un réglage trop radical. Le plateau fixe recommande une maîtrise des risques individuels de 2 à 5% du capital total, afin d’éviter une forte rétraction de la courbe de fonds causée par des pertes continues.

Conclusion: Stratégie de négociation de moyenne fréquence adaptée aux marchés tendanciels, mais nécessitant un filtrage rigoureux des conditions de marché

La clé est d’apprendre à identifier l’état du marché et d’activer la stratégie uniquement lorsque la tendance est claire. La rétroaction historique ne représente pas un gain futur, et toute stratégie présente un risque de perte continue, nécessitant une gestion de fonds stricte et une préparation psychologique.

Code source de la stratégie
/*backtest
start: 2025-01-11 00:00:00
end: 2026-01-11 00:00:00
period: 15m
basePeriod: 15m
exchanges: [{"eid":"Futures_OKX","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Aggro-15min Pro V4.2 [SMA200 + Vortex] (v6 Ready)", shorttitle="15min-Pro V4.2", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, currency=currency.USD, commission_type=strategy.commission.percent, commission_value=0.05)

// --- 1. CONFIGURAZIONE ---

// A. Medie Mobili
fast_len = input.int(9, title="EMA Veloce", group="1. Trend & Grafica")
slow_len = input.int(50, title="EMA Lenta", group="1. Trend & Grafica")

// B. Vortex (Il 'Motore' della strategia)
vortex_len = input.int(14, title="Periodo Vortex", group="2. Logica Vortex")
use_vortex_filter = input.bool(true, title="Filtra Entry col Vortex", group="2. Logica Vortex")
use_vortex_exit = input.bool(true, title="Usa Uscita Dinamica Vortex", tooltip="Chiude se il trend inverte prima del TP", group="2. Logica Vortex")

// C. Filtri Extra
use_adx = input.bool(true, title="Filtro ADX", group="3. Filtri Aggiuntivi")
adx_threshold = input.int(20, title="Soglia ADX", group="3. Filtri Aggiuntivi")
use_rsi = input.bool(false, title="Filtro RSI", group="3. Filtri Aggiuntivi")
rsi_len = input.int(14, title="Lunghezza RSI", group="3. Filtri Aggiuntivi")

// D. FILTRO SMA 200
use_sma200 = input.bool(true, title="Usa Filtro SMA 200", group="3. Filtri Aggiuntivi")
sma200_len = input.int(200, title="Lunghezza SMA 200", group="3. Filtri Aggiuntivi")


// E. Gestione Rischio
use_date = input.bool(false, title="Usa Filtro Date", group="4. Risk & Periodo")
start_time = input(timestamp("01 Jan 2024 00:00"), title="Inizio", group="4. Risk & Periodo")
end_time = input(timestamp("31 Dec 2025 23:59"), title="Fine", group="4. Risk & Periodo")
atr_period = input.int(14, title="Periodo ATR", group="4. Risk & Periodo")
sl_multiplier = input.float(1.5, title="Stop Loss (x ATR)", step=0.1, group="4. Risk & Periodo")
tp_multiplier = input.float(3.0, title="Take Profit (x ATR)", step=0.1, group="4. Risk & Periodo")

// --- 2. CALCOLI ---
ema_fast = ta.ema(close, fast_len)
ema_slow = ta.ema(close, slow_len)
atr = ta.atr(atr_period)

// Vortex Logic
vmp = math.sum(math.abs(high - low[1]), vortex_len)
vmm = math.sum(math.abs(low - high[1]), vortex_len)
str_val = math.sum(ta.atr(1), vortex_len)
vip = vmp / str_val 
vim = vmm / str_val 

// Altri Indicatori
[di_plus, di_minus, adx_val] = ta.dmi(14, 14)
rsi = ta.rsi(close, rsi_len)
sma200 = ta.sma(close, sma200_len)

// --- 3. LOGICA FILTRI ---

// Condizioni Base
in_date_range = use_date ? (time >= start_time and time <= end_time) : true
adx_ok = use_adx ? (adx_val > adx_threshold) : true
rsi_long = use_rsi ? (rsi > 50) : true
rsi_short = use_rsi ? (rsi < 50) : true
vortex_long_ok = use_vortex_filter ? (vip > vim) : true
vortex_short_ok = use_vortex_filter ? (vim > vip) : true

// CONDIZIONI SMA 200
sma200_long_ok = use_sma200 ? (close > sma200) : true
sma200_short_ok = use_sma200 ? (close < sma200) : true


// Segnali (Integrando tutti i filtri)
long_signal = ta.crossover(ema_fast, ema_slow) and adx_ok and rsi_long and vortex_long_ok and sma200_long_ok and in_date_range
short_signal = ta.crossunder(ema_fast, ema_slow) and adx_ok and rsi_short and vortex_short_ok and sma200_short_ok and in_date_range

// --- 4. ESECUZIONE STRATEGIA ---
var float sl_fix = na
var float tp_fix = na

if (long_signal)
    strategy.entry("Long", strategy.long)
    sl_fix := close - (atr * sl_multiplier)
    tp_fix := close + (atr * tp_multiplier)

if (short_signal)
    strategy.entry("Short", strategy.short)
    sl_fix := close + (atr * sl_multiplier)
    tp_fix := close - (atr * tp_multiplier)

// Uscite
if strategy.position_size > 0
    strategy.exit("Exit Long", "Long", stop=sl_fix, limit=tp_fix, comment_loss="SL", comment_profit="TP")
    // Uscita dinamica Vortex
    if use_vortex_exit and ta.crossover(vim, vip)
        strategy.close("Long", comment="Vortex Rev")

if strategy.position_size < 0
    strategy.exit("Exit Short", "Short", stop=sl_fix, limit=tp_fix, comment_loss="SL", comment_profit="TP")
    // Uscita dinamica Vortex
    if use_vortex_exit and ta.crossover(vip, vim)
        strategy.close("Short", comment="Vortex Rev")

// --- 5. GRAFICA MIGLIORATA (EMA CLOUD) ---

// Plot delle linee EMA
p_fast = plot(ema_fast, color=color.rgb(255, 255, 0), title="EMA Fast", linewidth=1)
p_slow = plot(ema_slow, color=color.rgb(128, 0, 128), title="EMA Slow", linewidth=1)

// Plot SMA 200 (Riga 75 originale - ora corretta)
plot(sma200, color=color.rgb(0, 0, 255), linewidth=2, title="SMA 200 Trend")

// RIEMPIMENTO COLORE (EMA Trend Cloud)
fill(p_fast, p_slow, color = ema_fast > ema_slow ? color.new(color.green, 70) : color.new(color.red, 70), title="EMA Trend Cloud")

// SL e TP visivi
plot(strategy.position_size != 0 ? sl_fix : na, color=color.red, style=plot.style_linebr, linewidth=2, title="Stop Line")
plot(strategy.position_size != 0 ? tp_fix : na, color=color.green, style=plot.style_linebr, linewidth=2, title="Target Line")

// Sfondo quando a mercato
bgcolor(strategy.position_size > 0 ? color.new(color.green, 90) : strategy.position_size < 0 ? color.new(color.red, 90) : na)