Estratégia de negociação quantitativa baseada em média móvel rápida e média móvel lenta


Data de criação: 2024-01-24 14:49:29 última modificação: 2024-01-24 14:49:29
cópia: 0 Cliques: 484
1
focar em
1617
Seguidores

Estratégia de negociação quantitativa baseada em média móvel rápida e média móvel lenta

Visão geral

A estratégia de breakout de média móvel dupla é uma estratégia de negociação quantitativa baseada em média móvel rápida e média móvel lenta. Ela usa a média móvel indexada de dois períodos diferentes como sinal de negociação. Um sinal de compra é gerado quando a média móvel rápida atravessa a média móvel lenta e um sinal de venda é gerado quando a média móvel rápida atravessa a média móvel lenta.

Princípio da estratégia

A lógica central da estratégia é a de usar a média móvel rápida e a média móvel lenta para formar um sinal de negociação. A estratégia define um período de média móvel rápida de 12 dias e um período de média móvel lenta de 26 dias. O método de cálculo é o seguinte:

  1. Calcule a média móvel indexada de uma matriz de preços com um período de 2 dias
  2. Calculação da média móvel rápida baseada na AP Fast, com um período de 12 dias
  3. Calculação da média móvel lenta com base na AP Slow, com um período de 26 dias
  4. Comparação entre média móvel rápida e média móvel lenta:
    1. Quando o Fast usa o Slow, é um sinal de multi-cabeça
    2. Quando o Fast atravessa o Slow, o sinal é para a cabeça vazia.
  5. Os sinais de negociação específicos são avaliados pela relação entre o preço e a média móvel:
    1. Sinais multi-cabeças: Fast>Slow && AP>Fast
    2. Sinal de cabeça vazia: Fast

Uma estratégia típica de dupla média móvel para determinar a tendência do mercado e gerar sinais de negociação através da interseção de uma média móvel rápida e uma média móvel lenta.

Análise de vantagens

A estratégia de ruptura de dupla média móvel tem as seguintes vantagens:

  1. A lógica da estratégia é simples, clara, fácil de entender e de implementar.
  2. Adapta-se a diferentes cenários de mercado, ajustando os ciclos de média móvel
  3. Pode fazer mais curto prazo e obter maiores ganhos
  4. Pode-se combinar o preço com a relação da média móvel para emitir sinais de negociação mais precisos
  5. A linha média móvel possui um certo atraso e pode efetivamente eliminar o ruído do mercado

Análise de Riscos

A estratégia de quebra de dupla média móvel também tem riscos:

  1. Quando o mercado está em um período de turbulência, há mais sinais errados
  2. A estratégia de dupla equidistância móvel é propensa à curva de encaixe e ignora as mudanças estruturais do mercado
  3. Dependendo apenas dos indicadores técnicos, é vulnerável a falsas rupturas e corre o risco de perdas

Solução:

  1. Otimizar a periodicidade da média móvel para que esteja mais em sintonia com o estado atual do mercado
  2. Combinado com outros indicadores, como sinais de confirmação de volume de tráfego, para evitar falsas rupturas
  3. Adotar estratégias de acompanhamento de tendências, controlar a taxa de ganhos e perdas e reduzir os riscos

Direção de otimização

A estratégia de ruptura de dupla linha média móvel pode ser otimizada em:

  1. Encontrar uma combinação mais adequada de ciclos de média móvel para se adaptar às mudanças do mercado
  2. Aumentar o volume de transação e outros indicadores para filtragem de sinais, garantindo a eficácia dos sinais de transação
  3. Combinação de indicadores de estrutura de mercado, identificação de tendências e ajustamento de parâmetros de ciclo de linha média
  4. A utilização de uma média móvel dinâmica permite o ajuste automático do ciclo de acordo com as mudanças do mercado
  5. Combinação de estratégias de stop loss para controlar o risco e proteger o capital

Resumir

A estratégia de ruptura de dupla linha de equilíbrio móvel é uma estratégia de negociação quantitativa simples e prática. Ela possui vantagens como a lógica da estratégia é simples e fácil de implementar, mas há também alguns problemas de adaptabilidade ao mercado. Podemos torná-la um sistema de negociação de lucro estável por meio de otimização de parâmetros, filtragem de sinais e controle de risco.

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

//@version=4
strategy("CDC Action Zone V.2", overlay=true)

// CDC ActionZone V2 29 Sep 2016
// CDC ActionZone is based on a simple 2MA and is most suitable for use with medium volatility market
// 11 Nov 2016 : Ported to Trading View with minor UI enhancement
LSB = input(title="Long/Short", defval="Long only", options=["Long only", "Short only" , "Both"])
src = input(title="Data Array",type=input.source,defval=ohlc4)
prd1=input(title="Short MA period", type=input.integer,defval=12)
prd2=input(title="Long MA period",type=input.integer,defval=26)
AP = ema(src,2)
Fast = ema(AP,prd1)
Slow = ema(AP,prd2)


Bullish = Fast>Slow
Bearish = Fast<Slow

Green = Bullish and AP>Fast
Red = Bearish and AP<Fast
Yellow = Bullish and AP<Fast
Blue = Bearish and AP>Fast

Buy = Bullish and Bearish[1]
Sell = Bearish and Bullish[1]


alertcondition(Buy,"Buy Signal","Buy")
alertcondition(Sell,"Sell Signal","Sell")


//Plot

l1=plot(Fast,"Fast", linewidth=1,color=color.red)
l2=plot(Slow,"Slow", linewidth=2,color=color.blue)
bcolor = Green ? color.lime : Red ? color.red : Yellow ? color.yellow : Blue ? color.blue : na
barcolor(color=bcolor)
fill(l1,l2,bcolor)

// === INPUT BACKTEST RANGE ===
FromYear  = input(defval = 2000, title = "From Year", minval = 1920)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 1921)
ToMonth   = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 31, title = "To Day", minval = 1, maxval = 31)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"


if LSB == "Long only" and Buy and window()
    strategy.entry("L",true)
if LSB == "Long only" and Sell and window()
    strategy.close("L",qty_percent=100,comment="TP Long")
if LSB == "Both" and Buy and window()
    strategy.entry("L",true)
if LSB == "Both" and Sell and window()
    strategy.entry("S",false)
if LSB == "Short only" and Sell and window()
    strategy.entry("S",false)
if LSB == "Short only" and Buy and window()
    strategy.close("S",qty_percent=100,comment="TP Short")