Estrategia de seguimiento de tendencias basada en medias móviles


Fecha de creación: 2023-12-20 14:23:49 Última modificación: 2023-12-20 14:23:49
Copiar: 0 Número de Visitas: 771
1
Seguir
1621
Seguidores

Estrategia de seguimiento de tendencias basada en medias móviles

Descripción general

La estrategia se basa en el modelo de selección de acciones de Mark Mneveny, combinado con un indicador de promedio móvil para determinar la tendencia del precio de las acciones, para realizar compras y paradas automáticas. La estrategia determina principalmente si las acciones están en una tendencia alcista y si se rompe el promedio móvil clave, lo que genera una señal de compra.

Principio de estrategia

La estrategia se basa principalmente en las siguientes condiciones, que generan una señal de compra cuando se cumplen simultáneamente:

  1. El precio actual de las acciones está por encima de las medias móviles de 150 y 200 días.
  2. El promedio móvil de 150 días es mayor que el promedio móvil de 200 días.
  3. El promedio móvil diario de 200 está en tendencia al alza en el último mes
  4. El promedio móvil de 50 días es más alto que el promedio móvil de 150 y 200 días
  5. El precio actual de las acciones está por encima de la media móvil de 50 días
  6. El precio de las acciones ha subido más del 25% desde su mínimo de 52 semanas.
  7. Las acciones están cerca de su máximo de 52 semanas.

Cuando se cumplen las condiciones anteriores, la estrategia determina que el precio de las acciones está en la fase ascendente y genera una señal de compra.

Además, la estrategia establece al mismo tiempo una línea de stop loss, que se realiza cuando el precio de las acciones retrocede un 5% o sube un 10% desde el punto más alto.

Ventajas estratégicas

  1. Utiliza el método de selección de acciones de Mark Menevney para aumentar la probabilidad de obtener ganancias
  2. Utiliza una media móvil múltiple para confirmar tendencias y evitar puntos de compra perdidos.
  3. Establecer mecanismos de detención de pérdidas para evitar grandes pérdidas

Análisis de riesgos

  1. El precio de las acciones podría ajustarse en el corto plazo, lo que podría desencadenar un stop loss.
  2. Los promedios móviles no son un buen indicador de la tendencia y pueden dar falsas brechas.
  3. La proporción de paradas de stop loss no es perfecta y puede detenerse prematuramente o ampliar las pérdidas

Dirección de optimización

  1. Combinaciones de promedios móviles para diferentes parámetros
  2. Se pueden agregar otros indicadores técnicos para determinar el momento de compra
  3. Ajuste de proporción para optimizar la parada de pérdidas

Resumir

La estrategia en su conjunto sigue la lógica del comercio de tendencias, generando una señal de compra en el supuesto de que se confirme una tendencia al alza en el precio de las acciones. Al mismo tiempo, se establece un mecanismo de control de pérdidas. Al optimizar los parámetros detallados, se puede mejorar aún más la estabilidad y la rentabilidad de la estrategia.

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

//@version=4
strategy(title="Pure Mark Minervini 10%TP 5%CL", pyramiding = 0, commission_type=strategy.commission.percent, commission_value=0.08, overlay=true)

ma50 = sma(close,50)
ma150 = sma(close,150)
ma200 = sma(close,200)
ma200_22 = ma200[22]

high_loopback = input(260, "High Lookback Length")
low_loopback = input(260, "Low Lookback Length")
highest_price = highest(high, high_loopback)
lowest_price = lowest(low, low_loopback)
above52lo = ((close/lowest_price)-1)*100
below52hi = (1-(close/highest_price))*100
ep = strategy.position_avg_price

trigger = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3
var label maLabel = na
if (trigger)
    yLocation = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3 ?
         yloc.abovebar :
         yloc.belowbar

    // labelStyle = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3 ?
    //      label.style_labeldown :
    //      label.style_labelup

buy = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3
sell = close>ep*1.1 or close<ep*0.95

strategy.entry("TF", strategy.long, when = buy)
strategy.close("TF", when = sell)