
Esta estrategia utiliza las medias móviles rápidas y las medias móviles lentas para construir señales de negociación y permitir la identificación y seguimiento de tendencias. La estrategia genera una señal de compra cuando la línea rápida atraviesa la línea lenta; genera una señal de venta cuando la línea rápida atraviesa la línea lenta.
Esta estrategia utiliza el promedio móvil exponencial de dos períodos diferentes como base para la toma de decisiones comerciales. El parámetro de promedio móvil rápido se establece en 30 días para capturar cambios en los precios a corto plazo. El parámetro de promedio móvil lento se establece en 100 días para determinar la dirección de la tendencia de la línea larga en los precios.
Cuando la línea rápida atraviesa la línea lenta desde abajo, indica que el mercado entra en una tendencia ascendente, generando una señal de compra; cuando la línea rápida atraviesa la línea lenta desde arriba, indica que el mercado entra en una tendencia descendente, generando una señal de venta.
La estrategia tiene las siguientes ventajas:
La estrategia también tiene sus riesgos:
La estrategia puede ser optimizada en los siguientes aspectos:
Esta estrategia se basa en un sistema de toma de decisiones de comercio basado en dos líneas medias, para juzgar la tendencia del mercado a través de la relación de precios de las líneas medias rápidas y lentas, la generación de señales es simple y clara. La estrategia filtra parte del ruido, puede ser fluida y adecuada para el comercio de tendencias de líneas medias y largas.
/*backtest
start: 2023-01-21 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("EMA Strategy v2", shorttitle = "EMA Strategy v2", overlay=true, pyramiding = 3,default_qty_type = strategy.percent_of_equity, default_qty_value = 10)
// === Inputs ===
// short ma
maFastSource = input(defval = close, title = "Fast MA Source")
maFastLength = input(defval = 30, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource = input(defval = close, title = "Slow MA Source")
maSlowLength = input(defval = 100, title = "Slow MA Period", minval = 1)
// invert trade direction
tradeInvert = input(defval = false, title = "Invert Trade Direction?")
// risk management
useStop = input(defval = true, title = "Use Initial Stop Loss?")
slPoints = input(defval = 0, title = "Initial Stop Loss Points", minval = 1)
useTS = input(defval = true, title = "Use Trailing Stop?")
tslPoints = input(defval = 0, title = "Trail Points", minval = 1)
useTSO = input(defval = false, title = "Use Offset For Trailing Stop?")
tslOffset = input(defval = 0, title = "Trail Offset Points", minval = 1)
// === Vars and Series ===
fastMA = ema(maFastSource, maFastLength)
slowMA = ema(maSlowSource, maSlowLength)
plot(fastMA, color=blue)
plot(slowMA, color=purple)
goLong() => crossover(fastMA, slowMA)
killLong() => crossunder(fastMA, slowMA)
strategy.entry("Buy", strategy.long, when = goLong())
strategy.close("Buy", when = killLong())
// Shorting if using
goShort() => crossunder (fastMA, slowMA)
killShort() => crossover(fastMA, slowMA)
//strategy.entry("Sell", strategy.short, when = goShort())
//strategy.close("Sell", when = killShort())
if (useStop)
strategy.exit("XLS", from_entry ="Buy", stop = strategy.position_avg_price / 1.08 )
strategy.exit("XSS", from_entry ="Sell", stop = strategy.position_avg_price * 1.58)