
La estrategia de seguimiento de tendencias de cruce de líneas medias múltiples de EMA utiliza una combinación de EMA medias con varios conjuntos de diferentes parámetros para realizar operaciones de seguimiento de tendencias. La estrategia utiliza 7 conjuntos de líneas medias de EMA simultáneamente, incluidos los períodos 12, 26, 50, 100, 200, 89 y 144, para determinar la dirección de la tendencia mediante la comparación de los cruces de estos EMA.
La lógica central de esta estrategia se basa en el principio de cruce de las EMA medias. En las EMA medias, las EMA de períodos más cortos son más sensibles a los cambios de precios y pueden reflejar tendencias de precios recientes; mientras que las EMA de períodos más largos son menos sensibles a los cambios de precios y pueden reflejar tendencias de largo plazo. Cuando las EMA de períodos cortos atraviesan una EMA de períodos largos desde abajo, se forman los llamados tenedores de oro, que indican que las tendencias de corto plazo se convierten en alcistas y se puede configurar para hacer más pedidos.
La estrategia utiliza 7 grupos de líneas medias de EMA, incluyendo 12&26, 12&50, 12&100, 12&200, 12&89 y 12&144. La estrategia comparará al mismo tiempo los cruces de estos 7 grupos de EMA. Por ejemplo, cuando el EMA del día 12 atraviesa el EMA del día 26 para formar un tenedor de oro, se abrirá una posición; cuando se produzca un tenedor muerto, se aplanará la posición. La estrategia utiliza la misma lógica para los otros 6 grupos de líneas medias de EMA.
La mayor ventaja de esta estrategia es que puede capturar tendencias en varias escalas de tiempo al mismo tiempo. Mediante el uso combinado de varias líneas medias de EMA, la estrategia puede capturar tendencias a corto plazo y seguir tendencias a largo plazo, lo que permite el seguimiento de tendencias en múltiples ejes de tiempo. Además, la estrategia puede optimizar el rendimiento ajustando los parámetros de diferentes EMA.
El principal riesgo de esta estrategia reside en la posibilidad de que las señales de cruce sean demasiado frecuentes cuando se utilizan combinaciones de EMAs medias múltiples. Por ejemplo, el número de cruces entre las EMAs de 12 y 26 días es más frecuente que el número de cruces entre las EMAs de 12 y 200 días. Si no se puede controlar la frecuencia de las posiciones abiertas y las posiciones libres, se aumentan los costos de negociación y las pérdidas por deslizamiento.
Para reducir los riesgos mencionados anteriormente, se pueden optimizar adecuadamente los parámetros de ciclo de la EMA, de modo que su frecuencia de cruce esté en el rango adecuado; además, se puede limitar adecuadamente el número de posiciones abiertas en un día o establecer un stop loss para controlar el riesgo.
El espacio de optimización de esta estrategia se centra principalmente en la adaptación de los parámetros de la línea media de la EMA. Se pueden probar más combinaciones de parámetros de diferentes períodos. Además, se pueden probar otros tipos de promedios móviles como SMA. Además, la estrategia puede agregar condiciones adicionales para filtrar la señal, como el indicador de volumen de negocios, el indicador de fluctuación, etc., lo que mejora la calidad de la señal.
La estrategia de seguimiento de tendencias de cruce de tendencias de múltiples EMAs es una estrategia de seguimiento de tendencias común que permite el seguimiento de tendencias en múltiples escalas de tiempo, determinando la dirección de la tendencia mediante la comparación de las situaciones de cruce de varias EMAs. La ventaja de esta estrategia reside en la posibilidad de ajustar los parámetros con flexibilidad para capturar tendencias de diferentes niveles. La desventaja reside en que las señales pueden ser demasiado frecuentes, lo que aumenta el costo de la negociación.
/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("EMA Trades", overlay=true, pyramiding=4)
src = input(close, title="Source")
shortestLine = input(12, minval=1, title="Shortest Line")
shorterLine = input(26, minval=1, title="Shorter Line")
shortLine = input(50, minval=1, title="Short Line")
middleLine = input(100, minval=1, title="Middle Line")
longLine = input(200, minval=1, title="Long Line")
longerLine = input(89, minval=1, title="Longer Line")
longestLine = input(144, minval=1, title="Longest Line")
shortestLineOutput = ema(src, shortestLine)
shorterLineOutput = ema(src, shorterLine)
shortLineOutput = ema(src, shortLine)
middleLineOutput = ema(src, middleLine)
longLineOutput = ema(src, longLine)
longerLineOutput = ema(src, longerLine)
longestLineOutput = ema(src, longestLine)
//plot(shortestLineOutput, title="Shortest EMA", color=#ffffff)
//plot(shorterLineOutput, title="Shorter EMA", color=#e54fe6)
//plot(shortLineOutput, title="Short EMA", color=#4e6bc3)
//plot(middleLineOutput, title="Middle EMA", color=#1dd6d8)
//plot(longLineOutput, title="Long EMA", color=#d0de10)
//plot(longerLineOutput, title="Longer EMA", color=#ef6a1a)
//plot(longestLineOutput, title="Longest EMA", color=#ff0e0e)
longEnrtyCondition_1 = crossover(shortestLineOutput[1], shorterLineOutput[1]) and shortestLineOutput > shorterLineOutput
longEntryCondition_2 = crossover(shortestLineOutput[1], shortLineOutput[1]) and shortestLineOutput > shortLineOutput
longEnrtyCondition_3 = crossover(shortestLineOutput[1], middleLineOutput[1]) and shortestLineOutput > middleLineOutput
longEntryCondition_4 = crossover(shortestLineOutput[1], longLineOutput[1]) and shortestLineOutput > longLineOutput
shortEnrtyCondition_1 = crossunder(shortestLineOutput[1], shorterLineOutput[1]) and shortestLineOutput < shorterLineOutput
shortEntryCondition_2 = crossunder(shortestLineOutput[1], shortLineOutput[1]) and shortestLineOutput < shortLineOutput
shortEnrtyCondition_3 = crossunder(shortestLineOutput[1], middleLineOutput[1]) and shortestLineOutput < middleLineOutput
shortEntryCondition_4 = crossunder(shortestLineOutput[1], longLineOutput[1]) and shortestLineOutput < longLineOutput
if (longEnrtyCondition_1)
strategy.entry("Buy1", strategy.long)
strategy.exit("Sell1")
if (longEntryCondition_2)
strategy.entry("Buy2", strategy.long)
strategy.exit("Sell2")
if (longEnrtyCondition_3)
strategy.entry("Buy3", strategy.long)
strategy.exit("Sell3")
if (longEntryCondition_4)
strategy.entry("Buy4", strategy.long)
strategy.exit("Sell4")
if (shortEnrtyCondition_1)
strategy.entry("Sell1", strategy.short)
strategy.exit("Buy1")
if (shortEntryCondition_2)
strategy.entry("Sell2", strategy.short)
strategy.exit("Buy2")
if (shortEnrtyCondition_3)
strategy.entry("Sell3", strategy.short)
strategy.exit("Buy3")
if (shortEntryCondition_4)
strategy.entry("Sell4", strategy.short)
strategy.exit("Buy4")