Estrategia cuantitativa de dos indicadores

El autor:¿ Qué pasa?, Fecha: 2023-12-29 16:29:21
Las etiquetas:

img

Resumen general

Esta estrategia es una estrategia combinada basada en el indicador dual EMA y el indicador Bull Power.

Estrategia lógica

La estrategia consta de dos partes:

  1. 2/20 EMA. Este indicador calcula la EMA de 2 días y 20 días. Genera señales de compra cuando el precio cruza por encima de la EMA y de venta cuando el precio cruza por debajo de la EMA.

  2. Indicador de poder alcista. Este indicador calcula el poder alcista/bajista basado en la relación del bar actual con el bar anterior. Genera señales comerciales cuando el poder alcista/bajista excede el umbral.

Las dos partes de las señales deben activarse al mismo tiempo para abrir posiciones. Por ejemplo, EMA golden cross y Bull Power son posiciones largas abiertas positivas, mientras que EMA dead cross y Bull Power son posiciones cortas abiertas negativas.

Análisis de ventajas

  1. Combinar indicadores para filtrar señales falsas. El indicador único es propenso a ser influenciado por factores externos que generan señales falsas. La combinación de indicadores duales puede verificarse entre sí y filtrar señales falsas, mejorando la calidad de la señal.
  2. Parámetros personalizables: los períodos de EMA y el umbral de Bull Power se pueden personalizar para adaptarse a diferentes entornos de mercado.
  3. La estrategia sólo utiliza dos indicadores comunes con una lógica simple y clara, fácil de entender e implementar.

Análisis de riesgos

  1. Riesgo de fallo del indicador: a pesar de utilizar indicadores combinados, las condiciones extremas del mercado pueden causar fallas del indicador.
  2. Riesgo de optimización de parámetros. La configuración inadecuada de parámetros puede conducir a una negociación insuficiente o excesiva, socavando el rendimiento de la estrategia. Requiere pruebas suficientes para encontrar parámetros óptimos.

Direcciones de optimización

  1. Agregue mecanismos de stop loss. Establezca una pérdida de stop de movimiento o retroceso para controlar la pérdida de una sola operación.
  2. Optimice la configuración de parámetros. Pruebe diferentes combinaciones de parámetros para encontrar los parámetros óptimos para un mejor rendimiento.
  3. Añadir condiciones de filtrado: añadir condiciones como volúmenes de operaciones o volatilidad para filtrar condiciones anormales de mercado al abrir posiciones.

Conclusión

La estrategia realiza decisiones comerciales mediante la combinación de dos indicadores EMA y Bull Power. En comparación con las estrategias de indicadores únicos, la combinación elimina las señales falsas de manera efectiva mientras se conservan parámetros personalizables. En conclusión, esta estrategia presenta simplicidad, flexibilidad y gran practicidad como una estrategia comercial cuantitativa.


/*backtest
start: 2022-12-22 00:00:00
end: 2023-12-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 12/07/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
//  Bull Power 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


BP(SellLevel) =>
    pos = 0.0
    value = 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
    val2 = ta.sma(value, 15)                   
    pos :=  val2 > SellLevel ? 1 : -1
    pos

strategy(title='Combo 2/20 EMA & Bull Power', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════  Bull Power ═════●'
SellLevel = 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)
prePosBP = BP(SellLevel)
iff_1 = posEMA20 == -1 and prePosBP == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosBP == 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.