Estratégia de adição de posição dinâmica de envelope de preço progressivo inteligente

DCA MA SMA EMA Envelope TAKE PROFIT STOP LOSS risk management Moving Average Envelope
Data de criação: 2025-05-14 15:14:54 última modificação: 2025-05-14 15:14:54
cópia: 0 Cliques: 330
2
focar em
319
Seguidores

Estratégia de adição de posição dinâmica de envelope de preço progressivo inteligente Estratégia de adição de posição dinâmica de envelope de preço progressivo inteligente

Visão geral

A estratégia de acréscimo dinâmico de linha de retalho de preço progressivo inteligente é uma estratégia de negociação de linha longa baseada na banda de retalho de média móvel, que compra quando o preço cai abaixo da banda de retalho e controla o risco de acréscimo de forma progressiva. A estratégia suporta até oito compras, com um período de arrefecimento entre as compras e um stop loss definido de acordo com o preço de entrada médio ou um stop loss definido de acordo com o controle de risco. A estratégia limita o alcance das negociações aos 365 dias mais recentes quando retalhada, para fornecer resultados de retalho mais controláveis.

A idéia central da estratégia é comprar quando o preço retorna para a baixa da banda de correlação da média móvel, o que geralmente representa uma área de sobrevenda de curto prazo, e depois lucrar quando o preço retorna para a alta, ao mesmo tempo em que configura um stop loss razoável para controlar o risco. A estratégia aproveita ao máximo a natureza de flutuação dos preços, reduzindo o custo médio por meio de compras em lotes múltiplos e é adequada para uso em ambientes de mercado de alta volatilidade.

Princípio da estratégia

A estratégia baseia-se nos seguintes componentes:

  1. Cálculo da banda de enlace da média móvel:

    • Primeiro, calcule a linha de referência (SMA ou EMA, opcional)
    • Faixa de encapsulamento superior = linha de referência * (1 + % de desvio)
    • Faixa de rede de subcontratação = linha de referência * (1 - desvio percentual)
  2. Condições de entrada:

    • Preço inferior ao da banda de baixo custo
    • O tempo de arrefecimento foi estabelecido desde a última compra.
    • O número de compras atuais não excede o limite máximo de 8 compras
    • Preços abaixo do preço médio de entrada (ou em alta)
    • Preço inferior ao da última compra
  3. Condições de partida:

    • Aumento dos preços acima da percentagem de paragem definida para o preço médio de entrada
    • Ou o preço caiu abaixo da percentagem de stop loss estabelecida para o preço médio de entrada
  4. Gestão de posições:

    • O preço médio de entrada é registrado e atualizado a cada compra
    • A partir de agora, os investidores poderão fazer até oito compras para criar uma posição escalonada.
    • Após a ação de stop-loss ou stop loss, todas as posições são liquidadas de uma só vez.
  5. Julgar tendências:

    • Julgar a tendência geral pela direção da linha de referência (a linha de referência ascendente é uma tendência ascendente)
    • Em um cenário de alta, a estratégia liberaliza algumas condições de compra

Vantagens estratégicas

  1. Controle de risco progressivo: A estratégia usa um método de aumento gradual da posição, em vez de comprar todas as posições de uma vez, e efetivamente dispersa o risco de entrada. Com um máximo de 8 oportunidades de aumento de posição, reduz o custo médio em uma tendência descendente, aumentando a probabilidade de lucro final.

  2. Mecanismos automatizados de entrada e saída: A estratégia baseia-se em indicadores técnicos claros, como uma média móvel em banda, para determinar automaticamente os pontos de entrada e saída, reduzindo a tomada de decisões de negociação emocionalmente influenciadas por julgamentos subjetivos.

  3. Ajustes flexíveis de parâmetros: A estratégia oferece uma grande variedade de parâmetros ajustáveis, incluindo comprimento de linha de enlace, porcentagem de desvio, stop loss ratio e período de resfriamento de compra, que podem ser otimizados para diferentes condições de mercado.

  4. Percepção de tendências: A estratégia identifica as tendências através da determinação da direção da linha de referência, e a flexibilidade e adaptabilidade da estratégia são aumentadas com a flexibilidade e adaptabilidade apropriadas de compra em tendências ascendentes.

  5. Aproveitamento da volatilidade: Especialmente adequado para aplicações em mercados de alta volatilidade, é capaz de aproveitar efetivamente as flutuações de preços para aumentar a posição e lucrar, quanto maior a flutuação, maior o retorno potencial da estratégia.

