Estrategia de negociación del ciclo de dos factores

El autor:¿ Qué pasa?, Fecha: 2023-12-05 17:56:27
Las etiquetas:

img

Resumen general

La estrategia de negociación de ciclo de dos factores es una estrategia de negociación cuantitativa que combina dos tipos diferentes de indicadores técnicos para generar señales de negociación y rastrear las tendencias del mercado para obtener rendimientos excedentes.

La ventaja de esta estrategia es que puede encontrar oportunidades de negociación mediante la combinación de diferentes factores y la doble confirmación puede mejorar la confiabilidad de la señal y reducir la probabilidad de operaciones erróneas.

Principios de estrategia

La estrategia consta de dos partes:

  1. 123 Estrategia de reversión Esta estrategia proviene del libro Cómo triplicé mi dinero en el mercado de futuros de Ulf Jensen. Su lógica de negociación es: cuando el precio de cierre es mayor que el precio de cierre anterior durante dos días consecutivos, y la línea lenta K de 9 días es inferior a 50, vaya largo; cuando el precio de cierre es menor que el precio de cierre anterior durante dos días consecutivos, y la línea rápida K de 9 días es superior a 50, vaya corto.

  2. Estrategia de retroceso de apoyo/resistencia
    Esta estrategia genera señales al juzgar si los precios rompen los niveles clave de soporte o resistencia. Cuando el precio rompe el precio más alto del día de negociación anterior, indica una señal alcista; cuando el precio rompe por debajo del precio más bajo del día de negociación anterior, indica una señal bajista.

Al combinar las señales de las dos estrategias anteriores, se abren posiciones cuando ambas señales son consistentes, de lo contrario se abren posiciones.

Análisis de ventajas

Esta estrategia de negociación de doble ciclo de factores tiene las siguientes ventajas:

  1. El diseño de múltiples factores garantiza una alta fiabilidad de la señal. La estrategia de inversión 123 y la estrategia de soporte/resistencia se verifican entre sí y pueden reducir las señales erróneas.

  2. El mecanismo de ciclo permite a la estrategia adaptarse a los cambios del mercado y controlar eficazmente las pérdidas unilaterales.

  3. El uso del indicador Estocástico de 9 días puede filtrar el ruido del mercado y hacer señales más claras.

  4. Es menos arriesgado que las estrategias de un solo factor y tiene reducciones más pequeñas.

Análisis de riesgos

Esta estrategia también presenta algunos riesgos:

  1. Es difícil capturar bien las tendencias en los mercados laterales, y las pérdidas de parada frecuentes y las aperturas inversas aumentarán los costos de transacción.

  2. La configuración de parámetros de Stochastics afectará la calidad de la señal. Los parámetros incorrectos pueden conducir a la mala ubicación de la señal y la degradación de la calidad. Los parámetros deben ser probados y optimizados repetidamente.

  3. Aunque el diseño de dos factores mejora la calidad de la señal, también aumenta el impacto del "ruido" del mercado en la estrategia.

Direcciones de optimización

Podemos optimizar aún más esta estrategia desde los siguientes aspectos:

  1. Estocásticos de ensayo de diferentes longitudes de ciclo para encontrar la combinación óptima de parámetros para eliminar el ruido del mercado

  2. Añadir un filtro de tendencia para filtrar los mercados laterales y sólo abrir posiciones en tendencias claras

  3. Optimizar el algoritmo de configuración de la línea de stop loss para reducir los costos de transacción al tiempo que se garantiza una stop loss efectiva

  4. Prueba diferentes combinaciones de factores para encontrar combinaciones de factores con señales comerciales más claras y estrategias más estables

Resumen de las actividades

A través del diseño de doble factor, esta estrategia ha obtenido una mayor calidad de señal y rendimientos ajustados al riesgo. Al mismo tiempo, el uso del comercio de ciclo controla eficazmente las pérdidas en el mercado unilateral. La estrategia ha logrado un buen equilibrio entre el riesgo y el rendimiento.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 13/11/2019
// 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
// Cueing Off Support And Resistance Levels, by Thom Hartle 
// modified by HPotter for trade signals.
// The related article is copyrighted material from Stocks & Commodities.
//
// 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

COSRL(SigVal) =>
    pos = 0.0
    xLow = low
    xHigh = high
    xHighD = security(syminfo.tickerid,"W", high[1])
    xLowD  = security(syminfo.tickerid,"W", low[1])
    sigpre1 = iff(xHigh <= xLowD, -1,
                 iff(xLow >= xHighD, 1, nz(pos[1], 0))) 
    sigpre2 = iff( xHigh <= xHighD, -1,
                 iff(xLow >= xLowD, 1, nz(pos[1], 0))) 
    pos := SigVal ? sigpre1 : sigpre2
    pos

strategy(title="Combo Backtest 123 Reversal & Cueing Off Support And Resistance Levels", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
SigVal = input(true, title="To Line \ From Line")
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posCOSRL = COSRL(SigVal)
pos = iff(posReversal123 == 1 and posCOSRL == 1 , 1,
	   iff(posReversal123 == -1 and posCOSRL == -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 )

Más.