
La estrategia se basa en el cruce de dos medias móviles (EMA) para generar una señal de compra cuando el EMA corto (día 20) cruza el EMA largo (día 50) de abajo hacia arriba; cuando el EMA corto cruza el EMA largo (día 50) de arriba hacia abajo, produce una señal de venta. Al mismo tiempo, la estrategia también traza un EMA de 200 días como referencia para las tendencias a largo plazo. La idea principal de la estrategia es utilizar el cruce de diferentes medias móviles periódicas para capturar la transformación de las tendencias del mercado y, por lo tanto, negociar.
La estrategia de cruce de líneas bi-equivalentes de la EMA es una estrategia de negociación simple y fácil de entender, adecuada para los mercados de tendencia. Utiliza el cruce de promedios móviles a corto y largo plazo para capturar los cambios en las tendencias del mercado, al tiempo que introduce referencias de tendencias a largo plazo. A pesar de que la estrategia tiene algunas limitaciones, como un mal desempeño en mercados convulsos y el atraso de las medias móviles, se puede mejorar aún más la estabilidad y la rentabilidad de la estrategia mediante la introducción de otros indicadores, la optimización de los parámetros y la adición de medidas de control de riesgo.
/*backtest
start: 2023-03-23 00:00:00
end: 2024-03-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Crossover Strategy by Peter Gangmei", overlay=true)
// Define the length for moving averages
short_ma_length = input.int(20, "Short MA Length")
long_ma_length = input.int(50, "Long MA Length")
long_ma_200_length = input.int(200, "Long MA 200 Length")
// Define start time for testing
start_time = timestamp(2024, 01, 01, 00, 00)
// Calculate current date and time
current_time = timenow
// Calculate moving averages
ema20 = ta.ema(close, short_ma_length)
ema50 = ta.ema(close, long_ma_length)
ema200 = ta.ema(close, long_ma_200_length)
// Crossing conditions
crossed_above = ta.crossover(ema20, ema50)
crossed_below = ta.crossunder(ema20, ema50)
// Entry and exit conditions within the specified time frame
if true
if (crossed_above)
strategy.entry("Buy", strategy.long)
alert("Buy Condition", alert.freq_once_per_bar_close)
if (crossed_below)
strategy.entry("Sell", strategy.short)
alert("Sell Condition", alert.freq_once_per_bar_close)
// Plotting moving averages for visualization
plot(ema20, color=color.green, title="EMA20")
plot(ema50, color=color.red, title="EMA50")
plot(ema200, color=color.blue, title="EMA200")
// Placing buy and sell markers
plotshape(series=crossed_above, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")
plotshape(series=crossed_below, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")