Estratégia de negociação quantitativa para avanço de preço-chave de Livermore

ATR Pivot Points Trend Analysis JESSE LIVERMORE risk management
Data de criação: 2025-07-16 11:24:22 última modificação: 2025-08-07 10:07:04
cópia: 0 Cliques: 326
2
focar em
319
Seguidores

Estratégia de negociação quantitativa para avanço de preço-chave de Livermore Estratégia de negociação quantitativa para avanço de preço-chave de Livermore

Visão geral

A estratégia de negociação quantitativa de ruptura de preço de mercado de Liverpool é uma estratégia de negociação sistematizada baseada na filosofia de negociação de Jesse Livermore. A estratégia capta com precisão o momento em que o preço quebra os pontos críticos de suporte e resistência, identificando as principais tendências do mercado, os reajustes naturais e os reajustes secundários.

Princípio da estratégia

A estratégia baseia-se na filosofia de negociação de Jesse Livermore, que divide as tendências de mercado em seis estados: tendência principal ascendente (MAIN_UP), tendência principal descendente (MAIN_DOWN), retorno natural (NATURAL_REBOUND), retorno natural (NATURAL_RETRACEMENT), retorno secundário (SECONDARY_REBOUND) e retorno secundário (SECONDARY_RETRACEMENT).

A estratégia determina o estado de tendência do mercado, calculando a relação entre o preço atual e os pontos-chave históricos, em combinação com o rácio de distância do eixo predefinido (que pode ser um percentual fixo ou baseado em cálculos dinâmicos do ATR). A lógica específica é a seguinte:

  1. Em uma tendência ascendente principal, mantenha o estado de tendência ascendente e atualize o ponto mais alto quando o preço continua a subir ou a recuar sem exceder o limiar definido pelo multiplicador do eixo principal. Quando a reversão ultrapassa o limiar, mude para o estado de reversão natural.

  2. Em uma tendência de queda principal, mantenha o estado de tendência de queda e atualize o ponto mais baixo quando o preço continua a cair ou quando a amplitude de rebote não excede o limiar definido pelo multiplicador do eixo principal; quando a rebote excede o limiar, mude para o estado de rebote natural.

  3. A conversão de tendência entre a reversão natural e a reversão secundária é julgada com base na relação entre o preço e os altos e baixos históricos e os múltiplos dos eixos principais e secundários.

A lógica de geração de sinais de negociação é a seguinte: quando a tendência confirma a tendência principal ascendente por dois períodos consecutivos, estabeleça uma posição de multi-cabeça; quando a tendência confirma a tendência principal descendente por dois períodos consecutivos, desista da posição.

Vantagens estratégicas

  1. Avaliação sistemática de tendênciasA estratégia sistematiza o conceito de negociação de Livermore, definindo os diferentes estados de tendência através de modelos matemáticos claros, eliminando a incerteza causada pelo julgamento subjetivo.

  2. Altamente adaptávelA estratégia pode ser adaptada a diferentes ambientes de mercado e condições de taxa de flutuação, aumentando a flexibilidade da estratégia por meio de percentual de distância entre eixos e opções de ATR parametrizadas.

  3. Mecanismo de confirmaçãoA estratégia exige que a tendência seja confirmada por dois ciclos consecutivos antes de executar a operação, reduzindo efetivamente os prejuízos causados por brechas falsas.

  4. Integração de gestão de fundosEstratégia de uso da percentagem de direitos e interesses da conta para gerenciar posições, garantindo uma abertura de risco consistente em diferentes tamanhos de conta.

  5. Captura de tendências de longo prazoA estratégia é capaz de capturar as tendências de grandes ciclos de forma eficaz, evitando a interferência de ruído de curto prazo, através da distinção entre tendências principais e secundárias.

