Tendencia siguiendo una estrategia basada en la media móvil

El autor:¿ Qué pasa?, Fecha: 2023-12-20 14:23:49
Las etiquetas:

img

Resumen general

Esta estrategia utiliza la plantilla de selección de acciones de Mark Minervini y los indicadores de promedio móvil para determinar las tendencias de precios para la entrada automática y el stop-loss.

Principio de la estrategia

La estrategia evalúa principalmente las siguientes condiciones y genera una señal de compra cuando se cumplen al mismo tiempo:

  1. El precio actual de las acciones está por encima de las líneas de promedio móvil de 150 y 200 días.
  2. El promedio móvil de 150 días está por encima del promedio móvil de 200 días.
  3. El promedio móvil de 200 días ha estado subiendo durante al menos 1 mes.
  4. El promedio móvil de 50 días está por encima de los promedios móviles de 150 y 200 días.
  5. El precio actual de las acciones está por encima del promedio móvil de 50 días.
  6. El precio actual de las acciones está al menos 25% por encima de su mínimo de 52 semanas.
  7. El precio actual de las acciones está dentro de al menos el 25% de su máximo de 52 semanas.

Cuando se cumplen las condiciones anteriores, la estrategia juzga que el precio de la acción está en una tendencia al alza y genera una señal de compra.

Además, la estrategia también establece una línea de stop-loss. Cuando el precio de las acciones cae un 5% desde su pico o sube un 10%, se detendrá la pérdida o se obtendrá ganancia.

Análisis de ventajas

  1. Utilice las ideas de selección de acciones de Mark Minervini para mejorar la rentabilidad.
  2. Utilice varias medias móviles para confirmar la tendencia y evitar perder puntos de compra.
  3. Configurar el mecanismo de stop-loss para evitar pérdidas enormes.

Análisis de riesgos

  1. Los precios de las acciones pueden ajustarse a corto plazo, lo que desencadena un stop loss.
  2. Las medias móviles no pueden determinar completamente las tendencias y pueden producirse falsas rupturas.
  3. Las tasas de stop loss y take profit establecidas no son perfectas, pueden generar ganancias o aumentar las pérdidas prematuramente.

Optimización

  1. Combinaciones de medias móviles con diferentes parámetros.
  2. Añadir otros indicadores técnicos para determinar el momento de entrada.
  3. Optimice los ajustes de stop loss y take profit ratio.

Resumen de las actividades

La estrategia en general sigue la idea del comercio de tendencia, generando señales de compra cuando se confirma la tendencia alcista de los precios de las acciones. Al mismo tiempo, se establece un mecanismo de stop-loss para controlar los riesgos. Al optimizar varios parámetros detallados, se puede mejorar aún más la estabilidad y la rentabilidad de la estrategia. Sin embargo, ninguna estrategia puede evitar completamente los riesgos del mercado, por lo que los inversores deben tratarla con precaución.


/*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)

Más.