Estratégia de negociação de pullback de média móvel dinâmica


Data de criação: 2024-02-27 14:38:45 última modificação: 2024-02-27 14:38:45
cópia: 0 Cliques: 584
1
focar em
1617
Seguidores

Estratégia de negociação de pullback de média móvel dinâmica

Visão geral

Esta estratégia usa um sistema de dupla equilíbrio para procurar oportunidades potenciais de ruptura em ações ou moedas digitais específicas. O princípio básico é comprar ações ou moedas digitais quando a curva de curto prazo rebota abaixo da média de longo prazo.

Princípio da estratégia

A estratégia usa uma média móvel simples (SMA) de dois períodos diferentes como sinal de negociação. O primeiro ciclo SMA é mais longo, representando a direção da tendência geral. O segundo ciclo SMA é mais curto, usado para capturar oscilações de preços de curto prazo.

Quando o SMA curto atravessa o SMA longo da parte inferior, o preço está em uma tendência de alta geral, então a estratégia abre uma posição multi-cabeça. Quando o preço cai e o SMA longo é re-testado, o que indica o fim do pullback curto, quando a estratégia considera o stop loss ou o lucro para encerrar a posição.

Além disso, a estratégia também estabelece condições de sobrevenda e sobrecompra para evitar transações em situações extremas. As posições só serão abertas quando estiverem simultaneamente satisfeitas as condições de dupla linha de equilíbrio e de avaliação razoável.

Vantagens estratégicas

  • Utilizando um sistema de dupla linha, é possível identificar as tendências de curto e médio prazo
  • Combinando os benefícios de acompanhamento de tendências e negociação de retorno
  • A instalação de uma plataforma de venda e compra de criptomoedas reduz as transações desnecessárias.

Análise de Riscos

  • O tempo do fim do retorno é difícil de determinar e pode prejudicar a parada de falha
  • Quando a tendência muda, não é possível parar rapidamente e pode sofrer grandes perdas
  • A configuração inadequada dos parâmetros pode levar a transações excessivamente frequentes ou conservadoras

Otimização de Estratégia

A estratégia ainda tem espaço para ser melhorada:

  1. Utilizando ferramentas mais complexas para determinar os movimentos e tendências de preços, como as bandas de Brin, o indicador KD, etc.
  2. Combinação de mais fatores para determinar o final da reviravolta, como mudanças no volume de transações, volatilidade, etc.
  3. Ajustar dinamicamente a escala da posição para maximizar os lucros
  4. Otimização da lógica de stop loss, usando o KAMA, a nuvem Ichimoku e a barra de tempo mais baixa para determinar o tempo de parada

Resumir

Esta estratégia integra as vantagens de acompanhamento de tendências e negociações de correção, usando um sistema de linha dupla para julgar a ocorrência de oportunidades. Ao mesmo tempo, a construção de certas condições de sobrecompra e sobrevenda evita a abertura de posições desnecessárias. Esta é uma estratégia de negociação quantitativa muito prática, que vale a pena estudar e otimizar.

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

// @version=5
strategy("Profitable Pullback Trading Strategy", overlay=true,initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Inputs
ma_length1 = input.int(280,'MA length 1', step = 10,group = 'Moving Avg. Parameters', inline = 'MA')
ma_length2 = input.int(13,'MA length 2', step = 1,group = 'Moving Avg. Parameters', inline = 'MA')
sl = input.float(title="Stop Loss (%)", defval=0.07, step=0.1, group="Moving Avg. Parameters")
too_deep    = input.float(title="Too Deep (%)", defval=0.27, step=0.01, group="Too Deep and Thin conditions", inline = 'Too')
too_thin    = input.float(title="Too Thin (%)", defval=0.03, step=0.01, group="Too Deep and Thin conditions", inline = 'Too')

// Calculations
ma1 = ta.sma(close,ma_length1)
ma2 = ta.sma(close,ma_length2)
too_deep2   = (ma2/ma1-1) < too_deep
too_thin2   = (ma2/ma1-1) > too_thin

// Entry and close condtions
var float buy_price = 0
buy_condition = (close > ma1) and (close < ma2) and strategy.position_size == 0 and too_deep2 and too_thin2
close_condition1  = (close > ma2) and strategy.position_size > 0 and (close < low[1])
stop_distance = strategy.position_size > 0 ? ((buy_price - close) / close) : na
close_condition2 = strategy.position_size > 0 and stop_distance > sl
stop_price = strategy.position_size > 0 ? buy_price - (buy_price * sl) : na

// Entry and close orders
if buy_condition
    strategy.entry('Long',strategy.long)
if buy_condition[1]
    buy_price := open
if close_condition1 or close_condition2
    strategy.close('Long',comment="Exit" + (close_condition2 ? "SL=true" : ""))
    buy_price := na

plot(ma1,color = color.blue)
plot(ma2,color = color.orange)