- Cuadrado
- Estrategia de negociación cuantitativa basada en medias móviles y bandas de Bollinger
Estrategia de negociación cuantitativa basada en medias móviles y bandas de Bollinger
El autor:
¿ Qué pasa?, fecha: 2024-04-26 11:45:05
Las etiquetas:
La SMALa WMAEl EMA
Resumen general
Esta estrategia utiliza principalmente promedios móviles y bandas de Bollinger para capturar las tendencias y la volatilidad del mercado. Emplea tres tipos diferentes de promedios móviles: promedio móvil simple (SMA), promedio móvil ponderado (WMA) y promedio móvil exponencial (EMA). Al mismo tiempo, utiliza bandas de Bollinger para establecer canales de precios, con las bandas superior e inferior que sirven como señales para abrir y cerrar posiciones. Cuando el precio rompe la banda superior de Bollinger, abre una posición corta; cuando rompe la banda inferior, abre una posición larga. También establece bandas de Bollinger más amplias como niveles de stop-loss, cerrando posiciones cuando el precio viola estas bandas.
Principios de estrategia
- Calcular tres medias móviles con períodos diferentes: SMA lenta, EMA rápida y WMA media, que reflejan las tendencias de mercado a largo, corto y mediano plazo respectivamente.
- Calcule dos conjuntos de bandas de Bollinger basadas en la desviación estándar de precios: bandas de Bollinger de entrada (con una distancia más estrecha entre las bandas superior e inferior) y bandas de Bollinger de stop-loss (con una distancia más amplia).
- Cuando la EMA rápida cruza por encima de la banda de Bollinger superior, abra una posición corta; cuando la EMA rápida cruza por debajo de la banda de Bollinger inferior, abra una posición larga. Esto implica que el precio se ha desviado significativamente de la media y puede surgir una tendencia.
- Una vez abierta una posición, si el precio cruza más por encima de la banda superior de stop-loss de Bollinger, cierre todas las posiciones largas; si el precio cruza más por debajo de la banda inferior de stop-loss de Bollinger, cierre todas las posiciones cortas.
- El proceso anterior se repite continuamente, lo que permite a la estrategia ajustar de forma flexible las posiciones de acuerdo con las tendencias del mercado y detener las pérdidas de manera oportuna, con el fin de lograr rendimientos sólidos.
Ventajas estratégicas
- Considera tres promedios móviles de velocidades diferentes, que reflejan de manera exhaustiva las tendencias del mercado a diversos niveles.
- Introduce bandas de Bollinger como condiciones para la apertura y el cierre de posiciones, que pueden ajustarse dinámicamente según la volatilidad del mercado, adaptándose de manera flexible a las condiciones del mercado.
- Establece bandas de stop-loss para controlar las reducciones y cierra decisivamente las posiciones cuando el mercado fluctúa dramáticamente, evitando pérdidas amplificadas.
- La lógica es clara y las reglas son simples, fáciles de implementar y optimizar.
- Tiene una amplia gama de aplicaciones y puede ser eficaz para diversos mercados y períodos de tiempo.
Riesgos estratégicos
- En un mercado lateral, la apertura y el cierre frecuentes de posiciones pueden acarrear costes de transacción sustanciales, que reducen los beneficios.
- En la etapa inicial de una inversión de tendencia, la estrategia puede seguir operando en la dirección de la tendencia original, lo que resulta en ciertas pérdidas.
- Para condiciones de mercado extremas, como brechas de precios rápidas, las bandas de Bollinger de stop-loss pueden no controlar los riesgos de manera efectiva.
- La selección incorrecta de parámetros (por ejemplo, períodos de media móvil, anchos de banda de Bollinger, etc.) puede invalidar la estrategia.
- Si el mercado continúa fluctuando, es posible que la estrategia no pueda captar oportunidades de tendencia significativas durante un período prolongado.
Direcciones para la optimización de la estrategia
- Aumentar adecuadamente los parámetros de los períodos de medias móviles y las anchuras de la banda de Bollinger para reducir la frecuencia y los costes de negociación en un mercado lateral.
- Introduzca más indicadores técnicos o indicadores de sentimiento del mercado como filtros para mejorar la precisión de las señales de entrada y evitar perder operaciones que puedan ocurrir al comienzo de una tendencia.
- Establecer normas especiales para las condiciones extremas del mercado, como la suspensión de nuevas posiciones cuando se producen brechas, para controlar los riesgos.
- Optimizar los parámetros para encontrar la combinación más adecuada para el mercado actual, mejorando la solidez de la estrategia.
- Añadir las reglas de gestión de posiciones y de gestión de capital, tales como el ajuste de posiciones basadas en la fuerza de la tendencia o la rentabilidad, el establecimiento de líneas generales de stop-loss, etc., para controlar aún más los riesgos de la estrategia.
Resumen de las actividades
El Marina Parfenova School Project Bot es una estrategia de negociación cuantitativa basada en promedios móviles y Bandas de Bollinger. Intenta obtener ganancias capturando las tendencias del mercado mientras controla las reducciones a través de líneas de stop-loss de Bandas de Bollinger. La lógica de la estrategia es simple y directa, con una amplia gama de aplicaciones, y los parámetros se pueden ajustar de manera flexible de acuerdo con las características del mercado. Sin embargo, en la aplicación práctica, todavía se necesita prestar atención a cuestiones como mercados laterales, condiciones extremas, optimización de parámetros, etc., y es necesario un mayor refinamiento de las reglas de gestión de capital y posición. En general, esta estrategia puede servir como un marco de negociación cuantitativo básico, que puede ser continuamente optimizado y mejorado para lograr resultados comerciales más robustos.
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy ("Marina Parfenova School Project Bot", overlay = true)
sma(price, n) =>
result = 0.0
for i = 0 to n - 1
result := result + price [i] / n
result
wma(price, n) =>
result = 0.0
sum_weight = 0.0
weight = 0.0
for i = 0 to n - 1
weight := n - 1
result := result + price [i]*weight
sum_weight := sum_weight + weight
result/sum_weight
ema(price, n) =>
result = 0.0
alpha = 2/(n + 1)
prevResult = price
if (na(result[1]) == false)
prevResult := result[1]
result := alpha * price + (1 - alpha) * prevResult
/// Настройки
n_slow = input.int(50, "Период медленной скользящей средней", step=5)
n_fast = input.int(4, "Период быстрой скользящей средней")
n_deviation = input.int(30, "Период среднеквадратического отклонения", step=5)
k_deviation_open = input.float(1.2, "Коэффициент ширины коридора покупки", step=0.1)
k_deviation_close = input.float(1.6, "Коэффициент ширины коридора продажи", step=0.1)
// ----- Линии индикаторов -----
// Медленная скользящая
sma = sma(close, n_slow)
plot(sma, color=#d3d3d3)
// Линии Боллинджера, обозначающие коридор цены
bollinger_open = k_deviation_open * ta.stdev(close, n_deviation)
open_short_line = sma + bollinger_open
plot(open_short_line, color=#ec8383)
open_long_line = sma - bollinger_open
plot(open_long_line, color=#6dd86d)
bollinger_close = k_deviation_close * ta.stdev(close, n_deviation)
close_short_line = sma + bollinger_close
plot(close_short_line, color=#e3e3e3)
close_long_line = sma - bollinger_close
plot(close_long_line, color=#e3e3e3)
// Быстрая скользящая
ema = ema(close, n_fast)
plot(ema, color = color.aqua, linewidth = 2)
// ----- Сигналы для запуска стратегии -----
// если ema пересекает линию open_short сверху вниз - сигнал на создание ордера в short
if(ema[1] >= open_short_line[1] and ema < open_short_line)
strategy.entry("short", strategy.short)
// если ema пересекает линию open_long снизу вверх - сигнал на создание ордера в long
if(ema[1] <= open_long_line[1] and ema > open_long_line)
strategy.entry("long", strategy.long)
// если свеча пересекает верхнюю линию коридора продажи - закрываем все long-ордера
if (high >= close_short_line)
strategy.close("long")
// если свеча пересекает нижнюю линию коридора продажи - закрываем все short-ордера
if (low <= close_long_line)
strategy.close("short")
Relacionados
Más.