Estrategia de trading cuantitativo con medias móviles y bandas de Bollinger

SMA WMA EMA
Fecha de creación: 2024-04-26 11:45:05 Última modificación: 2024-04-26 11:45:05
Copiar: 4 Número de Visitas: 596
1
Seguir
1617
Seguidores

Estrategia de trading cuantitativo con medias móviles y bandas de Bollinger

Descripción general

La estrategia utiliza principalmente las medias móviles y las medias de Brin para capturar las tendencias y las fluctuaciones del mercado. En la estrategia se utilizan tres medias móviles diferentes: las medias móviles simples (SMA), las medias móviles ponderadas (WMA) y las medias móviles de índices (EMA). Al mismo tiempo, se utiliza el Brin para establecer un canal de precios, y los carriles ascendentes y descendentes, respectivamente, como señal de paz para las posiciones abiertas.

Principio de estrategia

  1. Se calculan tres promedios móviles de diferentes períodos: SMA lento, EMA rápido y WMA rápido, que reflejan las tendencias del mercado a largo, corto y mediano plazo, respectivamente.
  2. Según el cálculo de la diferencia de precios estándar, hay dos grupos de bandas de Brines: las bandas de Brines de apertura (más cercanas a la distancia de la vía ascendente y descendente) y las bandas de Brines de parada (más amplias a la distancia de la vía ascendente y descendente). Las bandas de Brines de apertura se utilizan para abrir posiciones y las de Brines de parada se utilizan para cerrar posiciones.
  3. Cuando el EMA rápido se abre con la barra de Brin, se abre una posición de cabeza vacía; cuando el EMA rápido se abre con la barra de Brin, se abre una posición de cabeza múltiple. Esto significa que el precio se desvía más de la media y puede generar una tendencia.
  4. Una vez abierta la posición, se eliminan todas las posiciones de más cabeza si el precio sube aún más a través de la barra de pérdidas de Brin; si el precio baja aún más a través de la barra de pérdidas de Brin, se eliminan todas las posiciones de cabeza vacía. Esto es para controlar las pérdidas, una vez que la tendencia se invierte, se detiene la pérdida.
  5. Este proceso es circular, lo que permite a la estrategia ajustar sus posiciones con flexibilidad según las tendencias del mercado y detener los pérdidas a tiempo para obtener ganancias sólidas.

Ventajas estratégicas

  1. Se toman en cuenta tres promedios móviles de diferentes velocidades para capturar las tendencias del mercado a todos los niveles.
  2. Introducción de la zona de Brin como condición para abrir posiciones abiertas, que se pueden ajustar en función de la dinámica de la volatilidad del mercado y la flexibilidad para responder a la situación.
  3. Configurar los límites de pérdidas, controlar las retiradas y cerrar posiciones en el momento de una fuerte fluctuación del mercado para evitar la expansión de las pérdidas.
  4. La lógica es clara, las reglas son sencillas, fáciles de implementar y optimizar.
  5. La aplicación es amplia y puede ser efectiva en varios mercados y períodos de tiempo.

Riesgo estratégico

  1. En un mercado convulso, la apertura frecuente de posiciones cerradas puede generar grandes costos de transacción, lo que erosiona las ganancias.
  2. Al comienzo de un cambio de tendencia, la estrategia puede seguir operando en la dirección de la tendencia original, causando ciertas pérdidas.
  3. Para situaciones extremas, como un salto rápido de los precios, el límite de la franja de Bolingbroke puede no ser un buen control del riesgo.
  4. La elección incorrecta de los parámetros (por ejemplo, el ciclo de la media móvil, el ancho de banda de Brin) puede hacer que la estrategia no funcione.
  5. Si el mercado continúa convulsionado, la estrategia puede no captar oportunidades de tendencia evidentes por mucho tiempo.

Dirección de optimización de la estrategia

  1. Aumentar adecuadamente el ciclo de las medias móviles y los parámetros de ancho de banda de Brin para reducir la frecuencia y el costo de las transacciones en mercados convulsivos.
  2. Introducir más indicadores técnicos o de sentimiento del mercado como filtros para mejorar la precisión de las señales de apertura de posición y evitar las operaciones perdedoras que pueden ocurrir al comienzo de la tendencia.
  3. Establezca reglas especiales para situaciones extremas, como la suspensión de la apertura de nuevas posiciones en el momento del salto por la borda, para controlar el riesgo.
  4. Optimizar los parámetros para encontrar la combinación de parámetros más adecuada para el mercado actual y mejorar la estabilidad de la estrategia.
  5. Aumentar las reglas de gestión de posiciones y de gestión de fondos, como ajustar las posiciones de acuerdo con la fuerza de la tendencia o las ganancias, establecer una línea de parada general, etc., para controlar aún más el riesgo estratégico.

Resumir

Marina Parfenova School Project Robot es una estrategia de trading cuantitativa basada en las medias móviles y las bandas de Brin. Trata de obtener ganancias mediante la captura de las tendencias del mercado, mientras que controla el retroceso a través de las líneas de stop loss de las bandas de Brin. La lógica de la estrategia es simple y clara, tiene un amplio rango de aplicaciones, y los parámetros se pueden ajustar de forma flexible según las características del mercado.

Código Fuente de la Estrategia
/*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")