Estrategias duales de captura de tendencia de reversión y stop loss dinámico


Fecha de creación: 2024-02-05 09:54:13 Última modificación: 2024-02-05 09:54:13
Copiar: 0 Número de Visitas: 558
1
Seguir
1617
Seguidores

Estrategias duales de captura de tendencia de reversión y stop loss dinámico

Descripción general

La estrategia es una doble estrategia, que combina la estrategia de captura de tendencia inversa y la estrategia de parada dinámica, con el objetivo de capturar la tendencia inversa y al mismo tiempo establecer una parada dinámica para controlar el riesgo.

Principio de estrategia

Estrategias para capturar el cambio de tendencia

La estrategia se basa en el indicador aleatorio de los valores K y D. Se genera una señal de compra cuando el precio baja dos días consecutivos y el valor de K sube por encima del valor de D. Se genera una señal de venta cuando el precio sube dos días consecutivos y el valor de K baja por debajo del valor de D. De esta manera se puede capturar la tendencia de reversión del precio.

Estrategias para detener el daño dinámico

Esta estrategia se basa en la volatilidad de los precios y la tendencia a establecer un punto de parada dinámico. Calcula la volatilidad de los altos y bajos de los precios en el último período de tiempo y, combinado con la tendencia a determinar si el precio está actualmente en el canal ascendente o en el canal descendente, establece un precio de parada dinámico.

Las dos estrategias se utilizan en combinación para controlar el riesgo al establecer un stop loss dinámico al mismo tiempo que se captura la señal de reversión.

Análisis de las ventajas

  • La capacidad de capturar el punto de inflexión de los precios, adecuado para inversiones
  • Se puede configurar un stop loss dinámico para ajustar la posición de stop loss en función del entorno del mercado.
  • Confirmación de doble señal para evitar falsas
  • Controlar el riesgo y asegurar el beneficio

Análisis de riesgos

  • Riesgo de fracaso de la reversión.
  • Riesgo de ajuste de parámetros. El ajuste incorrecto de parámetros puede afectar el efecto de la política
  • Riesgo de liquidez. Algunos tipos de transacciones son poco líquidos y no se pueden detener.

Se puede controlar el riesgo mediante la optimización de los parámetros, el estricto cierre de pérdidas y la selección de variedades con buena liquidez.

Dirección de optimización

  • Optimización de los parámetros de indicadores aleatorios para encontrar la mejor combinación de parámetros
  • Optimización de los parámetros de parada para encontrar la mejor posición de parada
  • Aumentar las condiciones de filtración para evitar posiciones en mercados convulsionados
  • Agrega módulo de gestión de posiciones para controlar la máxima pérdida

Optimización integral para que la estrategia capte la reversión de la tendencia en la medida de lo posible mientras se controla el riesgo.

Resumir

La estrategia combina una doble estrategia de captura de tendencias invertidas y un alto de pérdidas dinámicas, que puede capturar un punto de inflexión de precios y establecer un riesgo de control de pérdidas dinámicas, una estrategia de negociación de línea corta relativamente estable. Se espera que la estrategia obtenga ganancias estables mediante la optimización continua de la monitorización.

Código Fuente de la Estrategia
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 07/12/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 Kase Dev Stops system finds the optimal statistical balance between letting profits run, 
//  while cutting losses.  Kase DevStop seeks an ideal stop level by accounting for volatility (risk),
//  the variance in volatility (the change in volatility from bar to bar), and volatility skew 
//  (the propensity for volatility to occasionally spike incorrectly).
//  Kase Dev Stops are set at points at which there is an increasing probability of reversal against 
//  the trend being statistically significant based on the log normal shape of the range curve.  
//  Setting stops will help you take as much risk as necessary to stay in a good position, but not more.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real 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

KaseDevStops(Length, Level) =>
    pos = 0.0
    RWH = (high - low[Length]) / (atr(Length) * sqrt(Length))
    RWL = (high[Length] - low) / (atr(Length) * sqrt(Length))
    Pk = wma((RWH-RWL),3)
    AVTR = sma(highest(high,2) - lowest(low,2), 20)
    SD = stdev(highest(high,2) - lowest(low,2),20)
    Val4 = iff(Pk>0, highest(high-AVTR-3*SD,20), lowest(low+AVTR+3*SD,20))
    Val3 = iff(Pk>0, highest(high-AVTR-2*SD,20), lowest(low+AVTR+2*SD,20))
    Val2 = iff(Pk>0, highest(high-AVTR-SD,20), lowest(low+AVTR+SD,20))
    Val1 = iff(Pk>0, highest(high-AVTR,20), lowest(low+AVTR,20))
    ResPrice = iff(Level == 4, Val4,
                 iff(Level == 3, Val3,
                  iff(Level == 2, Val2,
                     iff(Level == 1, Val1, Val4))))
    pos := iff(close < ResPrice , -1, 1)
    pos

strategy(title="Combo Backtest 123 Reversal & Kase Dev Stops", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthKDS = input(30, minval=2, maxval = 100)
LevelKDS = input(title="Trade From Level", defval=4, options=[1, 2, 3, 4])
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posKaseDevStops = KaseDevStops(LengthKDS, LevelKDS)
pos = iff(posReversal123 == 1 and posKaseDevStops == 1 , 1,
	   iff(posReversal123 == -1 and posKaseDevStops == -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 )