Estratégia de reversão da média da faixa de Bollinger com índice de intensidade intradiária

Autora:ChaoZhang, Data: 2024-02-20 15:07:59
Tags:

img

Resumo

Esta estratégia é uma estratégia de reversão média baseada em Bandas de Bollinger e Índice de Intensidade Intradiária. Utiliza as quebras de preço da banda superior e inferior das Bandas de Bollinger, combinadas com o indicador de volume Índice de Intensidade Intradiária para determinar o momento de entrada. As vantagens desta estratégia incluem: obter lucros da reversão média dos preços e filtrar sinais com indicadores de volume.

Princípio da estratégia

A estratégia primeiro calcula a banda média, banda superior e banda inferior das Bandas de Bollinger. A banda média é a média móvel simples ou média móvel exponencial do preço de fechamento. As bandas superior e inferior são construídas adicionando/subtraindo dois desvios padrão na banda média. Quando o preço atravessa a banda inferior, é considerado uma oportunidade de reversão média, tomando uma posição longa.

Como um indicador assistido para julgamento, a estratégia introduz o Índice de Intensidade Intradiária. Este indicador combina informações de preço e volume. Quando o índice é positivo, ele indica que o poder de compra está se fortalecendo, dando sinal longo. Quando o índice é negativo, ele indica que o poder de venda está se fortalecendo, dando sinal curto.

Para posições de abertura, a estratégia requer tanto a quebra de preço da banda de Bollinger Bands quanto o julgamento do indicador do Índice de Intensidade Intradiária.

Análise das vantagens

A maior vantagem desta estratégia é a utilização da reversão média dos preços para o lucro. Quando os preços têm grandes desvios da média, de acordo com as leis estatísticas, a probabilidade de os preços retornarem à média é relativamente grande.

Outra vantagem é a introdução do indicador de volume - Índice de Intensidade Intradiária, para filtrar os sinais de preço.

Análise de riscos

Embora esta estratégia se baseie no evento de probabilidade de reversões da média de preços, a movimentação aleatória dos preços de mercado ainda pode desencadear stop loss, levando a perdas.

Outro grande risco é que o processo de reversão dos preços é um ciclo relativamente longo. Para os investidores, o capital pode ser mantido por algum período de tempo.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Otimizar os parâmetros das bandas de Bollinger, ajustar as métricas de ciclo e desvio para se adaptar à volatilidade dos diferentes mercados

  2. Tente outros tipos de médias móveis, como média móvel ponderada para aumentar a suavidade

  3. Tente outros tipos de indicadores de volume, procurando melhores sinais de confirmação de volume-preço

  4. Adicionar estratégias stop loss/profit taking, controlar a perda máxima por ordem

Conclusão

Em conclusão, esta estratégia é uma estratégia típica de reversão média. Ela lucrar com eventos de probabilidade, mas os riscos são óbvios também. Melhores resultados podem ser obtidos através de ajustes de parâmetros e otimizações de indicadores. Mas para os investidores, reconhecer os atributos corretamente desta estratégia também é a chave.


/*backtest
start: 2024-01-20 00:00:00
end: 2024-02-19 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/

// Bollinger Bands Strategy with Intraday Intensity Index
// by SparkyFlary

//For Educational Purposes
//Results can differ on different markets and can fail at any time. Profit is not guaranteed.
strategy(title="Bollinger Bands Strategy with Intraday Intensity Index", shorttitle="Bollinger Bands Strategy", overlay=true)

BBlength = input(20, title="Bollinger Bands length")
BBmaType = input("SMA", title="Bollinger Bands MA type", type=input.string, options=["SMA", "EMA"])
BBprice = input(close, title="source")
timeStop = input(10, title="Time-based stop length")
BBmult = input(2.0, title="Bollinger Bands Standard Deviation")
withIII = input(true, title="with Intraday Intensity Index?")
IIIlength = input(21, title="Intraday Intensity Index length")

//function for choosing moving averages
f_ma(type, src, len) =>
    float result = 0
    if type == "SMA"
        result := sma(src, len)
    if type == "EMA"
        result := ema(src, len)
    result

//Intraday Intensity Index
k1 = (2 * close - high - low) * volume
k2 = high != low ? high - low : 1
i = k1 / k2
iSum = sum(i, IIIlength)

//Bollinger Bands
BBbasis = f_ma(BBmaType, BBprice, BBlength)
BBdev = BBmult * stdev(BBprice, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev

plot(BBupper, title="Bollinger Bands Upper Line")
plot(BBlower, title="Bollinger Bands Lower Line")
plot(BBbasis, title="Bollinger Bands Mid line", color=color.maroon)

//Strategy
buy = close[1]<BBlower[1] and close>BBlower and (withIII ? iSum>0 : 1)
sell = close>BBbasis or buy[timeStop] or (strategy.openprofit>0 and buy==0 and buy[1]==0 and buy[2]==0 and buy[3]==0)
short = close[1]>BBupper[1] and close<BBupper and (withIII ? iSum<0 : 1)
cover = close<BBbasis or short[timeStop] or (strategy.openprofit>0 and short==0 and short[1]==0 and short[2]==0 and short[3]==0)

strategy.entry(id="enter long", long=true, when=buy)
strategy.close(id="enter long", comment="exit long", when=sell)
strategy.entry(id="enter short", long=false, when=short)
strategy.close(id="enter short", comment="exit short", when=cover)

Mais.