Estrategia de combinación de múltiples indicadores


Fecha de creación: 2023-10-07 10:25:40 Última modificación: 2023-10-07 10:25:40
Copiar: 3 Número de Visitas: 669
1
Seguir
1617
Seguidores

Descripción general

La estrategia se compone de dos partes: la primera parte utiliza la estrategia de inversión 123 y la segunda parte utiliza el indicador TEMA. Las señales de negociación generadas por ambas se combinan para filtrar señales erróneas y mejorar la calidad de la señal.

Principio de estrategia

La primera parte utiliza la estrategia de inversión 123. Esta estrategia se basa en un indicador estocástico, que genera una señal de compra o venta cuando el precio de la acción se invierte en el precio de cierre dos días consecutivos (por ejemplo, el precio de cierre de dos días se invierte hacia abajo) y el indicador estocástico muestra una señal de sobrecompra o sobreventa.

En concreto, si el precio de cierre es superior al precio de cierre del día anterior y la línea lenta estocástica es inferior a 50, se genera una señal de compra. Si el precio de cierre es inferior al precio de cierre del día anterior y la línea rápida estocástica es superior a 50, se genera una señal de venta.

La segunda parte utiliza el indicador TEMA. TEMA representa un promedio móvil de triple índice, calculado de la siguiente manera:

TEMA = 3*EMA(CLOSE, N) - 3*EMA(EMA(CLOSE, N), N) + EMA(EMA(EMA(CLOSE, N), N), N)

Donde N es la longitud de los parámetros. Si el precio de cierre es superior al indicador TEMA, se genera una señal de compra; si el precio de cierre es inferior al indicador TEMA, se genera una señal de venta.

Por último, la combinación de dos indicadores puede generar una señal de negociación real. Sólo cuando ambos indicadores producen una señal consistente (ambos compran o ambos venden).

Ventajas estratégicas

  • Al combinar varios indicadores, se pueden filtrar algunas señales erróneas y mejorar la calidad de la señal.
  • La estrategia inversa se basa en la inversión real en el precio de las acciones, evitando compras altas y ventas de pánico en la tendencia.
  • TEMA reduce el ruido y produce una señal más confiable mediante el alisado múltiple.
  • La combinación de dos tipos diferentes de indicadores puede garantizar la fiabilidad de las señales de negociación en mayor medida.

Riesgo y optimización

  • La estrategia de reversión en sí misma tiene el riesgo de perderse una gran tendencia alcista en un mercado alcista. Se pueden ajustar adecuadamente los parámetros de la estrategia de reversión para reducir la probabilidad de perderse.
  • TEMA como indicador de seguimiento de tendencias, existe la posibilidad de generar señales erróneas. Se puede ajustar adecuadamente los parámetros de TEMA, optimizar la sensibilidad del indicador.
  • Ambos indicadores también pueden causar señales demasiado escasas si los parámetros no se eligen correctamente. Se requiere ajustar los parámetros para alcanzar la frecuencia de negociación adecuada.
  • Se puede considerar la adición de filtros para cerrar la estrategia en un entorno de mercado específico para controlar el riesgo.

Resumir

La estrategia mejora la calidad de la señal de negociación a través de una combinación razonable de múltiples indicadores, y es una estrategia de negociación cuantitativa muy efectiva. Sin embargo, se debe tener en cuenta el control del riesgo, ajustar los parámetros adecuadamente o agregar otros componentes para optimizar, para que la estrategia funcione de manera estable en diferentes mercados.

Código Fuente de la Estrategia
/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-06 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 24/11/2021
// 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
// This study plots the TEMA1 indicator. TEMA1 ia s triple MA (Moving Average),
// and is calculated as 3*MA - (3*MA(MA)) + (MA(MA(MA)))
//
// 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


TEMA(Length) =>
    pos = 0.0
    xPrice = close
    xEMA1 = ema(xPrice, Length)
    xEMA2 = ema(xEMA1, Length)
    xEMA3 = ema(xEMA2, Length)
    nRes = 3 * xEMA1 - 3 * xEMA2 + xEMA3
    pos := iff(close > nRes, 1,
             iff(close < nRes, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & TEMA1", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- TEMA1 ----")
LengthTEMA = input(26, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posT3A = TEMA(LengthTEMA)
pos = iff(posReversal123 == 1 and posT3A == 1 , 1,
	   iff(posReversal123 == -1 and posT3A == -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 )