Risco estratégico

  1. Risco de atrasoComo a estratégia requer a confirmação do estado da tendência em dois ciclos para executar a negociação, você pode perder parte do lucro no início da tendência ou sofrer uma retracção maior quando a tendência se inverte.

  2. Sensibilidade do parâmetroO desempenho da estratégia é altamente dependente da configuração de parâmetros como a porcentagem de distância entre os eixos principais e secundários, e os parâmetros inadequados podem levar a overtrading ou a perda de sinais importantes.

  3. Limitação de transações unidirecionaisA estratégia é projetada para executar apenas operações de vários tipos, podendo enfrentar um período mais longo de paralisação de fundos em mercados de queda prolongada, afetando a taxa de retorno geral.

  4. Tendências que definem a complexidadeA lógica de conversão entre os seis estados de tendência é mais complexa e pode levar a troca frequente de estados, aumentando os custos de negociação, quando o mercado é muito volátil.

  5. Falta de mecanismos de contençãoO código não tem um parâmetro de perda definido, o que pode levar a grandes perdas em caso de uma reviravolta brusca no mercado.

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

  1. Aumentar o mecanismo de suspensão de perdasIntrodução de uma estratégia de stop loss baseada em ATR ou porcentagem fixa para controlar o risco de uma única transação antes da reversão da tendência. A implementação concreta pode ser a criação de um preço de stop loss ao mesmo tempo que a criação de posições de vários titulares, protegendo a segurança do capital.

  2. Mecanismos de confirmação de tendênciasA estratégia atual requer dois ciclos consecutivos de confirmação de tendências, podendo ser considerada a combinação de volume de tráfego ou outros indicadores técnicos para a confirmação de tendências, melhorando a qualidade do sinal.

  3. Adição de espaço livreA expansão da estratégia para apoiar a negociação aéreas, aproveitar as oportunidades de lucro em uma tendência de queda, e melhorar a performance da estratégia em todo o clima.

  4. Ajuste de parâmetros dinâmicosIntrodução de mecanismos de ajuste de parâmetros dinâmicos com base na volatilidade histórica ou no estado do mercado, permitindo que a estratégia se adapte melhor a diferentes condições de mercado.

  5. Adicionar condições de filtragemO objetivo é: combinar o ciclo do mercado, a estacionalidade ou o filtro básico para evitar a abertura de posições em condições desfavoráveis e aumentar a taxa de vitória.

  6. Construção em série de depósitos e depósitosO objetivo é: implementar mecanismos de entrada e saída em lotes, reduzir o risco de escolha de oportunidade e otimizar a eficiência do uso de fundos.

Resumir

A estratégia de negociação de quantificação de ruptura de preço de ponta de Livermore Multihead traduz com sucesso o conceito clássico de negociação de Jesse Livermore em um sistema de algoritmos de execução quantitativa. Ao definir com precisão os seis estados de tendência do mercado e suas condições de conversão, a estratégia é capaz de identificar e acompanhar efetivamente as principais tendências ascendentes e executar negociações de ponta com base em tendências confirmadas.

Embora a estratégia tenha vantagens como sistematização, adaptabilidade e mecanismo de confirmação embutido, ela também enfrenta riscos como atraso, sensibilidade de parâmetros e falta de parada. A estabilidade e a lucratividade da estratégia podem ser melhoradas com o aumento do mecanismo de parada, a otimização da identificação de tendências, a ampliação da função de tomada de posse e a otimização das direções de ajuste de parâmetros dinâmicos.

Em geral, a estratégia fornece uma estrutura sólida para investidores que buscam implementar sistematicamente a filosofia de negociação da Livermore, com a expectativa de obter retornos estáveis e de longo prazo nas negociações reais, com o ajuste apropriado dos parâmetros e a otimização do gerenciamento de riscos.

Código-fonte da estratégia
/*backtest
start: 2024-07-16 00:00:00
end: 2025-07-12 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":200000}]
*/

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

//@version=6
strategy("Trading strategy Jesse Livermore", overlay=true)

// Input parameters
pivot_distance_percentage = input.float(0.5, title="Pivot Distance Percentage")
major_pivot_multiplier = input.int(6, title="Major Pivot Multiplier")
minor_pivot_multiplier = input.int(3, title="Minor Pivot Multiplier")
use_atr_pivot_distance = input.bool(false, title="Use ATR for Pivot Distance")
atr_period = input.int(14, title="ATR Period")
atr_pivot_multiplier = input.float(1, title="ATR Pivot Multiplier")

// Calculate ATR
atr = ta.atr(atr_period)

// Helper function to calculate pivot distance ratio
pivot_distance_ratio = use_atr_pivot_distance ? (atr * atr_pivot_multiplier) / close : pivot_distance_percentage / 100

