Estrategia combinada de 123 Oscilador de reversión y caos fractal

El autor:¿ Qué pasa?, Fecha: 2023-11-02 16:43:41
Las etiquetas:

img

Resumen general

Esta es una estrategia combinada que combina la estrategia 123 Reversal y la estrategia Fractal Chaos Oscillator para obtener señales comerciales más confiables.

Estrategia lógica

La estrategia consta de dos partes:

  1. 123 Estrategia de reversión

    Esta estrategia es del libro Cómo triplicé mi dinero en el mercado de futuros de Ulf Jensen, página 183.

    • Ir largo cuando el precio de cierre es más alto que el cierre anterior durante 2 días consecutivos, y el Stoch lento de 9 días está por debajo de 50.

    • Ir corto cuando el precio de cierre es menor que el cierre anterior durante 2 días consecutivos, y el Stoch rápido de 9 días está por encima de 50.

  2. Estrategia del oscilador del caos fractal

    El FCO calcula la diferencia entre los movimientos más sutiles en el mercado. Su valor fluctúa entre -1 y 1. Cuanto mayor sea el valor, más fuerte es la tendencia, sin importar la tendencia alcista o bajista.

    Ir largo cuando FCO alcanza un nivel alto. Ir corto cuando FCO alcanza un nivel bajo. Este indicador es adecuado para el comercio intradiario.

Cuando las señales de ambas estrategias coincidan, se realizará un intercambio en esa dirección.

Análisis de ventajas

  • La combinación de estrategias de inversión y tendencia ayuda a filtrar señales falsas y mejora la confiabilidad.

  • La estrategia de reversión capta las oportunidades de reversión a corto plazo, mientras que la estrategia del FCO capta las tendencias a medio y largo plazo.

  • Los parámetros de Stoch optimizados filtran eficazmente las señales falsas en los mercados de rango.

  • El FCO es sensible a las sutiles fluctuaciones del mercado y puede detectar temprano los cambios de tendencia.

Riesgos y soluciones

  • Las estrategias de reversión pueden verse abrumadas por enormes inversiones de tendencia. Ajustar parámetros o combinar con estrategias de tendencia.

  • Las estrategias de indicadores pueden generar señales excesivas. Ajustar parámetros o añadir indicadores de filtrado.

  • Puede ocurrir señales contradictorias. Optimice los parámetros basados en los resultados de las pruebas de retroceso para mejorar la cooperación.

  • Añadir stop loss para controlar la pérdida de una sola operación.

Direcciones de optimización

  • Prueba diferentes combinaciones de parámetros de inversión para encontrar el óptimo.

  • Prueba diferentes parámetros de FCO para encontrar el mejor.

  • Prueba diferentes métodos de optimización de parámetros como algoritmos genéticos, bosque aleatorio, etc.

  • Añadir más indicadores auxiliares a otras señales de filtro.

  • Añadir modelos de aprendizaje automático para mejorar la precisión de la señal.

  • Introducir mecanismos de gestión de riesgos como el stop loss, el tamaño de las posiciones, etc.

Resumen de las actividades

Esta estrategia combina las fortalezas de las estrategias de inversión y FCO a través del uso de la cartera, y mejora la calidad de la señal. Muestra un buen rendimiento en las pruebas de retroceso. Optimizaciones adicionales como la sintonización de parámetros, la adición de indicadores, la gestión de riesgos, etc. pueden mejorar su rendimiento en vivo. En general, esta es una estrategia innovadora que vale la pena investigar y aplicar.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 07/10/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
//   The value of Fractal Chaos Oscillator is calculated as the difference between 
// the most subtle movements of the market. In general, its value moves between 
// -1.000 and 1.000. The higher the value of the Fractal Chaos Oscillator, the 
// more one can say that it follows a certain trend – an increase in prices trend, 
// or a decrease in prices trend.
//
//   Being an indicator expressed in a numeric value, traders say that this is an 
// indicator that puts a value on the trendiness of the markets. When the FCO reaches 
// a high value, they initiate the “buy” operation, contrarily when the FCO reaches a 
// low value, they signal the “sell” action. This is an excellent indicator to use in 
// intra-day trading.
//
// 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

fractalUp(pattern) =>
    p = high[pattern+1]
    okl = 1
    okr = 1
    res = 0.0
	for i = pattern to 1
		okl := iff(high[i] < high[i+1] and okl == 1 , 1, 0)
	for i = pattern+2 to pattern*2+1
		okr := iff(high[i] < high[i-1] and okr == 1, 1, 0)
	res := iff(okl == 1 and okr == 1, p, res[1])
    res

fractalDn(pattern) =>
    p = low[pattern+1]
    okl = 1
    okr = 1
    res = 0.0
	for i = pattern to 1
		okl := iff(low[i] > low[i+1] and okl == 1 , 1, 0)
	for i = pattern+2 to pattern*2+1
		okr := iff(low[i] > low[i-1] and okr == 1, 1, 0)
	res := iff(okl == 1 and okr == 1, p, res[1])
    res

FCO(Pattern) =>
    pos = 0.0
    xUpper = fractalUp(Pattern) 
    xLower = fractalDn(Pattern)
    xRes = iff(xUpper != xUpper[1], 1, 
             iff(xLower != xLower[1], -1, 0))
    pos := iff(xRes == 1, 1,
             iff(xRes == -1, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Fractal Chaos Oscillator", shorttitle="Combo", overlay = true)
Length = input(15, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Pattern = input(1, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posFCO = FCO(Pattern)
pos = iff(posReversal123 == 1 and posFCO == 1 , 1,
	   iff(posReversal123 == -1 and posFCO == -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.