
Este artículo presenta una estrategia de negociación cuantitativa basada en la intersección de tres diferentes períodos. La estrategia tiene como objetivo utilizar la intersección de la EMA para identificar tendencias a largo y corto plazo en el mercado de valores y tomar decisiones de negociación efectivas.
La estrategia utiliza tres diferentes períodos de EMA: 10 días, 100 días y 200 días. Cuando el corto período de EMA (10 días) atraviesa el largo período de EMA (100 días o 200 días), genera una señal de compra o venta según la dirección de la travesía. La estrategia también combina un filtro de tiempo para garantizar que solo se negocie en un período de tiempo específico.
La ventaja de esta estrategia reside en su simplicidad y alta adaptabilidad. El EMA multi-periódico ofrece una observación multi-ángulo de las tendencias del mercado, lo que aumenta la precisión de las decisiones de negociación. Al mismo tiempo, el filtro de tiempo evita la inestabilidad en un período específico del mercado y reduce el riesgo potencial.
A pesar de la eficacia de esta estrategia, existen ciertos riesgos. El principal riesgo es que los eventos inesperados en el mercado pueden conducir al fracaso de la estrategia. Además, los indicadores EMA pueden tener un retraso y un retraso en reflejar los cambios en el mercado. Los métodos para abordar estos riesgos incluyen la supervisión del mercado en tiempo real y la combinación de otros indicadores técnicos para mejorar la precisión de las decisiones.
La dirección de optimización de la estrategia incluye el uso integrado de varios indicadores técnicos, como el índice de fuerza relativa (RSI) y las bandas de Brin, para aumentar la profundidad y la amplitud del análisis del mercado. Además, se puede adaptar mejor a las diferentes condiciones del mercado ajustando el ciclo EMA.
En general, esta estrategia de comercio cuantificado de EMA de múltiples períodos es una herramienta eficiente que puede ayudar a los comerciantes a tomar mejores decisiones en mercados cambiantes. Al optimizar y adaptarse constantemente a los cambios en el mercado, esta estrategia tiene el potencial de generar mayores ganancias en operaciones futuras.
/*backtest
start: 2022-12-20 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
start = timestamp(2023,1,1,0,0)
end = timestamp(2024,1,1,0,0)
strategy("Tester Emas", overlay = true)
periodo1 = input(10,"Periodo_1")
periodo2 = input(100,"Periodo_2")
periodo3 = input(200,"Periodo_3")
//definir media moviles
ema1 = ta.ema(close,periodo1)
ema2 = ta.ema(close,periodo2)
ema3 = ta.ema(close,periodo3)
//Desde
desde_a = input(2000, title = "Desde año")
desde_m = input.int( 1, title = "Desde mes", minval=1, maxval = 12)
desde_d = input.int( 1, title = "Desde dia", minval=1, maxval = 31)
//Hasta
hasta_a = input(2030, title = "Hasta año")
hasta_m = input.int( 1, title = "Hasta mes", minval=1, maxval = 12)
hasta_d = input.int( 1, title = "Hasta dia", minval=1, maxval = 31)
FechaValida() => true
//Condicion de entradas
longCondition = ta.crossover(ema1, ema2)
shortCondition = ta.crossunder(ema1,ema2)
alcista = (ema1 > ema2) and (ema2 > ema3)
comprado =strategy.position_size > 0
//Comprar o vender segun las condiciones de entradas
//if (longCondition)
if (not comprado and alcista and FechaValida())
// Round redondea mi capital para comprar las acciones en cantidades enteras
cantidad = math.round(strategy.equity/ close)
strategy.entry("Compra", strategy.long, cantidad)
//if (shortCondition)
if (comprado and not alcista and FechaValida())
//strategy.entry("Venta", strategy.short)
strategy.close("Compra" , comment = "Venta")
if (comprado and not FechaValida())
//Cierre x finalizacion de periodo
//strategy.entry("Venta", strategy.short)
strategy.close("Compra" , comment = "Venta x fin")
//Graficar las medias moviles
plot(ema1, color = color.green, title = "Ema1")
plot(ema2, color = color.yellow, title = "Ema2")
plot(ema3, color = color.red, title = "Ema2")
//GMarca los cruces de medias
bgcolor(longCondition ? color.green : na)
bgcolor(shortCondition ? color.red : na)