Estrategia de negociación combinada basada en doble EMA y filtro de banda

El autor:¿ Qué pasa?, Fecha: 2024-01-17 11:22:30
Las etiquetas:

img

Resumen general

Esta estrategia combina los indicadores de media móvil exponencial dual (DEMA) y el filtro de banda (BPF) para implementar el filtro dual de la compra por ruptura y la sobreventa por sobrecompra, formando señales comerciales estables y buscando la máxima rentabilidad.

Principio de la estrategia

La estrategia consta de dos subestrategias:

  1. Estrategia de la DEMA

    Utiliza las medias móviles exponenciales duales de 2 y 20 días para generar señales de compra de cruz dorada y venta de cruz muerta.

  2. Estrategia de la BPF

    El indicador BPF combina transformaciones matemáticas para detectar los componentes cíclicos en los precios y forma zonas de sobrecompra y sobreventa dentro de un cierto período para generar señales comerciales.

La combinación de los dos proporciona una verificación más sólida de la tendencia y los factores cíclicos cuando surgen señales de compra / venta concurrentes.

Análisis de ventajas

La mayor ventaja de esta estrategia es el filtrado de indicadores duales que hace que las señales sean más estables y confiables. DEMA suaviza los precios e identifica las direcciones de tendencia; BPF reconoce las características cíclicas y determina las zonas de sobrecompra y sobreventa. La validación cruzada entre los dos puede reducir en gran medida las señales falsas causadas por el ruido de los precios y los ajustes cíclicos.

Además, la estrategia en sí tiene una frecuencia de negociación poco frecuente, evitando costos de capital y comisiones excesivos por sobrenegociación.

Análisis de riesgos

El mayor riesgo de esta estrategia es el error de evaluación de los estados del mercado. Es propenso a señales erróneas en mercados variados y podría sufrir grandes pérdidas de parada cuando las tendencias se invierten. Además, los parámetros también podrían afectar considerablemente el rendimiento de la estrategia.

Para abordar estos riesgos, se pueden adoptar métodos como optimizar los parámetros del indicador, establecer stop losses / take profits, combinar otros indicadores, etc. Cuando juzgue que el mercado ha entrado en una etapa variable y agitada, considere suspender la estrategia para evitar la interferencia de las condiciones desfavorables del mercado.

Direcciones de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Optimización del ciclo de tiempo: prueba diferentes configuraciones de parámetros DEMA y BPF para determinar las combinaciones óptimas de períodos.

  2. Añadir ajustes de stop loss/take profit. Establecer amplitudes de stop loss razonablemente para evitar el aumento de pérdidas; tomar ganancias apropiadamente para bloquear ganancias parciales.

  3. Añadir otros filtros de indicadores, tales como volumen, MACD, etc. para evitar señales engañosas de alto volumen de desdoblamiento y posición de cambio.

  4. Optimización adaptativa de parámetros: hacer que los parámetros DEMA y BPF sean adaptables en función de las últimas condiciones del mercado para mantener la puntualidad del indicador.

Conclusión

La estrategia integra los puntos fuertes de los indicadores EMA y BPF duales con doble filtrado para mejorar la calidad de la señal y obtener ganancias constantes a medio y largo plazo. Los riesgos provienen principalmente de juicios erróneos de las condiciones del mercado y un ajuste inadecuado de los parámetros. Métodos como la validación de múltiples indicadores y la optimización dinámica de parámetros pueden hacer que la estrategia sea más elástica y adaptable para una mayor rentabilidad.


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

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 05/04/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
// The related article is copyrighted material from
// Stocks & Commodities Mar 2010
//
//
// 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


BPF(Length,Delta,SellZone,BuyZone) =>
    pos = 0.0
    xPrice = hl2
    beta = math.cos(3.14 * (360 / Length) / 180)
    gamma = 1 / math.cos(3.14 * (720 * Delta / Length) / 180)
    alpha = gamma - math.sqrt(gamma * gamma - 1)
    BP = 0.0
    BP := 0.5 * (1 - alpha) * (xPrice - xPrice[2]) + beta * (1 + alpha) * nz(BP[1]) - alpha * nz(BP[2])
    pos:= BP > SellZone ? 1 :
    	   BP <= BuyZone? -1 : nz(pos[1], 0) 
    pos

strategy(title='Combo 2/20 EMA & Bandpass Filter', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════ Bandpass Filter  ═════●'
LengthBPF = input.int(20, minval=1, group=I2)
Delta = input(0.5, group=I2)
SellZone = input.float(5, step = 0.01, group=I2)
BuyZone = input.float(-5, 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)
prePosBPF = BPF(LengthBPF,Delta,SellZone,BuyZone)
iff_1 = posEMA20 == -1 and prePosBPF == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosBPF == 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.