Estrategia de combinación de doble cruce de promedio móvil y balance de potencia de bull bear

El autor:¿ Qué pasa?, Fecha: 2024-01-08 17:09:48
Las etiquetas:

img

Resumen general

Esta estrategia utiliza primero las líneas de promedio móvil dual de 2 períodos y 20 períodos EMA para determinar si el precio rompe los promedios móviles, como un criterio básico para ingresar al mercado. Al mismo tiempo, el indicador auxiliar Indicador de balance de poder de los osos toros identifica aún más el poder relativo entre los toros y los osos para evitar operaciones erróneas. Los dos tipos de indicadores generan conjuntamente la señal comercial final.

Principio de la estrategia

  1. Indicador de media móvil doble

    • Calcular la media móvil exponencial (EMA) de 2 y 20 períodos
    • Generar señales de negociación cuando el precio de cierre se rompe de un lado de las medias móviles al otro
    • Rompiendo 20-EMA determina la dirección de la tendencia
    • La ruptura de 2-EMA determina el punto de entrada específico
  2. Indicador de equilibrio de poder del toro y el oso

    • Calcular por separado el valor de la potencia de los toros y el valor de la potencia de los osos
    • Compare los dos valores para determinar la fuerza relativa entre los toros y los osos
    • La dirección más fuerte sirve como una sentencia auxiliar para la entrada
  3. Evaluación combinada de los dos indicadores

    • El indicador de la media móvil doble juzga la dirección de la tendencia principal
    • Indicador de balance de poder de los toros y osos hace un juicio regional local
    • Emitir señales de negociación cuando ambos indicadores dan una opinión coherente

Análisis de ventajas

La mayor ventaja de esta estrategia combinada es la integración de indicadores de diferentes variedades para lograr un juicio comercial más confiable.

  1. Utilizando una media móvil doble para determinar la dirección principal, evitar ser engañado por las fluctuaciones locales
  2. Utilice el indicador de equilibrio de poder de los osos toros para el juicio regional local para comprender con precisión el punto de entrada específico
  3. Dos tipos de indicadores se verifican entre sí y pueden filtrar algunas operaciones erróneas para reducir los riesgos comerciales
  4. Configuración de parámetros flexibles que pueden optimizarse para diferentes tipos de mercado
  5. La idea de la estrategia es simple y clara, fácil de entender, y fácil de optimizar más tarde

Análisis de riesgos

Hay que tener en cuenta algunos riesgos de esta estrategia:

  1. El retraso de las señales del indicador puede conducir a puntos de stop loss profundos
  2. El indicador de media móvil doble es sensible a la configuración de parámetros
  3. El indicador de balance de los alcistas tiene una precisión ligeramente menor al juzgar las tendencias a corto plazo.
  4. En las condiciones especiales de mercado, puede producirse una desviación de juicio para ambos indicadores (falsas señales comunes de ruptura)

Contramedidas:

  1. Acortar adecuadamente el período de retención o establecer una parada de pérdida en movimiento adecuada
  2. Prueba diferentes combinaciones de parámetros para encontrar parámetros óptimos
  3. Consulte otros indicadores para su confirmación
  4. Optimizar los parámetros basados en las características de las diferentes variedades

Direcciones de optimización

La estrategia se puede optimizar aún más en los siguientes aspectos:

  1. Prueba más combinaciones de parámetros del indicador de media móvil
  2. Aumentar las estrategias de stop loss para controlar la pérdida de stop loss única
  3. Incorporar indicadores de volatilidad para mejorar la adaptabilidad de los parámetros
  4. Añadir modelos de aprendizaje automático para lograr la optimización de parámetros dinámicos
  5. Pruebe diferentes indicadores de tendencia para reemplazar el balance de poder de los osos toros
  6. Desarrollar interfaces visuales para facilitar las pruebas de diferentes parámetros por parte del usuario

Conclusión

Esta estrategia juzga la tendencia principal a través de un indicador de media móvil doble y utiliza el indicador de balance de poder de los osos para ayudar a determinar el momento de entrada. Los dos indicadores se verifican entre sí y pueden reducir efectivamente la probabilidad de operaciones erróneas. Los parámetros de la estrategia son flexibles y se pueden optimizar para diferentes variedades. En general, la estrategia es simple y práctica, vale la pena aprender y usar por la mayoría de los inversores. Las optimizaciones posteriores pueden mejorar aún más el rendimiento de la estrategia.


/*backtest
start: 2023-01-01 00:00:00
end: 2024-01-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 23/05/2022
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This indicator plots 2/20 exponential moving average. For the Mov 
// Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.
//
// Second strategy
//    This new indicator analyzes the balance between bullish and
//    bearish sentiment.
//    One can cay that it is an improved analogue of Elder Ray indicator.
//    To get more information please see "Bull And Bear Balance Indicator" 
//    by Vadim Gimelfarb. 
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
EMA20(Length) =>
    pos = 0.0
    xPrice = close
    xXA = ta.ema(xPrice, Length)
    nHH = math.max(high, high[1])
    nLL = math.min(low, low[1])
    nXS = nLL > xXA or nHH < xXA ? nLL : nHH
    iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0)
    pos := nXS > close[1] ? -1 : iff_1
    pos


BBB(SellLevel,BuyLevel) =>
    pos = 0.0
    value = close < open ? 
              close[1] > open ?  math.max(close - open, high - low) : high - low : 
                 close > open ? 
                  close[1] > open ? math.max(close[1] - low, high - close) : math.max(open - low, high - close) :
                   high - close > close - low ? 
                     close[1] > open ? math.max(close[1] - open, high - low) :high - low : 
                      high - close < close - low ? 
                         close > open ? math.max(close - low, high - close) : open - low : 
                           close > open ? math.max(close[1] - open , high - close) :
                             close[1] < open ? math.max(open - low, high - close) : high - low
    
    value2 =close < open ? 
              close[1] < open ?  math.max(high - close[1], close - low) : math.max(high - open, close - low) : 
               close > open ? 
                 close[1] > open ?  high - low : math.max(open - close[1], high - low) : 
                  high - close > close - low ? 
                   close[1] < open ? math.max(high - close[1], close - low) : high - open : 
                     high - close < close - low ? 
                      close[1] > open ?  high - low : math.max(open - close, high - low) : 
                       close[1] > open ? math.max(high - open, close - low) :
                         close[1] < open? math.max(open - close, high - low): high - low
    nBBB = value2 - value
    pos :=  nBBB < SellLevel ? -1 :
    	     nBBB >= BuyLevel ? 1 : nz(pos[1], 0) 
    pos

strategy(title='Combo 2/20 EMA & Bull And Bear Balance', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════  Bull And Bear Balance ═════●'
SellLevel = input.float(-15, step=0.01, group=I2)
BuyLevel = input.float(15, step=0.01, group=I2)
var misc = '●═════ MISC ═════●'
reverse = input.bool(false, title='Trade reverse', group=misc)
var timePeriodHeader = '●═════ Time Start ═════●'
d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader)
m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader)
y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader)
StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false
posEMA20 = EMA20(Length)
prePosBBB = BBB(SellLevel,BuyLevel)
iff_1 = posEMA20 == -1 and prePosBBB == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosBBB == 1 and StartTrade ? 1 : iff_1
iff_2 = reverse and pos == -1 ? 1 : pos
possig = reverse and pos == 1 ? -1 : iff_2
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.