Estratégia quantitativa de negociação baseada em médias móveis e bandas de Bollinger

Autora:ChaoZhang, Data: 2024-04-26 11:45:05
Tags:SMAWMAEMA

img

Resumo

Esta estratégia utiliza principalmente médias móveis e Bandas de Bollinger para capturar tendências e volatilidade do mercado. Emprega três tipos diferentes de médias móveis: Média Móvel Simples (SMA), Média Móvel ponderada (WMA) e Média Móvel Exponencial (EMA). Ao mesmo tempo, usa Bandas de Bollinger para definir canais de preços, com as bandas superior e inferior servindo como sinais para abertura e fechamento de posições. Quando o preço atravessa a banda de Bollinger superior, ele abre uma posição curta; quando atravessa a banda inferior, ele abre uma posição longa.

Princípios de estratégia

  1. Calcular três médias móveis com períodos diferentes: SMA lenta, EMA rápida e WMA média, refletindo as tendências de longo prazo, curto prazo e médio prazo do mercado, respectivamente.
  2. Calcule dois conjuntos de Bandas de Bollinger com base no desvio padrão do preço: Bandas de Bollinger de entrada (com distância mais estreita entre as bandas superior e inferior) e Bandas de Bollinger de stop-loss (com distância maior).
  3. Quando a EMA rápida cruza acima da faixa de Bollinger superior, abra uma posição curta; quando a EMA rápida cruza abaixo da faixa de Bollinger inferior, abra uma posição longa.
  4. Uma vez que uma posição está aberta, se o preço cruzar ainda mais acima da faixa de stop-loss Bollinger superior, feche todas as posições longas; se o preço cruzar ainda mais abaixo da faixa de stop-loss Bollinger inferior, feche todas as posições curtas.
  5. O processo acima referido é repetido continuamente, permitindo que a estratégia ajuste as posições de forma flexível de acordo com as tendências do mercado e pare as perdas em tempo útil, a fim de alcançar rendimentos robustos.

Vantagens da estratégia

  1. Considera três médias móveis de diferentes velocidades, que registam de forma abrangente as tendências do mercado em vários níveis.
  2. A presente diretiva introduz as bandas de Bollinger como condições para a abertura e o encerramento de posições, que podem ser ajustadas dinamicamente em função da volatilidade do mercado, adaptando-se de forma flexível às condições do mercado.
  3. Estabelece bandas de Bollinger de stop-loss para controlar os drawdowns e fecha decisivamente posições quando o mercado flutua drasticamente, evitando perdas amplificadas.
  4. A lógica é clara e as regras são simples, fáceis de implementar e otimizar.
  5. Tem uma ampla gama de aplicações e pode ser eficaz para vários mercados e períodos de tempo.

Riscos estratégicos

  1. Em um mercado lateral, a abertura e o encerramento frequentes de posições podem levar a custos de transacção substanciais, que corroem os lucros.
  2. No estágio inicial de uma inversão de tendência, a estratégia pode continuar a operar na direção da tendência original, resultando em certas perdas.
  3. Para condições de mercado extremas, tais como brechas rápidas de preços, as bandas de Bollinger de stop-loss podem não controlar eficazmente os riscos.
  4. A seleção de parâmetros inadequada (como períodos de média móvel, larguras de Bollinger Band, etc.) pode invalidar a estratégia.
  5. Se o mercado continuar a flutuar, a estratégia pode não ser capaz de captar oportunidades de tendência significativas durante um período prolongado.

Orientações para a otimização da estratégia

  1. Aumentar adequadamente os parâmetros dos períodos de média móvel e as larguras das bandas de Bollinger para reduzir a frequência e os custos de negociação num mercado lateral.
  2. Introduzir mais indicadores técnicos ou indicadores de sentimento de mercado como filtros para melhorar a precisão dos sinais de entrada e evitar perdas de negociações que possam ocorrer no início de uma tendência.
  3. Estabelecer regras especiais para condições de mercado extremas, como a suspensão de novas posições quando ocorrem lacunas, para controlar os riscos.
  4. Otimizar os parâmetros para encontrar a combinação mais adequada para o mercado actual, aumentando a robustez da estratégia.
  5. Adicionar regras de gestão de posições e gestão de capital, tais como o ajustamento de posições com base na força da tendência ou na rentabilidade, a definição de linhas globais de stop-loss, etc., para controlar ainda mais os riscos da estratégia.

Resumo

O Marina Parfenova School Project Bot é uma estratégia quantitativa de negociação baseada em médias móveis e Bandas de Bollinger. Ele tenta lucrar capturando tendências de mercado enquanto controla drawdowns através de linhas de stop-loss de Bandas de Bollinger. A lógica da estratégia é simples e direta, com uma ampla gama de aplicações, e os parâmetros podem ser ajustados de forma flexível de acordo com as características do mercado.


/*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

Mais.