Estratégia de compra de pânico da Jackson Quickfingersluc (QFL)


Data de criação: 2025-08-27 10:06:54 última modificação: 2025-09-02 14:07:43
cópia: 0 Cliques: 271
2
focar em
319
Seguidores

Estratégia de compra de pânico da Jackson Quickfingersluc (QFL) Estratégia de compra de pânico da Jackson Quickfingersluc (QFL)

QFL, ATR, PANIC-SELL, REBOUND, MEAN-REVERSION

O que o capital inteligente está fazendo quando o mercado está em pânico?

Quando os investidores de varejo vendem loucamente em meio a uma tempestade de sangue nos mercados financeiros, há sempre um grupo de comerciantes calmos em silêncio. Eles não estão perseguindo a queda, mas aguardando um momento especial de extremo pânico para afundar o mercado. Esta é a filosofia central da estratégia de Jackson Quickfingersluc (QFL): ganância quando os outros estão com medo.

A estratégia QFL não é simplesmente um pensamento retrógrado, mas um sofisticado sistema de quantificação que tenta capturar o rebote técnico após a venda de panico das oportunidades de negociação mais valiosas do mercado. O nome da estratégia vem do apelido de um lendário comerciante, conhecido por copiar rapidamente os mercados em queda.

A lógica matemática do pânico

O núcleo da estratégia QFL consiste em identificar dois níveis de preço-chave: o nível de referência (Base Level) e o nível de rebote (Rebound Level). O nível de referência é calculado através da análise dos preços de fechamento mais baixos históricos e representa uma área de suporte relativamente segura. O nível de rebote, por sua vez, é baseado na amplitude de flutuações de preços recentes e fornece uma referência para a obtenção de lucros.

Ainda mais sofisticado, a estratégia introduziu o ATR (Average True Rate) para identificar o panic selling. Quando os preços flutuam acima de um determinado número de vezes o ATR, o sistema determina que o mercado está em uma flutuação anormal, o que geralmente é acompanhado por uma liberação de pânico. Este design evita a entrada prematura em um ajuste normal do mercado e, em vez disso, se concentra em capturar o verdadeiro desequilíbrio do mercado.

A estratégia também estabelece um mecanismo de período de arrefecimento para evitar transações frequentes em um curto período de tempo. Este design reflete uma profunda compreensão da psicologia do mercado. As vendas verdadeiramente de pânico geralmente levam tempo para serem totalmente liberadas, e operações muito frequentes podem perder o melhor momento.

Três modelos de lucro inteligentes

A estratégia QFL oferece três maneiras diferentes de obter lucro, cada uma correspondendo a diferentes preferências de risco e compreensão de mercado:

Modelo de preço médioAdequado para os comerciantes que buscam um lucro estável. Ao calcular o custo médio de todas as posições, este método pode suavizar o impacto de uma única transação e reduzir a pressão de escolha do momento.

Modo de entrada inicialA estratégia mais radical é a que se baseia em uma liquidação total, desde que a primeira transação atinja o objetivo de lucro. Esta estratégia é adequada para os comerciantes que têm confiança no tempo do mercado e podem bloquear rapidamente os lucros.

Modelo de liquidação por lotesO mais preciso, permitindo o gerenciamento de cada posição independente. Esta forma é especialmente eficaz em mercados com maior volatilidade, podendo maximizar o aproveitamento de vários rebotes de preços.

Análise de adaptabilidade ao mercado da estratégia

De acordo com os dados de retrospectiva, a estratégia QFL mostra uma boa adaptabilidade em diferentes cenários de mercado. Em mercados de tendência de queda, a estratégia é capaz de capturar várias rebotes técnicas, embora os ganhos individuais possam ser limitados, mas a taxa de vitória é relativamente alta. Em mercados de turbulência, a estratégia tem um desempenho mais excelente, pois o rebote após a venda de pânico costuma ser mais rápido e visível.

