Breakout de fin de mes en la estrategia de la media móvil de 200 días

El autor:¿ Qué pasa?, Fecha: 2023-12-08 16:02:08
Las etiquetas:

img

Resumen general

Esta estrategia se basa en la ruptura del precio de la media móvil de 200 días al final del mes para capturar la dirección de tendencia de los precios de las acciones.

Principio de la estrategia

  1. Utilice la media móvil simple de 200 días dma200 como indicador para juzgar la tendencia de los precios
  2. En el último día de negociación de cada mes, juzgue si el precio de cierre de cierre es superior a dma200
  3. Si el precio de cierre rompe el MA de 200 días, establecer una posición larga completa al inicio del siguiente día de negociación
  4. Si el precio de cierre se rompe por debajo del MA de 200 días, se liquidarán todas las posiciones al inicio del siguiente día de negociación.
  5. Esto puede lograr el efecto de seguir la tendencia, estableciendo posiciones cuando los precios de las acciones entran en una tendencia al alza y evitando tendencias a la baja

Análisis de ventajas

  1. La estrategia tiene la ventaja de ser sencilla y eficaz, de ser fácil de entender e implementar
  2. Tomar posiciones al final del mes puede reducir la frecuencia de las operaciones y minimizar los costes comerciales y los efectos del deslizamiento
  3. El MA de 200 días es un indicador de evaluación de tendencias a medio y largo plazo muy utilizado, eficaz para la mayoría de las existencias
  4. La estrategia tiene una utilización relativamente pequeña y una disminución máxima, con riesgos controlables

Análisis de riesgos

  1. El MA de 200 días puede no ser lo suficientemente sensible como para que algunas acciones capturen las reversiones de precios a tiempo
  2. Solo hay un punto de negociación al mes para tomar posiciones, lo que puede hacer que se pierdan oportunidades de alza/baja
  3. La estrategia puede no evaluar correctamente cuando la tendencia general del mercado es incierta
  4. Para reducir estos riesgos, deben combinarse otros indicadores

Direcciones de optimización

  1. Considere aumentar los puntos de negociación a principios o mediados de mes para mejorar la frecuencia de la estrategia
  2. Añadir indicadores como las bandas de Bollinger para juzgar la fluctuación de precios y evitar operaciones incorrectas
  3. Evaluación de los efectos adecuados de diferentes parámetros de admisión en diferentes poblaciones para encontrar combinaciones óptimas de parámetros
  4. Establecer mecanismos dinámicos de dimensionamiento de posiciones para detener activamente las pérdidas cuando el descenso sea demasiado alto

Resumen de las actividades

La estrategia es relativamente simple y práctica en general, capturando efectivamente las tendencias de precios a mediano y largo plazo de las acciones a través de la ruptura al final del mes del MA de 200 días, con una reducción y riesgos relativamente pequeños.


/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © muscleriot
//200 dma
//2000-2016 backtested 
//1 signal per month only at end of month
//If > 200DMA enter long
//If < 200DMA goto cash
//results: 318% drawdown 17% vs 125% with 55% drawdown for buy and hold
//@version=5
strategy("200DMA last DOM - ajh", overlay =true,default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Use 100% of  equity always

dma200 = ta.sma(close, 200)
plot(dma200, color=color.red, linewidth = 2)
//e =dayofmonth(time)
// backtesting date range
from_day = input.int(defval=1, title="From Day", minval=1, maxval=31)
from_month = input.int(defval=1, title="From Month", minval=1, maxval=12)
from_year = input.int(defval=2018, title="From Year", minval=1900)

to_day = input.int(defval=1, title="To Day", minval=1, maxval=31)
to_month = input.int(defval=1, title="To Month", minval=1, maxval=12)
to_year = input.int(defval=9999, title="To Year", minval=1900)

time_cond = time > timestamp(from_year, from_month, from_day, 00, 00) and 
   time < timestamp(to_year, to_month, to_day, 23, 59)



xLong = dayofmonth(time) == 30 and (close > dma200) ? true : na
xSell = dayofmonth(time) == 30 and (close < dma200) ? true : na
plotchar(xLong, "long","L", color=color.green)    
plotchar(xSell, "Sell","S", color=color.red)    
if (xLong == true) and time_cond
    strategy.entry("long", strategy.long)
if (xSell == true) and time_cond
    strategy.close("long")

Más.