Tendencia siguiendo la estrategia de promedio móvil

El autor:¿ Qué pasa?, fecha: 2024-02-29 14:00:35
Las etiquetas:

img

Resumen general

Esta estrategia calcula las líneas de media móvil del canal y establece posiciones largas o cortas cuando el precio rompe las líneas del canal para seguir la tendencia del precio de la acción.

Principio de la estrategia

La estrategia primero calcula el promedio alto de 20 días como el rieles superior del canal, el promedio bajo de 20 días como el rieles inferior del canal, y calcula la línea media del canal. La línea media del canal representa la tendencia de precio promedio reciente. Cuando el precio rompe la línea media del canal hacia arriba, se establece una posición larga. Cuando el precio rompe la línea media del canal hacia abajo, se establece una posición corta. Siga la tendencia del precio hasta que el precio vuelva a caer al lado opuesto del rango del canal, cierre la posición.

Análisis de ventajas

  • Utilizar el canal para rastrear las tendencias de los precios, evitar que los fondos estén bloqueados en mercados diferentes;
  • Los rieles de canal ayudan a determinar los puntos de entrada y salida, lo que facilita el control de las entradas;
  • El rango de canales filtra un poco de ruido y aumenta la probabilidad de ganancia;
  • Los parámetros del canal pueden ajustarse para ajustar la sensibilidad de la estrategia;

Análisis de riesgos

  • Las rupturas significativas de la línea media pueden ser seguidas de pruebas de retroceso de la línea media, lo que resulta en que quede atrapada;
  • Las acciones oscilantes no son adecuadas para esta estrategia y pueden conducir a operaciones de alta frecuencia;
  • La configuración incorrecta de los parámetros también puede afectar al rendimiento de la estrategia;

Direcciones de optimización

  • Optimizar los parámetros del ciclo del canal para probar los impactos de diferentes parámetros;
  • Añadir estrategias de toma de ganancias y stop loss para controlar las pérdidas individuales y totales;
  • Combinar otros indicadores como juicios auxiliares para evitar señales erróneas;
  • Se tomarán posiciones en lotes para reducir la probabilidad de quedar atrapados durante los ensayos de retroceso.

Resumen de las actividades

En general, esta estrategia es relativamente simple y directa. Juzga las tendencias del precio de las acciones a través de canales básicos de precios y pertenece al tipo de tendencia siguiente. Las ventajas son la fácil operación, el uso completo de las oportunidades de inversión traídas por las tendencias de precios y evitar el bloqueo de fondos. Las desventajas son que la configuración inadecuada de parámetros puede afectar el rendimiento y hay ciertos riesgos de pruebas de retroceso. A través de una optimización razonable, se puede mejorar la estabilidad de la estrategia y mejorar el rendimiento comercial real.


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



Más.