Estrategia de seguimiento de tendencias basada en la desviación estándar del volumen


Fecha de creación: 2023-11-21 11:11:51 Última modificación: 2023-11-21 11:11:51
Copiar: 0 Número de Visitas: 706
1
Seguir
1617
Seguidores

Estrategia de seguimiento de tendencias basada en la desviación estándar del volumen

Descripción general

La estrategia utiliza las medias móviles de volumen de transacciones y el estándar de diferencia para construir un modelo de volumen de transacciones, en combinación con el precio de las medias móviles para determinar la dirección de la tendencia y emitir una señal de transacción en caso de volumen de transacciones normales. La estrategia también establece un límite alto o bajo de volumen de transacciones, que puede evitar la emisión de señales erróneas en caso de volumen de transacciones anormales.

Principio de estrategia

La lógica central es construir un modelo de volumen de transacciones y un juicio de tendencias de precios.

  1. Construir un modelo de volumen de operaciones
    • Calcula el volumen de transacciones con una media móvil de 40 períodos de duración (vavg) como referencia del volumen de transacciones
    • Calcula el volumen de transacciones con una diferencia estándar de 40 ciclos de longitud vsd como el rango de fluctuación normal del volumen de transacciones
    • Calcula el volumen de transacciones con una media móvil de 5 períodos de duración como el nivel de volumen de transacciones más reciente
    • Establecer el límite mínimo de transacciones como vavg menos 1 por vsd
    • Establecer el uplimit máximo de la transacción como vvg más 2 veces vsd
  2. Juzgar las tendencias de los precios
    • Cálculo de la longitud de los precios de 20 ciclos de la media móvil mavg como indicador de la tendencia de precios
  3. Emite una señal de intercambio.
    • Cuando el mavg pasa el día anterior, se hace más en caso de que elvavgn esté por encima del lowlimit
    • Cuando mavg debajo de su día anterior, hacer un vacío en caso de quevavgn sea superior al límite bajo
    • El movimiento de las vvg se estabilizará si se invierte

La estrategia combina modelos de volumen de transacciones y tendencias de precios para evitar el seguimiento de tendencias de precios en casos de volumen de transacciones anormales y puede filtrar algunas señales falsas.

Análisis de las ventajas estratégicas

  1. La combinación de los cambios en el volumen de transacciones para determinar la tendencia de los precios puede filtrar algunas señales falsas y hacer que las señales sean más fiables
  2. Modelado de volúmenes de transacciones utilizando el diferencial estándar de volumen de transacciones para evitar el impacto de los cambios extremos en el volumen de transacciones
  3. Los parámetros de la media móvil son ajustables para adaptarse a los cambios de precios en diferentes períodos

Análisis de riesgos estratégicos

  1. El volumen de transacciones y los precios pueden desviarse en el corto plazo, lo que puede conducir a una tendencia de precios perdida.
  2. La configuración incorrecta de los parámetros de volumen de transacciones puede causar la falla del modelo
  3. La estrategia en sí misma no tiene una configuración de stop loss, lo que puede generar grandes pérdidas

La solución al riesgo:

  1. Ajuste adecuado de los parámetros de las medias móviles para optimizar el modelo
  2. Añadir la lógica de stop loss para controlar las pérdidas individuales

Dirección de optimización de la estrategia

  1. Añadir más indicadores para determinar la tendencia de los precios, lo que hace que la señal sea más precisa y confiable
  2. Añadir módulos de aprendizaje automático para entrenar el volumen de transacciones y los parámetros de los modelos de precios basados en datos
  3. Aumentar la lógica de stop loss para evitar que las pérdidas individuales sean excesivas
  4. Optimización de la lógica de entrada para garantizar una mayor probabilidad de captura de tendencias
  5. Combinación de indicadores similares a ATR para ajustar automáticamente la distancia de parada

Resumir

La estrategia tiene una idea clara, utiliza el volumen de operaciones para evitar el seguimiento de falsas tendencias, las señales de entrada son más fiables. Sin embargo, la estrategia en sí misma es simple y tiene un gran espacio de expansión, se puede optimizar mediante la adición de más módulos de indicadores, aprendizaje automático, parada de pérdidas, etc., para mejorar aún más la estabilidad y la capacidad de capturar tendencias.

Código Fuente de la Estrategia
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 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/
// © dongyun

//@version=4
strategy("交易量底部标准差系统", overlay=true)

options = input(1,'')
length = input(40,'')
nlow = input(5,'')
factor = input(1.0,'')

vavg = 0.0
vavgn = 0.0
vsd = 0.0
lowlimit = 0.0
uplimit = 0.0
mavg = 0.0
aror = 0.0
adjvol = 0.0
savevol = 0.0


//Find average volume, replacing bad values
adjvol := volume

if (volume != 0)
	savevol := volume
else
	savevol := savevol[1]
	adjvol := savevol


// Replace high volume days because they distort standard deviation
if (adjvol > 2 * factor * nz(vsd[1]))
	adjvol := savevol
else
	adjvol := adjvol[1]

vavg := sma(adjvol,length)
vsd := stdev(adjvol,length)
vavgn := sma(adjvol,nlow)

// Extreme volume limits
lowlimit := vavg - factor * vsd
uplimit := vavg + 2 * factor * vsd

// System rules based on moving average trend
mavg := sma(close,length/2)

// Only enter on new trend signals
if (options == 2)
	if (mavg > mavg[1] and mavg[1] <= mavg[2])
		strategy.entry("Long", strategy.long)
	if (mavg<mavg[1] and mavg[1]>=mavg[2])
		strategy.entry("Short", strategy.short)
else
	if (mavg > mavg[1] and vavgn > lowlimit)
		strategy.entry("Long", strategy.long)
	if (mavg < mavg[1] and vavgn > lowlimit)
		strategy.entry("Short", strategy.short)

// Exit on low volume
if (options != 1)
	if (mavg<mavg[1] or (strategy.position_size > 0 and vavgn<= lowlimit))
		strategy.close("Long")
	if (mavg>mavg[1] or (strategy.position_size > 0 and vavgn<= lowlimit))
		strategy.close("Short")
else
	if (mavg < mavg[1])
		strategy.close("Long")
	if (mavg > mavg[1])
		strategy.close("Short")