Risco estratégico

  1. Risco de reversão de tendência: Em uma forte tendência de queda, os preços podem continuar a cair abaixo da faixa de cobertura, resultando em perdas após vários acréscimos. Embora um mecanismo de parada de perdas tenha sido configurado, em situações extremas, pode desencadear grandes perdas.

  2. Sensibilidade do parâmetro: O desempenho da estratégia é altamente dependente da configuração de parâmetros, e diferentes ambientes de mercado podem exigir diferentes combinações de parâmetros. A configuração errada de parâmetros pode levar a excesso de negociação ou a oportunidades de negociação perdidas.

  3. Necessidades financeiras: Como a estratégia permite até oito compras, se o mercado continuar a cair, é necessário ter fundos suficientes para suportar várias adições, o que pode ser além da capacidade de uma conta de pequeno capital.

  4. Risco de configuração do período de arrefecimento: A configuração inadequada do período de refrigeração pode levar a perder oportunidades importantes de compra, ou a acumular estoques prematuramente em momentos inadequados.

  5. Configuração de risco de suspensão: Se a porcentagem de parada for muito alta, você pode perder uma oportunidade de lucro; Se for muito baixa, você pode limitar o espaço de potencial lucro.

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

  1. Ajuste de parâmetros de banda de rede de pacotes dinâmicos: Pode-se considerar a percentagem de desvio da banda de cobertura para ajustar automaticamente de acordo com a volatilidade do mercado, usando um desvio menor em mercados de baixa volatilidade e um desvio maior em mercados de alta volatilidade. Assim, pode-se adaptar melhor a diferentes condições de mercado.

  2. Adição de filtros de tendências mais complexos: A estratégia atual usa uma linha de referência simples para determinar a direção da tendência. Pode-se considerar a adição de indicadores de tendência mais complexos (como MACD, ADX, etc.) para aumentar a precisão da determinação da tendência e evitar compras prematuras em uma forte tendência de queda.

  3. Mecanismo de parada dinâmico: Pode-se substituir o stop loss por um mecanismo de ajuste dinâmico baseado na volatilidade do mercado, como o nível de stop loss baseado no ATR (Average True Range).

  4. Otimização da gestão de fundos: Pode-se realizar uma distribuição de posições dinâmica, em vez de um montante fixo para cada compra. Por exemplo, pode-se usar uma menor proporção de fundos na primeira compra e aumentar gradualmente o montante da compra à medida que o preço continua a cair.

  5. Aumentar o filtro de tempo: Considere a inclusão de filtros baseados no tempo, evitando negociar em momentos de baixa atividade do mercado ou identificando os momentos de negociação mais favoráveis com base em estatísticas históricas.

Resumir

A estratégia de levantamento dinâmico de ativos da rede de preços progressivos inteligentes é uma estratégia de negociação sistemática que combina análise técnica e gerenciamento de risco. A estratégia identifica oportunidades de compra potenciais por meio da rede de pacotes de médias móveis, usa o levantamento de ativos progressivos para reduzir o custo médio e define regras claras de controle de risco de stop-loss.

A estratégia é especialmente adequada para aplicações em mercados altamente voláteis, sendo capaz de aproveitar efetivamente as flutuações de preços para criar oportunidades de lucro. Ao mesmo tempo, há muito espaço para melhorias na estratégia por meio da otimização de parâmetros e da adição de filtros adicionais. No entanto, os usuários precisam estar atentos aos riscos da estratégia, especialmente ao risco de perdas contínuas que podem ser enfrentadas em fortes tendências de queda, garantindo que haja fundos suficientes para apoiar várias adições de posição e ajustar a configuração de parâmetros de acordo com diferentes condições de mercado.

