Estrategia combinada de optimización de tendencias de momentum


Fecha de creación: 2024-02-06 15:11:57 Última modificación: 2024-02-06 15:11:57
Copiar: 4 Número de Visitas: 756
1
Seguir
1617
Seguidores

Estrategia combinada de optimización de tendencias de momentum

Descripción general

La estrategia de combinación de optimización de tendencias dinámicas es una estrategia de comercio cuantitativa de línea media-larga que combina el factor dinámico y el factor de tendencia para generar señales de compra y venta a través de una combinación de indicadores de medias móviles, medias móviles, volumen de transacción y inclinación. La estrategia se optimiza para el comercio T+1 y solo es adecuada para hacer múltiples direcciones.

Principio de estrategia

La estrategia utiliza el promedio móvil simple de 6 días y el promedio móvil simple de 35 días para definir dos promedios móviles. La línea de señal de compra se define como el promedio móvil del índice de 2 días y la línea de señal de venta se calcula la pendiente de cálculo de la pendiente de cálculo de los últimos 8 días. Además, se define el promedio móvil del índice de volumen de transacción de 20 días como un indicador de volumen de transacción.

Cuando el precio de liquidación de una acción es superior a la media móvil de 35 días y el volumen de transacción es superior al promedio de volumen de transacción de 20 días, y se comprueba por semana que es un mercado de múltiples cabezas, se activa una señal de compra desde la cruz de oro inferior; por el contrario, se activa una señal de venta desde la cruz de muerte superior.

En cuanto a la gestión de riesgos, la estrategia introduce un mecanismo de ajuste dinámico de la posición. Se calcula la posición real en función de los intereses de la cuenta, la proporción de posición máxima, el ATR y el factor de riesgo. Esto ayuda a controlar la retirada máxima de la estrategia.

Análisis de las ventajas

La estrategia combina el factor de dinámica y el filtro de tendencia, lo que permite identificar la dirección de la línea media y larga. Al mismo tiempo, el filtro del ruido también está en su lugar, lo que ayuda a evitar señales erróneas en situaciones de convulsiones. Además, la introducción de un mecanismo de gestión de riesgos también hace que el control de la máxima retirada sea adecuado, lo que garantiza la solidez de la estrategia.

Según los resultados de la retrospectiva, el rendimiento general de la estrategia fue de 128.86%, con un alfa muy significativo. Al mismo tiempo, la tasa de victoria de la estrategia alcanzó el 60.66%, lo que refleja la estabilidad del efecto de la estrategia.

Análisis de riesgos

A pesar de que la estrategia en sí misma ha optimizado el mecanismo de gestión de riesgos, todavía existen ciertos riesgos de los que hay que preocuparse. En concreto, los principales riesgos incluyen:

  1. Riesgo de retiro: desde la pérdida máxima individual de 222,021.46 dólares, el retiro estratégico es mayor. Esto está relacionado con el mecanismo de administración de posiciones imperfecto.

  2. Riesgo de estabilidad de la señal. Las señales de estrategia pueden verse afectadas por factores específicos de la acción, lo que genera señales erróneas. Esto puede tener un impacto en los beneficios de la estrategia.

  3. Riesgo de cambio en el entorno del mercado. Si el entorno del mercado macroeconómico cambia significativamente, los parámetros de la estrategia pueden necesitar ser ajustados para mantener su efecto.

Dirección de optimización

De acuerdo con el análisis de riesgos, la estrategia aún tiene la necesidad y la posibilidad de ser optimizada.

  1. Desde la situación de pérdidas máximas, se puede optimizar aún más el mecanismo de gestión de posiciones, introduciendo un módulo de stop loss para controlar la magnitud de las pérdidas individuales.

  2. Se puede considerar la inclusión de más indicadores de filtración para identificar algunos fenómenos individuales especiales para reducir la probabilidad de señales erróneas. Por ejemplo, la introducción de precios de medida que se desvían de los indicadores.

  3. Los parámetros de la estrategia deben ser continuamente evaluados y verificados, y los parámetros deben ajustarse a tiempo según los cambios en el entorno del mercado. Al mismo tiempo, se debe evitar que ocurra una optimización excesiva.

Resumir

La estrategia de combinación de optimización de tendencias dinámicas es una estrategia de comercio cuantitativo de línea media y larga, que combina el factor de dinámica y el filtro de tendencias, optimizada específicamente para el comercio T + 1. Desde el punto de vista de los indicadores de retroalimentación, el efecto general de la estrategia es notable y tiene un alfa muy sorprendente. Pero también se debe prestar atención a los posibles riesgos y ajustar los parámetros a tiempo según el entorno del mercado.

Código Fuente de la Estrategia
/*backtest
start: 2024-01-06 00:00:00
end: 2024-02-05 00:00:00
period: 1h
basePeriod: 15m
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/
// © fzj20020403

////@version=5
//@version=5
strategy("Optimized Zhaocaijinbao", overlay=true, margin_long=100, margin_short=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Define two moving averages
ma6 = ta.sma(close, 6)
ma35 = ta.sma(close, 35)

// Define buy and sell signal lines
buyLine = ta.ema(close, 2)
sellSlope = (close - close[8]) / 8
sellLine = sellSlope * 1 + ta.sma(close, 8)

// Define volume indicator
volumeEMA = ta.ema(volume, 20)

// Define weekly slope factor
weeklyMa = ta.sma(close, 50)
weeklySlope = (weeklyMa - weeklyMa[4]) / 4 > 0

// Generate buy and sell signals
buySignal = ta.crossover(buyLine, sellLine) and close > ma35 and volume > volumeEMA and weeklySlope
sellSignal = ta.crossunder(sellLine, buyLine)

// Define dynamic position sizing factor
equity = strategy.equity
maxPositionSize = equity * input.float(title='Max Position Size (%)', defval=0.01, minval=0.001, maxval=0.5, step=0.001)
riskFactor = input.float(title='Risk Factor', defval=2.0, minval=0.1, maxval=10.0, step=0.1)
atr = ta.atr(14)
positionSize = maxPositionSize * riskFactor / atr

// Define position status
var inPosition = false

// Define buy and sell conditions
buyCondition = buySignal and not inPosition
sellCondition = sellSignal and inPosition

// Perform buy and sell operations
if (buyCondition)
    strategy.entry("Long", strategy.long, qty=positionSize)
    inPosition := true
if (sellCondition)
    strategy.close("Long")
    inPosition := false

// Draw vertical line markers for buy and sell signals
plotshape(buyCondition, style=shape.arrowdown, location=location.belowbar, color=color.green, size=size.small)
plotshape(sellCondition, style=shape.arrowup, location=location.abovebar, color=color.red, size=size.small)

// Draw two moving averages
plot(ma6, color=color.blue)
plot(ma35, color=color.orange)

// Draw volume indicator line
plot(volumeEMA, color=color.yellow)

// Define stop loss and take profit
stopLoss = strategy.position_avg_price * 0.5
takeProfit = strategy.position_avg_price * 1.25

if inPosition
    strategy.exit("Long Stop Loss", "Long", stop=stopLoss)
    strategy.exit("Long Take Profit", "Long", limit=takeProfit)