Estrategia de cruce de medias móviles EMA dobles con seguimiento de impulso


Fecha de creación: 2024-02-26 16:40:29 Última modificación: 2024-02-26 16:40:29
Copiar: 0 Número de Visitas: 604
1
Seguir
1617
Seguidores

Estrategia de cruce de medias móviles EMA dobles con seguimiento de impulso

Descripción general

La estrategia es una estrategia de negociación de algoritmos de seguimiento de tendencias que calcula el promedio EMA de dos parámetros diferentes y emite una señal de negociación cuando se produce una cruz de oro (Golden Cross) y una cruz de muerte (Death Cross). La estrategia combina varias líneas de EMA para una salida rentable al mismo tiempo y establece un punto de parada para controlar el riesgo.

Principio de estrategia

La estrategia utiliza cuatro EMAs, un conjunto de EMAs rápidas y lentas, cuyos cruces se utilizan para generar señales de compra y venta. Además, la estrategia utiliza dos EMAs intermedias entre los parámetros de las EMAs rápidas para cerrar posiciones con anticipación y bloquear ganancias.

Específicamente, cuando un EMA rápido atraviesa un EMA lento, genera una señal de compra; cuando un EMA rápido atraviesa un EMA lento, genera una señal de venta. Esta es una estrategia típica de cruce de media móvil de dos EMAs. Para seguir mejor la tendencia y mejorar la rentabilidad, la estrategia, después de entrar en la posición, se retira selectivamente de parte o de la totalidad de la posición cuando atraviesa la segunda línea media EMA en un EMA rápido o la tercera línea media EMA en un EMA rápido.

Además, la estrategia también establece dos puntos de parada para la línea larga y la línea corta para evitar que las pérdidas se extiendan. En concreto, el margen de parada de múltiples unidades se establece como el 6% del precio de entrada y el margen de parada de una sola sola entrada se establece como el 3% del precio de entrada.

Análisis de las ventajas

Las principales ventajas de esta estrategia frente a la típica estrategia de cruce de la media móvil doble EMA son:

  1. La configuración de varias líneas medias de EMA para la salida de ganancias puede bloquear mejor las ganancias y evitar que las ganancias se contraigan en las correcciones posteriores.

  2. Las posiciones en blanco tienen un menor margen de pérdidas, lo que permite soportar mayores fluctuaciones en el mercado normal y evitar pérdidas frecuentes.

  3. Se pueden establecer diferentes parámetros de la línea media EMA para una salida rentable, y se puede elegir el punto de salida óptimo en función de la situación del mercado.

  4. Las estrategias globales tienen una mejor capacidad de seguimiento de tendencias y pueden capturar los beneficios de las tendencias de línea media y larga.

Análisis de riesgos

Los principales puntos de riesgo de la estrategia incluyen:

  1. En situaciones de crisis, las señales de comercio generadas por la EMA son frecuentes y pueden generar exceso de comercio.

  2. El punto de parada de la línea corta sólo puede prevenir situaciones extremas, no puede prevenir una retirada masiva de la cuenta estratégica.

  3. El riesgo de que la estrategia se retire persiste, y los beneficios podrían reducirse considerablemente en caso de un ajuste de tendencias a largo plazo.

  4. La política es sensible a los ajustes de parámetros, y una configuración incorrecta puede hacer que la política falle.

Dirección de optimización

Teniendo en cuenta los riesgos mencionados, la estrategia puede ser optimizada en los siguientes aspectos:

  1. Aumentar los algoritmos de aprendizaje automático para ayudar a determinar tendencias y reducir la probabilidad de transacciones erróneas.

  2. Se añade un mecanismo de suspensión de pérdidas adaptativo, que permite ajustar dinámicamente la suspensión de pérdidas según la volatilidad del mercado.

  3. Establecer la tasa de utilización de fondos, evitar que las cuentas estratégicas ocupen demasiado dinero y aumentar el mecanismo de administración de posiciones.

  4. Seleccionar las variedades que se negocian, seleccionar las que muestran una tendencia clara, y negociar las que tienen una mayor volatilidad.

  5. Añade un módulo de optimización de parámetros para la optimización y actualización automática de los mismos.

Resumir

