Estrategia de trading cuantitativo de reversión con seguimiento bidireccional


Fecha de creación: 2024-02-22 13:46:51 Última modificación: 2024-02-22 13:46:51
Copiar: 0 Número de Visitas: 615
1
Seguir
1617
Seguidores

Estrategia de trading cuantitativo de reversión con seguimiento bidireccional

Esta estrategia utiliza un mecanismo de seguimiento bidireccional, combinado con una señal de reversión de precios y un indicador de volumen de transacción, para realizar operaciones cuantitativas automatizadas. Su mayor ventaja reside en el control de riesgos confiables, para bloquear las ganancias y evitar la expansión de las pérdidas mediante el seguimiento de los estancamientos. Al mismo tiempo, las señales de reversión de comercio aumentan la victoria de la estrategia.

Principio de estrategia

Esta estrategia consta de dos subestrategias. La primera subestrategia utiliza un indicador aleatorio para determinar las señales de reversión de precios. La lógica es la siguiente:

Si el precio de cierre sube dos días seguidos y la línea Slow K está por debajo de 50 en el día 9, haga más; si el precio de cierre baja dos días seguidos y la línea Fast K está por encima de 50 en el día 9, haga un vacío.

La segunda subestrategia es la combinación de indicadores de volumen de transacciones y debilidades en el juicio. En concreto, es comparar el volumen de transacciones actual con el promedio de volumen de transacciones de 40 días. Si el volumen de transacciones actual es mayor que el promedio, considere que la cantidad puede atacar, pertenece a una señal de reversión, hacer vacío; Si el volumen de transacciones actuales es menor que el promedio, considere que la cantidad puede bajar, pertenece a una señal de reversión, hacer más.

La señal de transacción final es la intersección de las dos señales de estrategias secundarias mencionadas anteriormente. Es decir, la posición se abre cuando las dos estrategias emiten señales al mismo tiempo. Mediante este método de filtrado de Intersection Targets, se puede filtrar parte de la transacción de ruido y mejorar la calidad de la señal.

Ventajas estratégicas

  1. La identificación de doble indicador mejora la calidad de la señal
  2. Modelo de negociación inversa, con una cierta ventaja en el orden temporal
  3. Combinación de análisis de volúmenes para determinar el movimiento futuro de los precios
  4. Mecanismos de suspensión de pérdidas confiables para controlar las pérdidas individuales

Riesgo estratégico

  1. Las señales de retorno pueden fallar y no filtrar completamente el ruido del mercado
  2. Cuando el rendimiento es anormal, el juicio cuantitativo falla.
  3. La configuración incorrecta del stop loss puede causar un stop loss prematuro o demasiado grande
  4. El mecanismo de control de la retirada es imperfecto y puede reducir la vida útil de la estrategia.

Se puede optimizar aún más en los siguientes aspectos:

  1. Aumentar las reglas de evaluación de tendencias y evitar el comercio en contra
  2. Optimización de la lógica de stop loss para lograr el seguimiento de stop loss y stop loss por etapas
  3. Aumentar el límite máximo de retiro y cerrar estrategias para evitar grandes pérdidas
  4. Modelos de control de pérdidas y posiciones dinámicas combinados con algoritmos de aprendizaje automático

En general, esta estrategia utiliza el seguimiento bidireccional y la inversión de precios como la lógica de negociación principal, y se complementa con el juicio cuantitativo para mejorar la calidad de la señal a través de la doble confirmación. En la aplicación práctica, aún se necesitan pruebas y optimizaciones adicionales, especialmente para proteger los riesgos de la pérdida de control y la gestión de fondos, y para evitar la quiebra causada por el retorno de grandes cantidades.

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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 16/11/2020
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// Volume and SMA
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

    
VSAVol(Length) =>
    pos = 0.0
    xSMA_vol = sma(volume, Length)
    pos := iff(volume > xSMA_vol, -1,
    	     iff(volume < xSMA_vol, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Volume SMA", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Length_MAVol = input(40, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posVSAVol = VSAVol(Length_MAVol)
pos = iff(posReversal123 == 1 and posVSAVol == 1 , 1,
	   iff(posReversal123 == -1 and posVSAVol == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )