
La estrategia es un sistema de negociación basado en el cruce de medias móviles, que admite dos tipos de promedios móviles, EMA y SMA, y ofrece parámetros predeterminados optimizados para múltiples períodos de tiempo, como 1 hora, 4 horas, diarios, diarios y diarios. El sistema genera señales de negociación mediante el cruce de medias móviles rápidas y lentas, y ofrece un efecto de relleno de la zona de precios visualizado.
El núcleo de la estrategia es identificar posibles cambios en la tendencia mediante la supervisión de la intersección de las medias móviles rápidas y lentas. Cuando la media móvil rápida sube y atraviesa la media móvil lenta, se produce una señal de multiplicación; cuando la media móvil rápida baja y atraviesa la media móvil lenta, se produce una señal de ruptura.
Esta es una estrategia de movimiento de medias cruzadas, rigurosamente optimizada, que se aplica a varios períodos de tiempo. La estrategia ofrece a los comerciantes una herramienta de seguimiento de tendencias fiable a través de la optimización científica de los parámetros y las opciones de configuración flexibles.
/*backtest
start: 2024-07-12 00:00:00
end: 2025-02-22 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("MA Crossover [ClémentCrypto]", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=20, initial_capital=10000,process_orders_on_close=true)
// Groupe pour le choix entre preset et personnalisé
usePreset = input.bool(title="Utiliser Preset", defval=true, group="Mode Selection")
// Inputs pour la stratégie
timeframeChoice = input.string(title="Timeframe Preset", defval="1H", options=["1H", "4H", "1D", "1W", "2W"], group="Preset Settings")
tradeDirection = input.string(title="Trading Direction", defval="Long Only", options=["Long Only", "Short Only", "Both Directions"], group="Strategy Settings")
// Paramètres personnalisés MA
customFastLength = input.int(title="Custom Fast MA Length", defval=23, minval=1, group="Custom MA Settings")
customSlowLength = input.int(title="Custom Slow MA Length", defval=395, minval=1, group="Custom MA Settings")
customMAType = input.string(title="Custom MA Type", defval="EMA", options=["SMA", "EMA"], group="Custom MA Settings")
// Paramètres MA optimisés pour chaque timeframe
var int fastLength = 0
var int slowLength = 0
var string maType = ""
if usePreset
if timeframeChoice == "1H"
fastLength := 23
slowLength := 395
maType := "EMA"
else if timeframeChoice == "4H"
fastLength := 41
slowLength := 263
maType := "SMA"
else if timeframeChoice == "1D"
fastLength := 8
slowLength := 44
maType := "SMA"
else if timeframeChoice == "1W"
fastLength := 32
slowLength := 38
maType := "SMA"
else if timeframeChoice == "2W"
fastLength := 17
slowLength := 20
maType := "SMA"
else
fastLength := customFastLength
slowLength := customSlowLength
maType := customMAType
// Calcul des moyennes mobiles
fastMA = maType == "SMA" ? ta.sma(close, fastLength) : ta.ema(close, fastLength)
slowMA = maType == "SMA" ? ta.sma(close, slowLength) : ta.ema(close, slowLength)
// Conditions de trading simplifiées
longEntier = ta.crossover(fastMA, slowMA)
longExit = ta.crossunder(fastMA, slowMA)
shortEntier = ta.crossunder(fastMA, slowMA)
shortExit = ta.crossover(fastMA, slowMA)
// Définition des couleurs
var BULL_COLOR = color.new(#00ff9f, 20)
var BEAR_COLOR = color.new(#ff0062, 20)
var BULL_COLOR_LIGHT = color.new(#00ff9f, 90)
var BEAR_COLOR_LIGHT = color.new(#ff0062, 90)
// Couleurs des lignes MA
fastMAColor = fastMA > slowMA ? BULL_COLOR : BEAR_COLOR
slowMAColor = color.new(#FF6D00, 60)
// Gestion des positions
if tradeDirection == "Long Only"
if (longEntier)
strategy.entry("Long", strategy.long)
if (longExit)
strategy.close("Long")
else if tradeDirection == "Short Only"
if (shortEntier)
strategy.entry("Short", strategy.short)
if (shortExit)
strategy.close("Short")
else if tradeDirection == "Both Directions"
if (longEntier)
strategy.entry("Long", strategy.long)
if (longExit)
strategy.close("Long")
if (shortEntier)
strategy.entry("Short", strategy.short)
if (shortExit)
strategy.close("Short")
// Plots
var fastMAplot = plot(fastMA, "Fast MA", color=fastMAColor, linewidth=2)
var slowMAplot = plot(slowMA, "Slow MA", color=slowMAColor, linewidth=1)
fill(fastMAplot, slowMAplot, color=fastMA > slowMA ? BULL_COLOR_LIGHT : BEAR_COLOR_LIGHT)
// Barres colorées
barcolor(fastMA > slowMA ? color.new(BULL_COLOR, 90) : color.new(BEAR_COLOR, 90))