Estratégia de alta e baixa de média móvel de pista dupla


Data de criação: 2023-11-06 16:25:01 última modificação: 2023-11-06 16:25:01
cópia: 1 Cliques: 649
1
focar em
1621
Seguidores

Estratégia de alta e baixa de média móvel de pista dupla

Visão geral

Esta estratégia usa a média móvel de pedras preciosas como principal indicador técnico, em combinação com a dupla faixa de Brin, para identificar a tendência do mercado. Olhe para baixo quando o preço quebra a faixa de Brin para cima e olhe para cima quando o preço quebra a faixa de Brin para baixo.

Princípio da estratégia

  1. Computação da Média Móvel de Peças (CBMA): A utilização da Média Móvel de Peças (MA) de EMA, adaptada, permite um acompanhamento eficaz das mudanças de preços.

  2. Configuração dos parâmetros da faixa de Brimstone: escolha a média móvel de pedras como a linha central, e a linha superior e inferior adotam a configuração padrão de múltiplo de estômago de diferença, que pode ser ajustada de acordo com o mercado.

  3. Negociação de ruptura: o preço sobe quando o preço quebra a trajetória superior, e sobe quando o preço quebra a trajetória inferior, usando a estratégia de seguimento de tendências do “breaker”.

  4. O cancelamento de pedidos de relâmpagos é usado para fazer apenas transações unilaterais.

  5. O volume de transação é fixado e pode ser ajustado de acordo com o capital.

Análise de vantagens

  1. A média móvel de fragmentos é muito suave e permite um bom acompanhamento dos preços.

  2. Adaptação do algoritmo EMA para otimizar o tempo real das médias móveis.

  3. O Brin, com o sinal de subida e descida, indicou claramente a direção da ruptura.

  4. A tendência é que os investidores usem o modelo de acompanhamento de tendências, evitando o whipsaw.

  5. O volume fixo de negociação controla o prejuízo único.

Análise de Riscos

  1. A configuração dos parâmetros da faixa de Bryn precisa ser otimizada, e há problemas com tamanhos grandes ou pequenos.

  2. O sinal de ruptura pode ser falso.

  3. O que é necessário para controlar os prejuízos?

  4. O volume fixo de transações não pode ser ajustado de acordo com o mercado.

  5. A única forma de obter lucros é através de transações unilaterais.

Direção de otimização

  1. Otimização dinâmica dos parâmetros da faixa de Brin para que a faixa de Brin seja mais adequada para o mercado.

  2. Adicione mais indicadores para filtrar ondas e evitar falsas brechas.

  3. Adicione um tracking stop para bloquear o lucro.

  4. A negociação de cobertura, ao mesmo tempo em que fazemos mais shorting, é mais lucrativa.

  5. Adesão ao sistema de gestão de posições.

Resumir

Esta estratégia é uma estratégia de acompanhamento de tendências de breaker, usando indicadores tecnológicos de médias móveis adaptáveis, em combinação com a dupla faixa de Brin para definir um sinal de ruptura claro. A estratégia é simples e fácil de operar, o volume de negociação fixo pode controlar o risco, com um certo valor de negociação. Mas também há alguns problemas, como a falsa ruptura e a otimização de parâmetros, que precisam ser otimizados pela adição de mais indicadores tecnológicos, ao mesmo tempo em que controlam o risco.

Código-fonte da estratégia
/*backtest
start: 2023-10-29 00:00:00
end: 2023-11-05 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="CBMA Bollinger Bands Strategy directed [ChuckBanger]", shorttitle="CBMA BB CB", 
   overlay=true )


length = input(title="Length", type=input.integer, defval=12, minval=1)
regular = input(title="Regular BB Or CBMA?", type=input.bool, defval=false)
src = input(title="Source", type=input.source, defval=close)
mult = input(title="Multipler", type=input.float, defval=2.3, minval=.001, maxval=50, step=.1)
emaLen = input(title="EMA Length", type=input.integer, defval=11, minval=1)
emaGL = input(title="EMA Gain Limit", type=input.integer, defval=50, minval=1)
highlight = input(title="Highlight On/Off", type=input.bool, defval=true)

direction = input(0, title = "Strategy Direction", type=input.integer, minval=-1, maxval=1)

strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

//strategy.risk.max_drawdown(50, strategy.percent_of_equity)

calc_hma(src, length) =>
    hullma = wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
    hullma

calc_cbma(price, length, emaLength, emaGainLimit) =>
    alpha = 2 / (emaLength + 1)
    ema = ema(price, emaLength)
    int leastError = 1000000
    
    float ec = 0
    float bestGain = 0
    
    for i = emaGainLimit to emaGainLimit
        gain = i / 10
        ec := alpha * ( ema + gain * (price - nz(ec[1])) ) + (1 - alpha) * nz(ec[1])
        error = price - ec
        if (abs(error) < leastError)
            leastError = abs(error)
            bestGain = gain
    
    ec := alpha * ( ema + bestGain * (price - nz(ec[1])) ) + (1 - alpha) * nz(ec[1])
    hull = calc_hma(price, length)
    
    cbma = (ec + hull) / 2
    cbma

cbma = calc_cbma(src, length, emaLen, emaGL)
basis = regular ? sma(src, length) : cbma
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
cbmaColor = fixnan(highlight and not regular ? cbma > high ? color.purple : cbma < low ? color.aqua : na : color.red)
plot(basis, color=cbmaColor)
p1 = plot(upper, color=color.blue)
p2 = plot(lower, color=color.blue)
fill(p1, p2)

if (crossover(src, lower))
    strategy.entry("CBMA_BBandLE", strategy.long, stop=lower, oca_name="BollingerBands", comment="CBMA_BBandLE")
else
    strategy.cancel(id="CBMA_BBandLE")

if (crossunder(src, upper))
    strategy.entry("CBMA_BBandSE", strategy.short, stop=upper, oca_name="BollingerBands", comment="CBMA_BBandSE")
else
    strategy.cancel(id="CBMA_BBandSE")