Estrategia de seguimiento del impulso del precio

El autor:¿ Qué pasa?, Fecha: 2024-01-03 17:32:14
Las etiquetas:

img

Resumen general

Esta estrategia utiliza indicadores de impulso de precios para determinar la dirección de la negociación. Específicamente, calcula el promedio móvil y el precio medio respectivamente. Cuando el precio cruza por encima del promedio móvil y el precio medio, se genera una señal de compra. Para filtrar las señales falsas, no requiere señales anteriores similares. Luego guarda el estado de la señal y genera la señal de posición de apertura final en combinación con el promedio móvil. La estrategia también contiene configuraciones de stop loss y take profit.

Principio de la estrategia

La estrategia se basa principalmente en indicadores de impulso de precios para juzgar la dirección de la tendencia.

swmaClose = swma(close)
vwapClose = vwap(close) 

¿Dónde está?swmaes la media móvil suavizada yvwapLos dos pueden reflejar el nivel medio de precios.

Luego compare el precio con el promedio para ver si el precio cruza por encima del promedio móvil y el precio medio, para juzgar si es una señal alcista:

swmaLong = close > swmaClose 
vwapLong = close > vwapClose

Para filtrar las señales falsas, no se requieren señales previas de estos dos indicadores:

triggerLong = vwapLong and not vwapLong[1] and not swmaLong and not swmaLong[1] 

A continuación, guarde la señal alcista:

saveLong = false, saveLong := triggerLong ? true : not vwapLong ? false : saveLong[1] 

Por último, cuando la señal de cruce guardada y el precio vuelvan a cruzar por encima de la media móvil, se genera la señal de posición de apertura:

startLong = saveLong and swmaLong

Esto puede filtrar algunas señales falsas y hacer que las señales sean más confiables.

La estrategia también contiene configuraciones de stop loss y take profit.

Análisis de ventajas

La estrategia tiene las siguientes ventajas:

  1. El uso de indicadores de impulso de precios puede juzgar mejor la dirección de la tendencia
  2. La combinación de dos indicadores y la verificación en varios pasos puede filtrar las señales falsas y hacer que la estrategia sea más confiable
  3. Los ajustes de stop loss y take profit son razonables para controlar el riesgo de una sola operación
  4. Los parámetros de la estrategia pueden configurarse para adaptarse a diferentes entornos de mercado
  5. La lógica de la estrategia es simple y directa, fácil de entender e implementar

Análisis de riesgos

La estrategia también tiene algunos riesgos:

  1. El indicador de la media móvil tiene un retraso y puede pasar por alto algunas fluctuaciones de precios
  2. El efecto depende de la configuración de parámetros, y diferentes combinaciones de parámetros pueden hacer grandes diferencias
  3. Hay relativamente pocas señales de compra, con algunos riesgos comerciales perdidos
  4. La verificación en varios pasos filtrará algunas oportunidades que pueden afectar el nivel de ganancias

Contramedidas:

  1. Prueba de diferentes parámetros de media móvil para la optimización de parámetros
  2. Simplificar ligeramente el juicio lógico para aumentar las señales de compra
  3. Ajustar la relación stop loss y take profit para controlar la pérdida única

Direcciones de optimización

La estrategia también puede optimizarse en las siguientes direcciones:

  1. Prueba más indicadores de impulso de precios como el MACD, el DMI, etc.
  2. Añadir juicios de señales de venta para implementar el comercio bidireccional
  3. Incorporar indicadores de volumen de negociación para evitar posibles rupturas falsas
  4. Optimizar la configuración de los parámetros en función de los resultados de las pruebas de retroceso
  5. Considere ajustar automáticamente los parámetros en función de las condiciones del mercado
  6. Añadir algoritmos de aprendizaje automático para lograr la optimización automática de parámetros

Estas optimizaciones pueden mejorar la flexibilidad, robustez y rentabilidad de la estrategia.

Resumen de las actividades

En general, esta estrategia de seguimiento del impulso del precio es una estrategia de seguimiento de tendencias simple, directa y lógica. La estrategia utiliza promedios móviles de precios y precios medios para determinar la dirección del impulso del precio, y diseña un mecanismo de verificación de varios pasos para mejorar la calidad de la señal. La estrategia también contiene configuraciones razonables de stop loss y take profit. En términos de código, la lógica de la estrategia es muy concisa, requiriendo solo 20+ líneas de script de Pine para implementar. En resumen, esta estrategia es un muy buen ejemplo de aprendizaje, los principiantes pueden usarla como un muy buen punto de partida para comprender las estrategias comerciales cuantitativas. Por supuesto, la estrategia en sí misma también tiene un valor comercial práctico. A través de la optimización de parámetros y la expansión de funciones, puede convertirse en un sistema de seguimiento práctico para evitar ruido y tendencias comerciales.


/*backtest
start: 2023-12-03 00:00:00
end: 2024-01-02 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title = "Simple Price Momentum", shorttitle = "SPM", overlay = true, initial_capital = 20000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, commission_value = 0.025)

// How To Create A Simple Trading Strategy With TradingView
// https://docs.google.com/document/d/1fXxCtPuGgTXb-RuBJNbwlfgkeiLTK5060LfTrzRlr5k/view

swmaClose = swma(close)
vwapClose = vwap(close)

swmaLong = close > swmaClose
vwapLong = close > vwapClose

triggerLong = vwapLong and not vwapLong[1] and not swmaLong and not swmaLong[1]
saveLong = false, saveLong := triggerLong ? true : not vwapLong ? false : saveLong[1]

startLong = saveLong and swmaLong
startLong := input(false, "Consecutive Orders") ? startLong : startLong and not startLong[1]

stopLoss = input(250, "Stop Loss", step = 50)
takeProfit = input(10, "Reward/Risk") * stopLoss

strategy.entry("Open Long", strategy.long, when = startLong)
strategy.exit("Exit Long", "Open Long", profit = stopLoss, loss = takeProfit)

// bgcolor(swmaLong ? color.blue : na)
// bgcolor(vwapLong ? color.orange : na)
// bgcolor(triggerLong ? color.purple : na)
// bgcolor(saveLong ? color.yellow : na)
bgcolor(startLong[1] ? color.green : na)


Más.