La estrategia de filtro de banda invertida es una estrategia de negociación de acciones basada en filtros de banda. Construye una función cos y seno para simular un filtro de banda y genera señales de compra y venta. Cuando la salida del filtro excede o cae por debajo de un cierto nivel de activación, la estrategia tomará operaciones inversas, es decir, compra o venta.
El núcleo de esta estrategia es construir un filtro de paso de banda BP, que consta de dos parámetros: frecuencia central y ancho de banda. La frecuencia central determina el ciclo principal pasado por el filtro y el ancho de banda determina el rango de ciclos pasados. Estos parámetros determinan la característica de transferencia del filtro.
En concreto, la estrategia construye las siguientes variables:
Según estas variables, la estrategia construye un filtro IIR (Infinite Impulse Response) de primer orden:
BP = 0.5*(1 - alfa) *(xPrice - xPrice[2]) + beta*(1 + alfa) *nz(BP[1]) - alfa*nz(BP[2])
Cuando BP está por encima o por debajo del TriggerLevel, la estrategia tomará acciones en la dirección opuesta.
Las principales ventajas de esta estrategia son las siguientes:
Esta estrategia también tiene algunos riesgos:
Para reducir estos riesgos, pueden considerarse los siguientes métodos de optimización:
Los principales aspectos que pueden optimizar esta estrategia incluyen:
Autoadaptación del ciclo y de los parámetros: ajusta dinámicamente parámetros como longitud y delta de acuerdo con diferentes ciclos y movimientos recientes de precios en una ventana de tiempo, de modo que el filtro se adapte a los cambios del entorno del mercado en tiempo real.
Combinar con el juicio de tendencia: sobre la base del filtro de banda, se agregan indicadores técnicos como MACD y MA para determinar la dirección de la tendencia y evitar la apertura de posiciones en contra de la tendencia.
Combinación de marcos de tiempo múltiples: Implemente estrategias en marcos de tiempo múltiples (como 5 minutos, 15 minutos, 30 minutos, etc.). Realice la verificación de la señal entre diferentes marcos de tiempo para mejorar la precisión de la señal.
Mecanismo de stop loss: Establecer posiciones de stop loss razonables. Tomar la iniciativa de cerrar posiciones cuando las pérdidas alcancen los bits de stop loss para controlar eficazmente el tamaño de las pérdidas individuales.
A través de las optimizaciones anteriores, la estabilidad, la adaptabilidad y la rentabilidad de la estrategia pueden mejorarse en gran medida.
La estrategia de inversión del filtro de banda extrae señales de frecuencia media útiles mediante la construcción de un filtro de banda y realiza operaciones inversas cuando la salida del filtro activa el nivel para capturar oportunidades de inversión de precios a corto plazo. La estrategia es relativamente simple. A través de la optimización de parámetros, puede adaptarse a varios entornos de mercado. Las direcciones principales de optimización incluyen filtros adaptativos, juicios de tendencia, combinaciones de marcos de tiempo múltiples, mecanismos de stop loss, etc.
/*backtest start: 2024-01-16 00:00:00 end: 2024-01-23 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version = 2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 24/11/2016 // The related article is copyrighted material from // Stocks & Commodities Mar 2010 // You can use in the xPrice any series: Open, High, Low, Close, HL2, HLC3, OHLC4 and ect... // Please, use it only for learning or paper trading. Do not for real trading. //////////////////////////////////////////////////////////// strategy(title="Bandpass Filter Reversed Strategy") Length = input(20, minval=1) Delta = input(0.5) TriggerLevel = input(0) xPrice = hl2 hline(TriggerLevel, color=blue, linestyle=line) beta = cos(3.14 * (360 / Length) / 180) gamma = 1 / cos(3.14 * (720 * Delta / Length) / 180) alpha = gamma - sqrt(gamma * gamma - 1) BP = 0.5 * (1 - alpha) * (xPrice - xPrice[2]) + beta * (1 + alpha) * nz(BP[1]) - alpha * nz(BP[2]) pos = iff(BP > TriggerLevel, -1, iff(BP <= TriggerLevel, 1, nz(pos[1], 0))) if (pos == 1) strategy.entry("Long", strategy.long) if (pos == -1) strategy.entry("Short", strategy.short) barcolor(pos == -1 ? red: pos == 1 ? green : blue ) plot(BP, color=red, title="Bandpass Filter Strategy")