Em geral, a estratégia oferece uma estrutura de negociação sistematizada, combinando elementos de acompanhamento de tendências e negociação contracorrente, reduzindo a tomada de decisões emocionais por meio de regras claras e ajudando a cultivar hábitos de negociação disciplinados. Esta é uma opção de estratégia a considerar para os comerciantes que buscam obter retornos estáveis em mercados voláteis.

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

//@version=6
strategy("SmartScale Envelope DCA", 
     overlay=true, 
     pyramiding=8, 
     default_qty_type=strategy.cash, 
     default_qty_value=25,         // Order size = $25 CAD
     initial_capital=200,          // Initial capital = $200 CAD
     currency=currency.CAD)        // Base currency = CAD

// === Inputs
len                = input.int(13, title="Envelope Length", minval=1)
percent            = input.float(6.6, title="Envelope % Offset", step=0.1) / 100
src                = input(close, title="Source")
exponential        = input(false)
stopLossPctInput   = input.float(15.0, title="Stop Loss %", minval=0.1, step=0.1)
takeProfitPctInput = input.float(5.0, title="Take Profit % from Avg Entry", minval=0.1, step=0.1)
cooldown           = input.int(7, title="Candles Between Buys")  // moved to bottom

stopLossPct    = stopLossPctInput / 100
takeProfitPct  = takeProfitPctInput / 100
maxBuys        = 8  // Hardcoded max buy-ins

// === Envelope Calculation
basis = exponential ? ta.ema(src, len) : ta.sma(src, len)
upper = basis * (1 + percent)
lower = basis * (1 - percent)

// === Limit Backtest to Last 365 Days
startDate   = timestamp("GMT-5", year(timenow), month(timenow), dayofmonth(timenow)) - 365 * 24 * 60 * 60 * 1000
inDateRange = time >= startDate

// === State Tracking
var float avgEntryPrice = na
var float lastBuyPrice  = na
var int buyCount        = 0
var int lastBuyBar      = na

// === Trend Detection
isUptrend = basis > basis[1]

// === Entry Conditions
lowBelowLower     = low < lower
cooldownPassed    = na(lastBuyBar) or (bar_index - lastBuyBar >= cooldown)
belowAvgEntry     = na(avgEntryPrice) or close < avgEntryPrice
lowerThanLastBuy  = na(lastBuyPrice) or close < lastBuyPrice
allowBuyIn        = (belowAvgEntry and lowerThanLastBuy) or isUptrend
highAboveUpper    = high > upper

// === Exit Conditions
sellCondition     = not na(avgEntryPrice) and close >= avgEntryPrice * (1 + takeProfitPct)
stopLossTriggered = not na(avgEntryPrice) and close <= avgEntryPrice * (1 - stopLossPct)

// === Buy Logic
if inDateRange and lowBelowLower and cooldownPassed and buyCount < maxBuys and allowBuyIn and (na(lastBuyPrice) or close <= lastBuyPrice)
    buyCount += 1
    strategy.entry("Buy in " + str.tostring(buyCount), strategy.long)
    lastBuyBar := bar_index
    lastBuyPrice := close
    avgEntryPrice := na(avgEntryPrice) ? close : (avgEntryPrice * (buyCount - 1) + close) / buyCount

// === Sell Logic
if strategy.position_size > 0 and highAboveUpper and sellCondition
    strategy.close_all(comment="Take Profit")
    avgEntryPrice := na
    buyCount := 0
    lastBuyBar := na
    lastBuyPrice := na

// === Stop Loss Logic
if strategy.position_size > 0 and stopLossTriggered
    strategy.close_all(comment="Stop Loss Hit")
    avgEntryPrice := na
    buyCount := 0
    lastBuyBar := na
    lastBuyPrice := na

// === Plot Envelope
plot(basis, "Basis", color=color.orange)
u = plot(upper, "Upper", color=color.blue)
l = plot(lower, "Lower", color=color.blue)
fill(u, l, color=color.rgb(33, 150, 243, 95), title="Envelope Background")

// === Plot Avg Entry Price
plot(strategy.position_size > 0 and not na(avgEntryPrice) ? avgEntryPrice : na, 
     title="Avg Entry Price", 
     color=color.rgb(173, 195, 226), 
     linewidth=2, 
     style=plot.style_line)