La estrategia de cruce de las medias móviles de doble EMA es, en general, una estrategia de seguimiento de tendencias más rentable. Tiene ventajas como la configuración de múltiples medias de EMA para salidas con ganancias, un pequeño stop loss y una fuerte capacidad de seguimiento de tendencias. Pero la estrategia también presenta ciertos riesgos, que requieren una optimización de los ajustes de parámetros y ayudan a mejorar aún más la estabilidad de la estrategia con algoritmos de aprendizaje automático.

Código Fuente de la Estrategia
/*backtest
start: 2023-02-19 00:00:00
end: 2024-02-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © RealTraderAkeme

//@version=5
strategy("AKEME_EMA_CROSS_V6", overlay=true)

////////////////////////////////////////////////////////////PARAMETERS/////////////////////////////////////////////////////////////////
emaFast_op = input(title="Fast_EMA", defval=6)
emaSlow_op = input(title="Slow_EMA", defval=26)
emaExit_op = input(title="Sell_EMA_Exit",defval=10)
emabuyExit_op = input(title="Buy_EMA_Exit",defval=20)
Order_Value = input(defval=1000, title="Order_Value in Pounds") 
Direction_Of_Trade = input(title="Trade Direction", defval="Both")


////////////////////////////////////////////////////////////INPUTS//////////////////////////////////////////////////////////////////

fastEMA = ta.ema(close, emaFast_op)
slowEMA = ta.ema(close,emaSlow_op)
emaExit = ta.ema(close,emaExit_op)
emabuyExit = ta.ema(close,emabuyExit_op)
Entry_Ratio = strategy.openprofit/Order_Value


//////////////////////////////////////////////////////////GRAPHS//////////////////////////////////////////////////////////////////

plot(fastEMA, color=color.orange, linewidth = 2)
plot(slowEMA,color = color.blue, linewidth = 2)
plot(emaExit,color = color.gray, linewidth = 2)
plot(series=emabuyExit, color= color.rgb(210, 74, 235), linewidth=2)


/////////////////////////////////////////////////////Conditions//////////////////////////////////////////////////////////////////////
longOK  = (Direction_Of_Trade == "Long") or (Direction_Of_Trade == "Both")
shortOK = (Direction_Of_Trade == "Short") or (Direction_Of_Trade == "Both")


///////////////////////////////////////////////////////////ENTRIES&EXITS///////////////////////////////////////////////////////////////
longCondition = ta.crossover(fastEMA, slowEMA) and longOK 
if (longCondition)  
    strategy.entry("Buy", strategy.long) 

shortCondition = ta.crossunder(fastEMA, slowEMA) and shortOK
if (shortCondition)
    strategy.entry("Sell", strategy.short)

if (strategy.position_size > 0 and shortCondition)
    strategy.exit(id="exit Buy", stop=close)
    
if (strategy.position_size < 0 and longCondition)
    strategy.exit(id="exit Sell", stop=close)


/////////////////////////////////////////////////////TAKE PROFIT CONDITIONS////////////////////////////////////////////////////////

if  ta.crossunder(fastEMA, emabuyExit) and Entry_Ratio > 0.08333
    strategy.close("Buy",comment = "Exit")

if  ta.crossover(fastEMA, emaExit) and Entry_Ratio > 0.016666
    strategy.close("Sell",comment = "Exit")


if Entry_Ratio > 0.4166666 //0.4166666 
    strategy.close("Buy",comment = "Exit", qty_percent = 100)

if Entry_Ratio > 0.0833333//0.0833333
    strategy.close("Sell",comment = "Exit")//50

if Entry_Ratio > 0.1111111//4000
    strategy.close("Sell",comment = "Exit", qty_percent = 50)

if ta.crossover(fastEMA, emaExit) and Entry_Ratio > 0.278 //Percentage 
    strategy.close("Sell",comment = "Exit")

////////////////////////////////////////////STOP LOSS AS PERCENTAGE OF ENTRY CONDITIONS///////////////////////////////////////////

if Entry_Ratio < -0.05555555555
    strategy.close("Buy",comment = "Exit")
if Entry_Ratio < -0.027777777777
    strategy.close("Sell",comment = "Exit")// The Sell Stoloss is half the buying stoploss.