No entanto, a estratégia também tem limitações óbvias. Em uma forte tendência ascendente, a oportunidade de panico é relativamente pequena e a frequência de negociação da estratégia é significativamente reduzida. Além disso, em eventos de risco sistêmico extremo, a análise técnica tradicional pode falhar e os níveis de referência podem ser batidos rapidamente.

A arte da gestão de risco

A gestão de risco da estratégia QFL se manifesta em vários níveis. Primeiro, o ATR ajusta dinamicamente a sensibilidade da identificação de pânico, permitindo que a estratégia se adapte a diferentes ambientes de volatilidade do mercado. Segundo, o mecanismo de período de arrefecimento efetivamente impede o excesso de negociação e protege a segurança dos fundos.

Mais importante ainda, o mecanismo de contenção da estratégia foi projetado para equilibrar habilmente a ganância e o medo. Ao exigir simultaneamente o cumprimento dos objetivos de lucro e a confirmação de rebote, a estratégia evitou a saída prematura e, ao mesmo tempo, impediu a retirada drástica dos lucros.

Pensar no futuro da evolução.

Com a mudança contínua da estrutura do mercado, as estratégias de QFL também precisam de otimização contínua. A introdução de tecnologias de aprendizado de máquina pode melhorar a precisão da identificação do pânico, enquanto a combinação de indicadores de emoção pode aumentar a capacidade de previsão das estratégias.

Além disso, tendo em conta as características de alta frequência dos mercados modernos, as estratégias podem precisar de ser executadas em um período de tempo mais curto, o que requer um ajuste e otimização correspondente dos parâmetros.

O verdadeiro valor da estratégia QFL não reside apenas na sua rentabilidade, mas na filosofia de negociação que ela representa, mantendo-se racional nos momentos mais sombrios do mercado e mostrando coragem quando a multidão está com medo. Esta implementação quantitativa do pensamento inverso oferece aos comerciantes modernos uma perspectiva única para entender e participar dos mercados financeiros.

Código-fonte da estratégia
/*backtest
start: 2025-05-01 00:00:00
end: 2025-08-26 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","tradesMode":"1"}]
*/

//@version=6
strategy("Jackson Quickfingersluc (QFL) Strategy", overlay=true)

// Parameters
baseLevelMultiplier = input.float(1, title="Base Level Multiplier", minval=0.1, maxval=1.0, step=0.05)
reboundMultiplier = input.float(0.8, title="Rebound Level Multiplier", minval=0.0001, maxval=1.0, step=0.01) // Multiplier for range of past candles
lookBackPeriod = input.int(50, title="Look-back Period", minval=10)
atrPeriod = input.int(14, title="ATR Period", minval=1)
atrMultiplier = input.float(1.2, title="Panic Sell ATR Multiplier", minval=0.1, maxval=5.0, step=0.1) // Multiplier for ATR threshold
panicSellPercentage = input.float(0.005, title="Panic Sell Percentage Below Base Level", step=0.0001) // Percentage below base level for panic sell
exitProfitThreshold = input.float(0.01, title="Exit Profit Threshold", minval=0.001, maxval=0.1, step=0.001) // Minimum profit threshold (e.g., 1%)
takeProfitOption = input.string("avg_price", title="Take Profit Option", options=["avg_price", "first_entry", "each_position"]) // TP option selection
rangeBars = input.int(3, title="Number of Bars for Range Calculation", minval=1) // Input for number of bars for range calculation
cooldownBars = input.int(5, title="Cooldown Period (Bars)", minval=1) // Input for cooldown period after a buy

// Calculate Base Level
lowestClose = ta.lowest(close, lookBackPeriod)
baseLevel = lowestClose[1] * baseLevelMultiplier

// Calculate Rebound Level as a multiplier of the range of the last 'rangeBars' bars
rangeLastBars = ta.highest(high, rangeBars) - ta.lowest(low, rangeBars)
reboundLevel = reboundMultiplier * rangeLastBars + baseLevel

