Estrategia basada en el seguimiento de tendencias de medias móviles


Fecha de creación: 2024-02-29 14:00:35 Última modificación: 2024-02-29 14:00:35
Copiar: 0 Número de Visitas: 599
1
Seguir
1617
Seguidores

Estrategia basada en el seguimiento de tendencias de medias móviles

Descripción general

La estrategia se basa en el cálculo de la línea media de la vía, la creación de posiciones de más o de menos cuando el precio rompe la línea media de la vía, y el seguimiento de la tendencia de los precios de las acciones.

Principio de estrategia

La estrategia primero calcula el promedio del punto más alto de 20 días como la trayectoria ascendente del canal, el promedio del punto más bajo de 20 días como la trayectoria descendente del canal, y calcula la línea media del canal. La línea media del canal representa la tendencia media de precios reciente.

Análisis de las ventajas

  • Utiliza el canal para seguir las tendencias de los precios y evitar que los fondos estén bloqueados en el mercado horizontal.
  • La entrada es fácilmente controlada, ya que los puntos de venta y compra se determinan por el ascenso y descenso de las vías.
  • El canal es un filtro que elimina parte del ruido y aumenta la probabilidad de obtener ganancias.
  • Se pueden configurar los parámetros del canal para ajustar la sensibilidad de la estrategia.

Análisis de riesgos

  • La línea media de prueba de reajuste puede ocurrir después de un gran avance en el canal, momento en el que se ajustará;
  • Las acciones convulsivas no son adecuadas para esta estrategia y son propensas a un arbitraje de alta frecuencia.
  • La configuración incorrecta de los parámetros también puede afectar la eficacia de la política.

Dirección de optimización

  • Optimización de los parámetros del ciclo de la vía para probar el impacto de los diferentes parámetros en la eficacia de la estrategia.
  • Incrementar las estrategias de stop loss y controlar las pérdidas individuales y totales;
  • En combinación con otros indicadores como ayuda para el juicio, para evitar señales erróneas;
  • La construcción de la bodega en etapas para reducir la probabilidad de que la línea media de la prueba de reajuste de la ruptura sea encausada;

Resumir

La estrategia en general es más simple y directa, para determinar la tendencia del precio de las acciones a través del canal de precios básico, pertenece al tipo de estrategia de seguimiento de tendencias. La ventaja es que es fácil de operar, aprovechar al máximo las oportunidades de inversión que trae la tendencia de los precios, evitar que los fondos se bloqueen. La desventaja es que la configuración inadecuada de los parámetros puede afectar el efecto, y existe el riesgo de una cierta prueba de ajuste.

Código Fuente de la Estrategia
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//future strategy
//strategy(title = "stub", default_qty_type = strategy.fixed, default_qty_value = 1,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2)
//stock strategy
strategy(title = "dc", default_qty_type = strategy.percent_of_equity, default_qty_value = 20,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=.005)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 20,  overlay = true)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 20,  overlay = true, commission_type=strategy.commission.percent,commission_value=.25,default_qty_value=20)


testStartYear = input(2000, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testEndYear = input(2019, "Backtest Start Year")
testEndMonth = input(3)
testEndDay = input(31, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


testPeriod() =>
    true
    //time >= testPeriodStart  ? true : false

dcPeriod = 20

dcUpper = highest(close, dcPeriod)[1]
dcLower = lowest(close, dcPeriod)[1]
dcAverage = (dcUpper + dcLower) / 2

plot(dcLower, style=line, linewidth=3, color=red, offset=1)
plot(dcUpper, style=line, linewidth=3, color=aqua, offset=1)

plot(dcAverage, color=black, style=line, linewidth=3, title="Mid-Line Average")

strategy.entry("simpleBuy", strategy.long, when=close > dcAverage)
strategy.close("simpleBuy",when=close < dcLower)
    
strategy.entry("simpleSell", strategy.short,when=close < dcAverage)
strategy.close("simpleSell",when=close > dcAverage)