Estratégia de cruzamento de média móvel dupla

Autora:ChaoZhang, Data: 2023-11-22 16:10:21
Tags:

img

Resumo

Esta é uma estratégia de negociação quantitativa simples baseada em indicadores de média móvel. Ele usa a cruz de ouro e cruz de morte de médias móveis rápidas e lentas para determinar sinais de entrada e saída. Quando o MA rápido cruza acima do MA lento de baixo, um sinal de compra é gerado. Quando o MA rápido cruza abaixo do MA lento de cima, um sinal de venda é gerado.

Estratégia lógica

A estratégia utiliza principalmente a capacidade de rastreamento de tendências das médias móveis. O MA rápido tem um parâmetro menor e pode responder rapidamente às mudanças de preço, enquanto o MA lento tem um parâmetro maior e representa a tendência de longo prazo. O cruzamento rápido do MA acima do MA lento sinaliza uma reversão nos movimentos de curto prazo e o início de uma tendência de alta. O cruzamento rápido do MA abaixo do MA lento sinaliza uma reversão para uma tendência de queda. Ao capturar esses sinais, podemos negociar junto com o impulso.

Especificamente, esta estratégia define uma média móvel dupla de 5 dias (rápida) e 34 dias (lenta). Ele calcula esses dois MA diariamente e verifica se o MA rápido cruza acima ou abaixo do MA lento. Se uma cruz de ouro acontecer, ele vai longo. Se uma cruz de morte acontecer, ele sai das posições.

Análise das vantagens

Esta é uma estratégia simples e fácil de entender, adequada para iniciantes em quant trading.

A estratégia de MA dupla pode filtrar o ruído do mercado de forma eficaz e capturar a tendência principal.

Quando os preços começam a inverter a direção e a cruz de morte do MA acontece, ele sairá de posições em tempo hábil para controlar os riscos.

Análise de riscos

A estratégia de MA dupla apresenta riscos como falhas de stop loss ou falhas de ajustamento da curva.

  1. Os MAs têm efeitos de atraso e podem gerar sinais apenas depois que a tendência já se inverteu.

  2. Em mercados variados, pode haver muitos sinais falsos, causando negociações desnecessárias, aumento de custos e deslizamento.

  3. A análise de mercado baseia-se exclusivamente em indicadores técnicos, sem combinar a análise fundamental.

  4. Não considera o tamanho das posições e a gestão de riscos.

Orientações de otimização

A fim de aproveitar melhor os seus pontos fortes e reduzir os riscos, podem ser realizadas as seguintes otimizações:

  1. Adicione indicadores de tendência como MACD e indicadores de volatilidade como KDJ para definir regras de entrada mais rigorosas e filtrar sinais falsos.

  2. Incorporar mecanismos de stop loss apropriados, como sair depois que os preços caem uma certa porcentagem após a cruz de ouro, ou depois que os preços caem um intervalo definido de novos máximos / mínimos.

  3. Otimizar combinações de dias MA rápidos e lentos para se adaptar às variações de preços em diferentes prazos.

  4. Indicadores de mercado de referência para determinar o regime geral do mercado e evitar a troca excessiva em mercados variados.

  5. Incorporar alterações no volume de negociação para verificar a confiabilidade dos sinais de tendência.

Conclusão

A estratégia de cruzamento de média móvel dupla é uma estratégia de negociação quantitativa muito típica. Tem vantagens como simplicidade, intuitividade e facilidade de implementação. Com testes contínuos e ajuste de parâmetros, pode produzir resultados decentes. No entanto, existem problemas como identificação de sinal atrasado e sinais falsos. Mecanismos adicionais de filtragem e gerenciamento de risco precisam ser incorporados para torná-lo uma estratégia estável de geração de lucro.


/*backtest
start: 2022-11-15 00:00:00
end: 2023-11-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
// This strategy is a modification to the "Bill Williams, Awesome Oscillator
// (AO) Backtest" strategy (Copyright by HPotter v1.0 29/12/2016)
//
// This version of the strategy by Midnight Mouse. 10/4/2018
//
// DESCRIPTION
//
// This indicator plots the oscillator as a column where periods fit for buying
// are marked as green, and periods fit for selling as orange/brown. If the
// current value of AO (Awesome Oscillator) is > the previous, the period is
// deemed fit for buying and the indicator is marked green. If the AO values is
// not over the previous, the period is deemed fit for selling and the indicator 
// is marked orange/brown.
//
// You can change long to short in the Input Settings
//
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////

strategy("Awesome Oscillator.MMouse_Lager_BCE")

// === SETTINGS ===

// Strategy start date
FromMonth   = input(defval = 1,    title = "From Month", minval = 1)
FromDay     = input(defval = 1,    title = "From Day",   minval = 1)
FromYear    = input(defval = 2017, title = "From Year",  minval = 2014)

// Strategy settings
nLengthSlow = input(34, minval=1,  title="Length Slow")
nLengthFast = input(5,  minval=1,  title="Length Fast")
allowShorts = input(false,         title="Include Short Trades")
reverse     = input(false,         title="Trade reverse")


// === BODY ===

// Use Heikin-Ashi candles for the buy/sell signal
ha_t        = heikinashi(syminfo.tickerid)
ha_high     = security(ha_t, timeframe.period, high)
ha_low      = security(ha_t, timeframe.period, low)
length      = input( 14 )
price       = open
vrsi        = rsi(price, length)

// Calc (H+L)/2 for each length
xSMA1_hl2   = sma((ha_high + ha_low)/2, nLengthFast)
xSMA2_hl2   = sma((ha_high + ha_low)/2, nLengthSlow)

// Get SMA difference (Fast - Slow)
xSMA1_SMA2  = xSMA1_hl2 - xSMA2_hl2

// Derive the color of the column
cClr = xSMA1_SMA2 > xSMA1_SMA2[1] ? #93c47d : #ad5e1d

// Determine the position to take (Long vs. Short)
pos = iff(xSMA1_SMA2 > xSMA1_SMA2[1],  1, iff(xSMA1_SMA2 < xSMA1_SMA2[1], -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos))

// Only apply strategy from the start date
if (time >= timestamp(FromYear, FromMonth, FromDay, 00, 00))
    if (possig == 1)
        // Market is currently fit for a Long position
        strategy.entry("Long", strategy.long)

    if (possig == -1)
        // Market is currently fit for a Short position
        if(allowShorts)
            // Shorts are allowed. Record a Short position
            strategy.entry("Short", strategy.short)	   	    
        else
            // Shorts are not allowed. Closec the Long position.
            strategy.close("Long")

// Define the candle colors
//barcolor(possig == -1 ? red : 
//         possig ==  1 ? green : 
//         blue )

// Plot the oscillator
plot(xSMA1_SMA2, style=columns, linewidth=1, color=cClr)

Mais.