// Plotting base and rebound levels
plot(baseLevel, color=color.green, linewidth=2, title="Base Level")
plot(reboundLevel, color=color.red, linewidth=2, title="Rebound Level")

// Calculate ATR
atrValue = ta.atr(atrPeriod)

// Factorial average and panic sell movement calculation
var bool panicSellMovement = false

// Loop through each range and check for panic sell condition
for bar_i = 1 to rangeBars+1
    currentBarRange = high[bar_i - 1] - low[bar_i - 1]  // Current bar range
    rangeOfLastXBars = ta.highest(high, bar_i) - ta.lowest(low, bar_i)  // Range of the last `bar_i` bars
    
    // Condition 1: Check if the average range of the last `bar_i` bars exceeds ATR multiplier
    if (rangeOfLastXBars / bar_i) > atrMultiplier * atrValue
        panicSellMovement := true
        break  // Exit the loop immediately
    
    // Condition 2: Check if the current bar range exceeds ATR multiplier
    if currentBarRange > atrMultiplier * atrValue
        panicSellMovement := true
        break  // Exit the loop immediately

// Define the adjusted base level threshold for panic sell (base level - percentage)
panicSellThreshold = baseLevel[0] * (1 - panicSellPercentage)

// Define panic sell condition with base level check and the panic sell percentage threshold
isPanicSell = low < panicSellThreshold and panicSellMovement

// Define rebound condition
isRebound = close > reboundLevel

// Track the last entry bar index
var float lastEntryBar = na

// Store entry prices for each position in an array
var float[] entryPrices = na
var float[] entrySizes = na

bool exit_cond = false
if (na(entryPrices))
    entryPrices := array.new_float(0)
if (na(entrySizes))
    entrySizes := array.new_float(0)

// Strategy to simulate buys and sells (for backtesting purposes)
entry_cond = isPanicSell and (na(lastEntryBar) or (bar_index - lastEntryBar) > cooldownBars)
if entry_cond
    strategy.entry("Buy", strategy.long)
    lastEntryBar := bar_index  // Set last entry bar to current bar index
    // Store the entry price and size for this new position
    array.push(entryPrices, close)
    array.push(entrySizes, strategy.position_size)

isTakeProfitCondition(entryPrice) =>
    profitPercentage = (close - entryPrice) / entryPrice
    profitCondition = profitPercentage >= exitProfitThreshold
    reboundCondition = isRebound
    profitCondition and reboundCondition

// Check TP condition based on selected option
if takeProfitOption == "avg_price"
    avgEntryPrice = strategy.position_avg_price
    if isTakeProfitCondition(avgEntryPrice)
        exit_cond := true
        strategy.close("Buy")
else if takeProfitOption == "first_entry"
    firstEntryPrice = strategy.opentrades.entry_price(0)
    if isTakeProfitCondition(firstEntryPrice)
        exit_cond := true
        strategy.close("Buy")
else if takeProfitOption == "each_position"
    // Ensure we only check when there is at least one entry
    if array.size(entryPrices) > 0
        // Loop until there are no more entries left
        i = 0
        while i < array.size(entryPrices)
            entryPrice = array.get(entryPrices, i)
            positionSize = array.get(entrySizes, i)
            
            // Check profit condition for each position
            if isTakeProfitCondition(entryPrice)
                exit_cond := true
                // Remove the entry price and size from the arrays once the position is closed
                array.remove(entryPrices, i)
                array.remove(entrySizes, i)
                strategy.close("Buy", qty=positionSize) // Close only the position that reached the target
            else
                // Only increment the index if the current entry is not closed
                i := i + 1

// Trigger BUY alert
if entry_cond
    alert("BUY ALERT: Panic Sell condition triggered", alert.freq_once_per_bar)

// Trigger SELL alert
if exit_cond
    alert("SELL ALERT: Exit condition met (take profit or rebound)", alert.freq_once_per_bar)