Estratégia de negociação quantitativa baseada na média móvel


Data de criação: 2024-01-26 16:29:23 última modificação: 2024-01-26 16:29:23
cópia: 0 Cliques: 555
1
focar em
1617
Seguidores

Estratégia de negociação quantitativa baseada na média móvel

Visão geral

A estratégia de cruzamento de médias móveis é uma estratégia de negociação quantitativa baseada em médias móveis. A estratégia é lucrativa, gerando sinais de negociação com a utilização de cruzamento de médias móveis de preços, calculando o preço médio de um título por um período de tempo.

Princípio da estratégia

A estratégia utiliza principalmente o cruzamento de médias móveis rápidas e médias móveis lentas para determinar a tendência dos preços e gerar sinais de negociação. Concretamente, é a utilização de médias móveis de dois períodos diferentes, como a linha de 10 dias e a linha de 20 dias.

Quando a média móvel rápida quebra a média móvel lenta a partir da direção de baixo, considere que o mercado se move de baixo para cima, gerando um sinal de compra. Quando a média móvel rápida cai da direção de cima para baixo e quebra a média móvel lenta, considere que o mercado se move de cima para baixo, gerando um sinal de venda.

Ao capturar os pontos de inflexão da tendência de preços, a estratégia permite comprar quando as coisas estão melhores e vender quando as coisas estão piores, gerando lucro.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. Conceitos simples, fáceis de entender e de implementar
  2. Parâmetros personalizáveis, como a periodicidade das médias móveis
  3. Melhor retrospectiva, especialmente adequada para situações de tendência
  4. Integração de um Stop Loss Logic para controlar o risco

Análise de Riscos

A estratégia também apresenta os seguintes riscos:

  1. A tendência é para sinais errados e transações excessivas na liquidação.
  2. Parâmetros precisam de debug, diferentes combinações de parâmetros têm um efeito de retroalimentação muito diferente
  3. O resultado pode ser mais fraco do que o esperado sem levar em conta os custos de transação e os pontos de deslizamento
  4. O atraso no tempo pode perder a oportunidade de uma rápida reversão dos preços

Os riscos podem ser mitigados com a optimização adequada.

Direção de otimização

A estratégia pode ser otimizada em várias direções:

  1. Combinação de outros indicadores de filtragem, como indicadores de energia, indicadores de vibração, etc., para evitar erros de negociação em compilação
  2. Adição de uma média móvel adaptável para permitir a mudança dinâmica dos parâmetros periódicos e melhor acompanhamento dos preços
  3. Optimizar os parâmetros periódicos das médias móveis para encontrar a melhor combinação de parâmetros
  4. Defina condições de reentrada para evitar transações frequentes
  5. Considere os custos e os pontos de deslizamento reais da transação e ajuste o ponto de parada

A otimização acima pode aumentar significativamente a eficácia da estratégia no disco.

Resumir

A estratégia de cruzamento de média móvel é, em geral, uma estratégia de negociação quantitativa que é fácil de dominar e implementar. Utiliza o princípio de cruzamento da média de preços para avaliar de forma simples e intuitiva o movimento do mercado e gerar sinais de negociação.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © HPotter
//  Simple SMA strategy
//
// WARNING:
//      - For purpose educate only
//      - This script to change bars colors
//@version=4
strategy(title="Simple SMA Strategy Backtest", shorttitle="SMA Backtest", precision=6, overlay=true)
Resolution = input(title="Resolution", type=input.resolution, defval="D")
Source = input(title="Source", type=input.source, defval=close)
xSeries = security(syminfo.tickerid, Resolution, Source)
Length = input(title="Length", type=input.integer, defval=14, minval=2)
TriggerPrice = input(title="Trigger Price", type=input.source, defval=close)
TakeProfit = input(50, title="Take Profit", step=0.01)
StopLoss = input(20, title="Stop Loss", step=0.01)
UseTPSL = input(title="Use Take\Stop", type=input.bool, defval=false)
BarColors = input(title="Painting bars", type=input.bool, defval=true)
ShowLine = input(title="Show Line", type=input.bool, defval=true)
UseAlerts = input(title="Use Alerts", type=input.bool, defval=false)
reverse = input(title="Trade Reverse", type=input.bool, defval=false)
pos = 0
xSMA = sma(xSeries, Length)
pos := iff(TriggerPrice > xSMA, 1,
         iff(TriggerPrice < xSMA, -1, nz(pos[1], 0)))
nRes = ShowLine ? xSMA : na
alertcondition(UseAlerts == true and pos != pos[1] and pos == 1, title='Signal Buy', message='Strategy to change to BUY')
alertcondition(UseAlerts == true and pos != pos[1] and pos == -1, title='Signal Sell', message='Strategy to change to SELL')
alertcondition(UseAlerts == true and pos != pos[1] and pos == 0, title='FLAT', message='Strategy get out from position')
possig =iff(pos[1] != pos,
         iff(reverse and pos == 1, -1,
           iff(reverse and pos == -1, 1, pos)), 0)
if (possig == 1)
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)
    
if (UseTPSL)    
    strategy.close("Long", when = high > strategy.position_avg_price + TakeProfit, comment = "close buy take profit")
    strategy.close("Long", when = low < strategy.position_avg_price - StopLoss, comment = "close buy stop loss")
    strategy.close("Short", when = low < strategy.position_avg_price - TakeProfit, comment = "close buy take profit")
    strategy.close("Short", when = high > strategy.position_avg_price + StopLoss, comment = "close buy stop loss")
nColor = BarColors ? strategy.position_avg_price != 0  and pos == 1 ? color.green :strategy.position_avg_price != 0 and pos == -1 ? color.red : color.blue : na
barcolor(nColor)
plot(nRes, title='SMA', color=#00ffaa, linewidth=2, style=plot.style_line)