Combinación de estrategia de doble media móvil e indicador estocástico


Fecha de creación: 2024-01-12 11:16:52 Última modificación: 2024-01-12 11:16:52
Copiar: 0 Número de Visitas: 567
1
Seguir
1617
Seguidores

Combinación de estrategia de doble media móvil e indicador estocástico

Descripción general

Este artículo presenta una estrategia de comercio cuantitativa que combina la estrategia de doble línea de paridad y el indicador aleatorio. La estrategia utiliza la capacidad de seguimiento de tendencias de la línea de paridad móvil y las características de sobrecompra y sobreventa del indicador aleatorio para formar una señal de comercio.

Principio de estrategia

La estrategia tiene dos partes:

  1. Estrategia de doble línea

El uso de la media móvil rápida y la media móvil lenta para formar señales de compra de plata y señales de venta de plata. La media rápida puede capturar más rápidamente las tendencias de cambio de precios y la media lenta filtra las señales falsas.

  1. Indicadores al azar

Utiliza las características de oscilación de los indicadores aleatorios para identificar situaciones de sobreventa y sobreventa. Cuando el indicador aleatorio está por encima de la línea larga, es una señal de sobreventa, y cuando el indicador aleatorio está por debajo de la línea larga, es una señal de sobreventa.

La combinación de las dos partes de la señal forma la señal de negociación final. La estrategia de doble línea de equilibrio sigue las principales tendencias, y los indicadores aleatorios ayudan a evitar situaciones adversas.

Análisis de las ventajas estratégicas

  • Las ventajas de los indicadores combinados de doble línea media y aleatorio son más estables.
  • El seguimiento de la tendencia de la línea media, la confirmación de indicadores aleatorios, el efecto es bueno.
  • Los parámetros se pueden personalizar para adaptarse a diferentes situaciones del mercado.

Análisis de riesgos estratégicos

  • Las líneas de doble sentido son propensas a generar señales erróneas.
  • La configuración incorrecta de los parámetros del indicador aleatorio puede perder la tendencia.
  • Los parámetros deben adaptarse a las nuevas circunstancias.

Se puede reducir el riesgo mediante la optimización de la combinación de parámetros, o se puede agregar un stop loss para controlar las pérdidas.

Dirección de optimización de la estrategia

La estrategia se puede optimizar en los siguientes aspectos:

  1. Prueba el efecto de los diferentes parámetros de la línea media en la eficacia de la estrategia.
  2. Prueba el impacto de diferentes parámetros de indicadores aleatorios en la estabilidad de la estrategia.
  3. La adición de indicadores de filtración de tendencias mejora la tasa de éxito de la estrategia.
  4. Establecer un mecanismo de seguimiento de pérdidas dinámico para controlar las pérdidas.

Resumir

Esta estrategia utiliza una estrategia de doble línea de equilibrio y las ventajas de los indicadores aleatorios. Al mismo tiempo que sigue las principales tendencias del mercado, evita la reversión de las tendencias adversas. Se puede obtener un mejor efecto de la estrategia mediante la optimización de la combinación de parámetros.

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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 24/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
// As the name suggests, High low bands are two bands surrounding the underlying’s 
// price. These bands are generated from the triangular moving averages calculated 
// from the underlying’s price. The triangular moving average is, in turn, shifted 
// up and down by a fixed percentage. The bands, thus formed, are termed as High 
// low bands. The main theme and concept of High low bands is based upon the triangular 
// moving average. 
//
// 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

    
HLB(Length, PercentShift) =>
    pos = 0.0
    xTMA = sma(sma(close, Length), Length)
    xHighBand = xTMA + (xTMA * PercentShift / 100)
    xLowBand = xTMA - (xTMA * PercentShift / 100)
    pos :=iff(close > xHighBand, 1,
           iff(close <xLowBand, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & High Low Bands", 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_HLB = input(14, minval=1)
PercentShift = input(1, minval = 0.01, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posHLB = HLB(Length_HLB, PercentShift)
pos = iff(posReversal123 == 1 and posHLB == 1 , 1,
	   iff(posReversal123 == -1 and posHLB == -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 )