Estratégia de negociação multi-time frame baseada na classificação de Lorenz

EMA CI HTF TA
Data de criação: 2024-07-31 11:49:32 última modificação: 2024-07-31 11:49:32
cópia: 0 Cliques: 673
1
focar em
1617
Seguidores

Estratégia de negociação multi-time frame baseada na classificação de Lorenz

Visão geral

A estratégia é um sistema de negociação de quadros de tempo múltiplos baseado na Classificação de Lorentz, combinando um preço-alvo e um mecanismo de stop loss dinâmico. Utiliza o índice de média móvel (EMA) e o índice de classificação (CI) para identificar tendências de mercado e faz uma análise cruzada em quadros de tempo altos e quadros de tempo atuais. A estratégia maximiza os lucros ao definir porcentagens de alvo, enquanto usa um mecanismo de retrospectiva para confirmar a eficácia dos sinais de negociação.

Princípio da estratégia

O núcleo da estratégia é a Classificação de Lorentz, que combina a média móvel tripla (EMA) e o índice de classificação (CI) para gerar sinais de negociação. Os passos específicos são os seguintes:

  1. Calcule o EMA triplo: EMA1, EMA2 e EMA3
  2. Calcule o índice de classificação (CI): CI = (EMA1 - EMA2) / (0.015 * EMA ((((EMA1 - EMA2 , length)) * 100。
  3. Linha de Lorentz = EMA3 + CI。

A estratégia calcula a linha de Lorentz tanto no período de tempo atual quanto no período superior, para fornecer uma visão multidimensional do mercado. O sinal de negociação é baseado no cruzamento do preço com a linha de Lorentz e é confirmado por um mecanismo de retrospectiva. O sinal de compra é acionado quando o preço atravessa a linha de Lorentz e o preço mínimo durante o período de retrospectiva é inferior à linha de Lorentz.

A estratégia também introduziu um mecanismo de preço-alvo para determinar o ponto de saída com base na porcentagem de alvo definida pelo usuário. Ao mesmo tempo, também implementou um stop loss dinâmico para controlar o risco.

Vantagens estratégicas

  1. Análise de múltiplos períodos de tempo: A estratégia é capaz de capturar tendências de mercado mais abrangentes, reduzindo os falsos sinais, através da combinação de linhas de Lorenz de períodos de tempo atuais e mais elevados.

  2. Identificação de tendências dinâmicas: A classificação de Lorenz é capaz de se adaptar rapidamente às mudanças no mercado, fornecendo capacidade de identificação de tendências sensíveis.

  3. Mecanismo de confirmação de sinais: O uso de um período de retrospectiva para confirmar sinais de negociação reduz a probabilidade de transações erradas.

  4. Otimização do preço-alvo: A estratégia permite maximizar o lucro em condições favoráveis, definindo o percentual-alvo.

  5. Gerenciamento de riscos: introdução de mecanismos de stop loss dinâmicos para controlar eficazmente o risco de cada transação.

  6. Visualização e estatísticas: A estratégia fornece gráficos e estatísticas de negociação intuitivos para facilitar a análise e otimização do desempenho da estratégia.

  7. Flexibilidade: múltiplos parâmetros ajustáveis permitem que o comerciante otimize de acordo com diferentes condições de mercado e preferências pessoais.

Risco estratégico

  1. Sensibilidade de parâmetros: o desempenho da estratégia é altamente dependente da escolha dos parâmetros de entrada, e a configuração inadequada dos parâmetros pode levar a excesso de negociação ou a perda de oportunidades importantes.

  2. Dependência de condições de mercado: em mercados turbulentos, a estratégia pode produzir falsos sinais frequentes, resultando em perdas contínuas.

  3. Risco de deslizamento: em mercados de rápida oscilação, o preço de execução real pode ser significativamente diferente do preço de sinal.

  4. Risco de otimização excessiva: ajuste excessivo de parâmetros para se adequar aos dados históricos pode levar a um excesso de ajuste, afetando o desempenho futuro do disco.

  5. Falha técnica: Dependendo do cálculo de indicadores técnicos complexos, falhas no sistema ou erros de dados podem levar a decisões de negociação erradas.

Para reduzir esses riscos, recomenda-se:

  • A partir daí, o processo de revisão do histórico e testes prospectivos.
  • Usar medidas apropriadas de gestão de posições e de controlo de riscos.
  • Revisar periodicamente e ajustar os parâmetros da estratégia para adaptar-se a condições de mercado em mudança.
  • Implementação de mecanismos robustos de tratamento e monitoramento de erros.

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

  1. Ajuste de parâmetros dinâmicos: implementa um mecanismo de ajuste de parâmetros adaptativos para ajustar automaticamente o comprimento e o limiar do EMA de acordo com a volatilidade do mercado.

  2. Adicionar filtros: introduzir indicadores técnicos adicionais ou indicadores básicos como filtros para melhorar a qualidade do sinal.

  3. Integração de aprendizado de máquina: otimizar a seleção de parâmetros e o processo de geração de sinais usando algoritmos de aprendizado de máquina.

  4. Análise de correlação entre variedades: considera os dados de várias variedades relevantes para fornecer uma visão mais abrangente do mercado.

  5. Integração de eventos de notícias: adição de função de análise de eventos de notícias para ajustar as ações estratégicas durante a divulgação de dados econômicos importantes.

  6. Ajuste de volatilidade: Ajuste de percentual e nível de parada de acordo com a dinâmica de volatilidade do mercado.

  7. Melhorar o gerenciamento de risco: implementar estratégias mais complexas de gerenciamento de posição e controle de risco, como o ajuste de posição com base na volatilidade.

Essas orientações de otimização visam aumentar a adaptabilidade e a estabilidade das estratégias, permitindo que elas mantenham um bom desempenho em diferentes condições de mercado.

Resumir

A estratégia de metas de quadros temporais múltiplos da classificação de Lorenz é um sistema de negociação integrado, que combina métodos avançados de análise técnica e mecanismos de gestão de risco inteligentes. Através da análise de quadros temporais múltiplos, identificação de tendências dinâmicas e otimização de preços de metas, a estratégia tem o potencial de alcançar um desempenho de negociação estável em várias condições de mercado. No entanto, também enfrenta desafios como sensibilidade a parâmetros e dependência do mercado.

Código-fonte da estratégia
/*backtest
start: 2023-07-31 00:00:00
end: 2024-07-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Lorenzian Classification Strategy with Target and Multi-Timeframe", overlay=true)

// Input parameters
length = input.int(5, "Lorenzian Length", minval=1)
threshold = input.float(1.0, "Threshold", step=0.1)
lookback = input.int(3, "Lookback Candles", minval=1, maxval=20)
targetPercentage = input.float(1.5, "Target Percentage (%)", step=0.1) // Target percentage for exit
higherTimeframe = input.timeframe("D", "Higher Timeframe") // Higher timeframe for multi-timeframe analysis

// Lorenzian Classification calculation for current timeframe
ema1 = ta.ema(hlc3, length)
ema2 = ta.ema(ema1, length)
ema3 = ta.ema(ema2, length)

d = ema1 - ema2
ci = d / (0.015 * ta.ema(math.abs(d), length)) * 100

lorenzian = ema3 + ci

// Lorenzian Classification calculation for higher timeframe
hlc3_htf = request.security(syminfo.tickerid, higherTimeframe, (high + low + close)/3 )
ema1_htf = ta.ema(hlc3_htf, length)
ema2_htf = ta.ema(ema1_htf, length)
ema3_htf = ta.ema(ema2_htf, length)

d_htf = ema1_htf - ema2_htf
ci_htf = d_htf / (0.015 * ta.ema(math.abs(d_htf), length)) * 100

lorenzian_htf = ema3_htf + ci_htf

// Signal generation
crossUp = ta.crossover(close, lorenzian)
crossDown = ta.crossunder(close, lorenzian)

// Determine color based on price position relative to the line
lineColor = close > ema3 ? color.green : color.red
lineColorH = close > ema3_htf ? color.blue : color.red

// Plot the line with dynamic color
plot(ema3, color=lineColor, title="EMA3", linewidth=2)
plot(ema3_htf, color=lineColorH, title="EMA3 HTF", linewidth=2)

// Function to check for opposite movement
oppositeMove(isLong) =>
    if isLong
        lowest = ta.lowest(low, lookback)
        lowest < lorenzian[lookback]
    else
        highest = ta.highest(high, lookback)
        highest > lorenzian[lookback]

// Generate buy and sell signals
buySignal = crossUp and oppositeMove(true)
sellSignal = crossDown and oppositeMove(false)

// Calculate and manage target price
var float targetPrice = na
var float plotTargetPrice = na
var float entryPrice = na

// Variables to track trade outcomes
var int targetMet = 0
var int targetNotMet = 0
var int totalTrades = 0

if (buySignal)
    strategy.entry("Buy", strategy.long)
    entryPrice := close
    targetPrice := entryPrice * (1 + targetPercentage/100)
    plotTargetPrice := targetPrice
    totalTrades := totalTrades + 1

if (sellSignal)
    strategy.entry("Sell", strategy.short)
    entryPrice := close
    targetPrice := entryPrice * (1 - targetPercentage/100)
    plotTargetPrice := targetPrice
    totalTrades := totalTrades + 1

// Check if target price is met to exit
if (not na(targetPrice))
    if (strategy.position_size > 0 and high >= targetPrice) // Long position exit condition
        strategy.close("Buy")
        targetPrice := na
        entryPrice := na
        targetMet := targetMet + 1
    else if (strategy.position_size > 0 and low < entryPrice * (1 - targetPercentage/100)) // Stop loss for long
        strategy.close("Buy")
        targetPrice := na
        entryPrice := na
        targetNotMet := targetNotMet + 1
    
    if (strategy.position_size < 0 and low <= targetPrice) // Short position exit condition
        strategy.close("Sell")
        targetPrice := na
        entryPrice := na
        targetMet := targetMet + 1
    else if (strategy.position_size < 0 and high > entryPrice * (1 + targetPercentage/100)) // Stop loss for short
        strategy.close("Sell")
        targetPrice := na
        entryPrice := na
        targetNotMet := targetNotMet + 1

// Reset plotTargetPrice when position is closed
if (strategy.position_size == 0)
    plotTargetPrice := na

// Plot signals and target price
plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.purple, style=shape.triangledown, size=size.small)
plot(plotTargetPrice, color=color.yellow, title="Target Price", style=plot.style_circles, linewidth=2)

// Add alerts
alertcondition(buySignal, title="Buy Signal", message="Lorenzian Buy Signal")
alertcondition(sellSignal, title="Sell Signal", message="Lorenzian Sell Signal")

// Calculate success percentage
successPercentage = totalTrades > 0 ? (targetMet / totalTrades) * 100 : 0

// Create a table to display trade outcomes
var table tradeStats = table.new(position.top_right, 2, 3, border_width=1)
table.cell(tradeStats, 0, 0, "Targets Met", bgcolor=color.new(color.green, 30))
table.cell(tradeStats, 1, 0, "Targets Missed", bgcolor=color.new(color.red, 30))
table.cell(tradeStats, 0, 1, str.tostring(targetMet), bgcolor=color.new(color.green, 30))
table.cell(tradeStats, 1, 1, str.tostring(targetNotMet), bgcolor=color.new(color.red, 30))
table.cell(tradeStats, 0, 2, "Success Rate", bgcolor=color.new(color.blue, 30))
table.cell(tradeStats, 1, 2, str.tostring(successPercentage, "#.##") + "%", bgcolor=color.new(color.blue, 30))