Estratégia de negociação adaptável com base no indicador de momentum


Data de criação: 2024-01-05 11:43:25 última modificação: 2024-01-05 11:43:25
cópia: 0 Cliques: 564
1
focar em
1619
Seguidores

Estratégia de negociação adaptável com base no indicador de momentum

Visão geral

A estratégia é uma estratégia de negociação de ações auto-adaptável baseada em indicadores de momentum. Integra os indicadores de compressão de preços, canais de Keltner e correlação de bandas de Bryn, permitindo a determinação de tendências, identificação de pontos de ruptura e negociação totalmente automática para a retirada de perdas.

Princípio da estratégia

A estratégia é baseada na construção de canais de preço através das faixas de Bryn e Keltner, identificando que a ruptura dos canais forma um sinal de negociação. Quando o preço se move de baixo para cima, o canal é rompido. Quando o preço se move de cima para baixo, o canal é rompido.

Especificamente, a faixa de Brin, através do cálculo do diferencial padrão do preço, é traçado para cima e para baixo; o canal de Keltner, através do cálculo do valor médio do preço ± o intervalo médio de flutuação, é traçado para cima e para baixo. Quando ambos os canais ocorrem fdopen, o mercado é considerado como entrando em equilíbrio, aguardando a próxima ruptura. O indicador de compressão de preço reflete se o preço foi comprimido dentro dos dois canais, e a direção do mercado é julgada com base no valor positivo ou negativo do indicador de compressão.

Em suma, a estratégia combina vários indicadores para determinar a movimentação dos preços, formando uma lógica clara de longo e curto prazo que pode filtrar eficazmente as brechas falsas e identificar oportunidades de negociação de alta probabilidade.

Vantagens estratégicas

  1. Integração de vários indicadores, bom julgamento. A combinação de indicadores é complementar e pode melhorar a precisão de identificação.

  2. Determinação do diferencial do indicador de compressão, redução da falsa ruptura. O diferencial do indicador como condição auxiliar para evitar transações inúteis.

  3. Adaptação do canal de parada, controle efetivo do risco. O canal como posição de parada, pode ser ajustado automaticamente de acordo com a flutuação do mercado, reduzindo os prejuízos.

  4. Definição de parâmetros simples, adequada para automação. Apenas alguns parâmetros principais, fáceis de testar e otimizar, fácil de integrar ao sistema de negociação automática.

Risco estratégico

  1. A frequência da conversão de multi-espaço aumenta o número de transações. Quando o mercado está flutuando, pode levar a frequência de abertura de posições.

  2. Parâmetros de indicadores impróprios podem perder oportunidades de treinamento. É necessário testar e otimizar adequadamente para encontrar os melhores parâmetros.

  3. Aplica-se apenas a preços de ações com uma direção clara e não a mercados extremamente voláteis. Os indicadores são facilmente confundidos e produzem sinais errados.

Direção de otimização da estratégia

  1. Aumentar o módulo de controle de posição, otimizar a eficiência do uso de fundos. Por exemplo, distribuir fundos de acordo com a força de ruptura, etc.

  2. Adicionar um modelo de aprendizado de máquina para ajustar dinamicamente os parâmetros do indicador.

  3. Aumentar a estratégia de parada de perdas, introduzindo mais indicadores auxiliares para determinar o tempo de parada de perdas. A melhoria pode reduzir o número de paradas em pontos críticos.

Resumir

A estratégia integra as faixas de Bryn, os canais de Keltner e os indicadores de compressão de preços, formando uma lógica de julgamento clara e um sistema de controle de risco. Combina o julgamento de tendências e a operação de ruptura, que pode ser automaticamente adaptada ao cenário e identificar oportunidades de negociação de alta probabilidade. A estratégia pode ser ainda mais fortalecida, tornando-se uma ferramenta importante para a negociação de quantificação, através da otimização de parâmetros e do aumento de condições auxiliares.

Código-fonte da estratégia
/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © juliopetronilo

//@version=4
strategy("DMI/ADX/Squeeze Robot", shorttitle="DMI/ADX/SQZ", overlay=true)

// Squeeze Momentum Indicator
length = input(20, title="BB Length")
mult = input(2.0, title="BB MultFactor")
lengthKC = input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
useTrueRange = input(true, title="Use TrueRange (KC)")

source = close
basis = sma(source, length)
dev = multKC * stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev

ma = sma(source, lengthKC)
rangeKC = useTrueRange ? tr : (high - low)
rangema = sma(rangeKC, lengthKC)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC

sqzOn = (lowerBB > lowerKC) and (upperBB < upperKC)
sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC)
noSqz = not (sqzOn or sqzOff)

val = linreg(source - avg(avg(highest(high, lengthKC), lowest(low, lengthKC)), sma(close, lengthKC)), lengthKC, 0)

// DMI/ADX Plot
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
keyLevel = input(23, title="Key Level for ADX")

dirmov(len) =>
    up = change(high)
    down = -change(low)
    truerange = rma(tr, len)
    plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
    minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
    [plus, minus]

adx(dilen, adxlen) =>
    [plus, minus] = dirmov(dilen)
    sum = plus + minus
    adx_val = abs(plus - minus) / (sum == 0 ? 1 : sum) * 100
    [adx_val, plus, minus]

[sig, up, down] = adx(dilen, adxlen)

// Estrategia de Trading
strategy.entry("Buy", strategy.long, when=sqzOn and crossover(up, down) and crossover(val, 0))
strategy.entry("Sell", strategy.short, when=sqzOn and crossunder(up, down) and crossunder(val, 0))
strategy.close("Buy", when=sqzOff)
strategy.close("Sell", when=sqzOff)

// Plot de los indicadores
plot(val, color=color.blue, style=plot.style_histogram, linewidth=4)
plot(0, color=noSqz ? color.blue : sqzOn ? color.black : color.rgb(236, 238, 247), style=plot.style_cross, linewidth=2)
plot(up, color=color.blue, title="+DI")
plot(down, color=color.gray, title="-DI")
plot(keyLevel, color=color.white, title="Key Level")