Estrategia de negociación de reversión de impulso

El autor:¿ Qué pasa?, Fecha: 2023-11-15 15:36:39
Las etiquetas:

img

Resumen general

Esta estrategia combina el patrón de reversión 123 y la facilidad de movimiento (EOM) para operar en puntos de inflexión. El patrón de reversión 123 genera señales cuando el precio forma patrones específicos durante 3 días consecutivos. La estrategia EOM utiliza cambios en el precio y el volumen para medir el impulso del mercado. La combinación de ambas estrategias considera patrones técnicos, así como el impulso, mejorando la precisión de las señales comerciales.

Estrategia lógica

La estrategia consta de dos componentes:

  1. 123 Modelo de reversión
  • Utilice Stoch para identificar los niveles de sobrecompra y sobreventa
  • Ir corto cuando el precio cae durante 2 días consecutivos y la línea rápida de Stoch está por encima de la línea lenta
  • Ir largo cuando el precio sube durante 2 días consecutivos y la línea rápida de Stoch está por debajo de la línea lenta
  1. Facilidad de movimiento
  • Calcular el punto medio del intervalo del día anterior
  • Calcular el cambio en el punto medio respecto al día anterior
  • Calcular la relación entre movimiento del punto medio y volumen
  • El índice por encima del umbral indica alza, por debajo del umbral baja

La estrategia es larga cuando las señales EOM y 123 se alinean en el lado largo, y corta cuando las señales se alinean en el lado corto.

Análisis de ventajas

Las ventajas de esta estrategia:

  1. Combina patrones de precios y impulso para una mejor precisión de la señal

  2. 123 patrón captura puntos de inflexión, EOM medidores impulso de tendencia, dos se complementan

  3. Stoch evita los problemas durante la consolidación

  4. Simple y fácil de implementar

  5. Parámetros personalizables para diferentes entornos de mercado

Análisis de riesgos

Los riesgos a considerar:

  1. El valor de las transacciones que se realizan en el mercado de divisas es el valor de las transacciones que se realizan en el mercado de divisas.

  2. Muchos filtros pueden generar muy pocas señales

  3. EOM sensible a la volatilidad, puede generar señales falsas

  4. El rendimiento en vivo es más débil que el backtest, hay que controlar el dimensionamiento de la posición

  5. Solo adecuado para las acciones de tendencia, no para los mercados de variación

Direcciones de mejora

La estrategia puede mejorarse mediante:

  1. Optimización de parámetros para equilibrar la frecuencia y la calidad de las señales

  2. Adición de stop loss para controlar la pérdida de una sola operación

  3. Añadir un filtro de tendencia para evitar operaciones contrarias a la tendencia

  4. Incorporación de posiciones basadas en la volatilidad

  5. Utilizando el aprendizaje automático para optimizar dinámicamente los parámetros

Conclusión

Esta estrategia integra los patrones de precios y el impulso para un alto valor práctico. Pero la frecuencia de negociación, el control de pérdidas y los riesgos de contra-tendencia deben gestionarse.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 14/04/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
// This indicator gauges the magnitude of price and volume movement. 
// The indicator returns both positive and negative values where a 
// positive value means the market has moved up from yesterday's value 
// and a negative value means the market has moved down. A large positive 
// or large negative value indicates a large move in price and/or lighter 
// volume. A small positive or small negative value indicates a small move 
// in price and/or heavier volume.
// A positive or negative numeric value. A positive value means the market 
// has moved up from yesterday's value, whereas, a negative value means the 
// market has moved down. 
//
// 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

EOM(BuyZone, SellZone) =>
    pos = 0
    xHigh = high
    xLow = low
    xVolume = volume
    xHalfRange = (xHigh - xLow) * 0.5
    xMidpointMove = mom(xHalfRange, 1)
    xBoxRatio = iff((xHigh - xLow) != 0, xVolume / (xHigh - xLow), 0)
    nRes = iff(xBoxRatio != 0, 1000000 * ((xMidpointMove - xMidpointMove[1]) / xBoxRatio), 0)
    pos := iff(nRes > BuyZone, 1,
             iff(nRes < SellZone, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Ease of Movement (EOM)", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
BuyZone = input(4000, minval=1)
SellZone = input(-4000)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posEOM = EOM(BuyZone, SellZone)
pos = iff(posReversal123 == 1 and posEOM == 1 , 1,
	   iff(posReversal123 == -1 and posEOM == -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.