// Trend states
NONE = 0
MAIN_UP = 6
MAIN_DOWN = 1
NATURAL_REBOUND = 2
NATURAL_RETRACEMENT = 5
SECONDARY_REBOUND = 4
SECONDARY_RETRACEMENT = 3

// Variables to track trends
var float main_up_max = na
var float main_down_min = na
var float natural_rebound_max = na
var float natural_retracement_min = na
var int trend = NONE
var int prev_trend = NONE
var int prev_prev_trend = NONE


// Initialize variables
if na(main_up_max)
    main_up_max := -1e10
if na(main_down_min)
    main_down_min := 1e10
if na(natural_rebound_max)
    natural_rebound_max := -1e10
if na(natural_retracement_min)
    natural_retracement_min := 1e10

// Trend logic
if trend == NONE
    if close > close[1]
        trend := MAIN_UP
        main_up_max := close
    else
        trend := MAIN_DOWN
        main_down_min := close
else if trend == MAIN_UP
    if close > close[1] or (main_up_max - close < close[1] * pivot_distance_ratio * major_pivot_multiplier)
        trend := MAIN_UP
        main_up_max := math.max(main_up_max, close)
    else
        trend := NATURAL_RETRACEMENT
        natural_retracement_min := close
else if trend == MAIN_DOWN
    if close < close[1] or (close - main_down_min < close[1] * pivot_distance_ratio * major_pivot_multiplier)
        trend := MAIN_DOWN
        main_down_min := math.min(main_down_min, close)
    else
        trend := NATURAL_REBOUND
        natural_rebound_max := close
else if trend == NATURAL_REBOUND
    if close > close[1]
        if close <= main_up_max
            if close - natural_rebound_max <= close[1] * pivot_distance_ratio * minor_pivot_multiplier
                trend := NATURAL_REBOUND
                natural_rebound_max := math.max(natural_rebound_max, close)
            else
                trend := MAIN_UP
                main_up_max := close
        else
            trend := MAIN_UP
            main_up_max := close
    else
        if natural_rebound_max - close <= close[1] * pivot_distance_ratio * major_pivot_multiplier
            trend := NATURAL_REBOUND
        else if close < natural_retracement_min
            trend := NATURAL_RETRACEMENT
            natural_retracement_min := close
        else
            trend := SECONDARY_RETRACEMENT
else if trend == NATURAL_RETRACEMENT
    if close < close[1]
        if close >= main_down_min
            if natural_retracement_min - close <= close[1] * pivot_distance_ratio * minor_pivot_multiplier
                trend := NATURAL_RETRACEMENT
                natural_retracement_min := math.min(natural_retracement_min, close)
            else
                trend := MAIN_DOWN
                main_down_min := close
        else
            trend := MAIN_DOWN
            main_down_min := close
    else
        if close - natural_retracement_min <= close[1] * pivot_distance_ratio * major_pivot_multiplier
            trend := NATURAL_RETRACEMENT
        else if close > natural_rebound_max
            trend := NATURAL_REBOUND
            natural_rebound_max := close
        else
            trend := SECONDARY_REBOUND
else if trend == SECONDARY_REBOUND
    if close <= natural_rebound_max and close >= natural_retracement_min
        trend := SECONDARY_REBOUND
    else if close < natural_retracement_min
        trend := NATURAL_RETRACEMENT
        natural_retracement_min := close
    else
        trend := NATURAL_REBOUND
        natural_rebound_max := close
else if trend == SECONDARY_RETRACEMENT
    if close >= natural_retracement_min and close <= natural_rebound_max
        trend := SECONDARY_RETRACEMENT
    else if close > natural_rebound_max
        trend := NATURAL_REBOUND
        natural_rebound_max := close
    else
        trend := NATURAL_RETRACEMENT
        natural_retracement_min := close


// Execute trades based on trend changes
if prev_trend != prev_prev_trend
    if trend == MAIN_UP and prev_trend == MAIN_UP
        strategy.entry("Long Entry", strategy.long, comment="Long Entry")
    else if trend == MAIN_DOWN and prev_trend == MAIN_DOWN
        strategy.close("Long Entry", comment = "Long Close")

// Update previous trend
prev_prev_trend := prev_trend
prev_trend := trend