La estrategia de intercambio de media móvil genera señales de compra y venta mediante el cálculo del cruce de las líneas de EMA rápida (fastLength) y EMA lenta (slowLength). Cuando la línea rápida cruza por encima de la línea lenta, se genera una señal de compra. Cuando la línea rápida cruza por debajo de la línea lenta, se genera una señal de venta. Esta estrategia es simple y práctica, adecuada para el comercio a medio y corto plazo.
La estrategia utiliza dos líneas de promedio móvil, línea rápida y línea lenta. El parámetro de línea rápida EMAfastLength se configura por defecto en línea de 9 días, y el parámetro de línea lenta EMAslowLength se configura por defecto en línea de 26 días.
Las señales de negociación específicas y las reglas de estrategia son las siguientes:
Así que esta estrategia se negocia basado en la cruz dorada y cruz muerta de las dos líneas de media móvil.
Para abordar los riesgos, los parámetros que se pueden optimizar incluyen el ciclo de promedio móvil, la variedad de operaciones, la relación de toma de ganancias y stop loss, etc. Se requieren pruebas extensas para reducir los riesgos.
La idea de cruce de la media móvil de esta estrategia es simple y práctica.
A través de estas pruebas de optimización, el efecto práctico y la estabilidad de la estrategia pueden mejorarse en gran medida.
La idea de la estrategia de cruce de promedios móviles es simple, pero la aplicación práctica requiere una optimización continua. Esta estrategia da la lógica de generar señales comerciales y reglas comerciales básicas. Sobre esta base, se puede optimizar en gran medida para convertirse en una estrategia cuantitativa utilizable. La aplicación de promedios móviles también nos proporciona ideas para estrategias, basadas en las cuales podemos innovar y mejorar.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("EMA Cross by MarketAlpha", overlay=true) EMAfastLength = input(defval = 9, minval = 2) EMAslowLength = input(defval = 26, minval = 2) Targetpercentage = input(defval = 0.15, title = "Profit Target in percentage", minval = 0.05) StopLosspercentage = input(defval = 0.20, title = "Stop Loss in percentage", minval = 0.05) profitpoints = close*Targetpercentage stoplosspoints = close*StopLosspercentage price = close FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2018, title = "From Year", minval = 2000) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2017) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true // create function "within window of time" emafast = ema(price, EMAfastLength) emaslow = sma(price, EMAslowLength) plot(emafast,color=green) plot(emaslow,color=red) enterLong() => crossover(emafast, emaslow) strategy.entry(id = "MarketAlpha Long", long = true, when = window() and enterLong()) strategy.exit("Exit Long", from_entry = "MarketAlpha Long", profit = profitpoints,loss = stoplosspoints) enterShort() => crossunder(emafast, emaslow) strategy.entry(id = "MarketAlpha Short", long = false, when = window() and enterShort()) strategy.exit("Exit Short", from_entry = "MarketAlpha Short", profit = profitpoints,loss = stoplosspoints)