Estratégia de cruzamento de SMA dupla

Autora:ChaoZhang, Data: 2023-11-23 16:42:58
Tags:

img

Resumo

A estratégia Dual SMA Crossover gera sinais de negociação calculando o cruzamento de duas linhas SMA com configurações de parâmetros diferentes. Quando a linha SMA mais rápida cruza acima da linha SMA mais lenta, um sinal de compra é gerado. Quando a linha SMA mais lenta cruza abaixo da linha SMA mais rápida, um sinal de venda é gerado. A estratégia usa dois conjuntos de parâmetros SMA ao mesmo tempo, um conjunto para determinar pontos de entrada e o outro para determinar pontos de saída.

Estratégia lógica

Esta estratégia utiliza dois conjuntos de parâmetros SMA,smaB1, smaB2para sinais de compra, esmaS1, smaS2Para os sinais de venda, que representam médias móveis mais lentas e mais rápidas, respectivamente.smaB1cruzadas acimasmaB2, é gerado um sinal de compra.smaS2cruzes abaixosmaS1, é gerado um sinal de venda, o que permite um ajustamento flexível das condições de entrada e saída para se adaptarem aos ambientes de mercado em evolução.

Especificamente, esta estratégia monitora as situações de cruzamento entre as duas linhas SMA calculadas a partir do preço de fechamento para determinar o momento da compra e venda. Quando a linha SMA mais rápida cruza acima da linha SMA mais lenta, julga-se que a tendência de preço é ascendente, então vá longo neste momento. E quando a linha SMA mais lenta cruza abaixo da linha SMA mais rápida, a tendência de preço vira para baixo, então saia de posições longas.

Análise das vantagens

As principais vantagens desta estratégia são:

  1. A utilização de um sistema duplo de cruzamento de médias móveis permite ajustar de forma flexível os critérios de entrada e saída para se adaptarem às alterações do mercado
  2. As próprias linhas SMA podem filtrar algum ruído e gerar sinais comerciais mais confiáveis
  3. As combinações de parâmetros SMA personalizáveis permitem a otimização de parâmetros para diferentes produtos

Análise de riscos

Há também alguns riscos associados a esta estratégia:

  1. Os sinais de cruzamento da SMA podem estar atrasados e não gerar sinais oportunos em torno dos pontos de virada
  2. A selecção inadequada dos parâmetros da SMA pode levar a um número excessivo de sinais falsos
  3. Os sinais gerados em condições de mercado voláteis podem não funcionar bem

Para controlar os riscos acima, métodos como otimização do parâmetro SMA, stop loss dinâmico para bloquear os lucros, etc., podem ser utilizados para melhorar a estratégia.

Orientações de otimização

Algumas orientações de otimização para esta estratégia:

  1. Teste mais combinações de parâmetros SMA para encontrar os parâmetros ideais
  2. Adicionar confirmação de volume para evitar sinais errados durante violentas flutuações de preços
  3. Combinar outros indicadores (por exemplo, MACD, RSI) para filtrar os sinais de cruzamento da SMA
  4. Adicionar estratégias de stop loss para bloquear lucros e reduzir perdas

Resumo

A estratégia SMA Crossover gera sinais comerciais simples e eficazes através do cálculo das situações de cruzamento entre duas linhas SMA. A flexibilidade para ajustar parâmetros torna esta estratégia adaptável a diferentes produtos, e é uma estratégia de tendência comummente usada.


/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-22 00:00:00
period: 5m
basePeriod: 1m
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/
// © melihtuna

//@version=4
strategy("SMA Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=10000, currency=currency.USD, commission_value=0.1, commission_type=strategy.commission.percent)

smaB1 = input(title="smaB1",defval=377)
smaB2 = input(title="smaB2",defval=200)
smaS1 = input(title="smaS1",defval=377)
smaS2 = input(title="smaS2",defval=200)
smawidth = 2

plot(sma(close, smaB1), color = #EFB819, linewidth=smawidth, title='smaB1')
plot(sma(close, smaB2), color = #FF23FD, linewidth=smawidth, title='smaB2')
plot(sma(close, smaS1), color = #000000, linewidth=smawidth, title='smaS1')
plot(sma(close, smaS2), color = #c48dba, linewidth=smawidth, title='smaS2')

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

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        
window()  => time >= start and time <= finish ? true : false 

longCondition = crossover(sma(close, smaB1),sma(close, smaB2))

if (window() and longCondition)
    strategy.entry("BUY", strategy.long)

shortCondition = crossover(sma(close, smaS2),sma(close, smaS1))

if (window() and shortCondition)
    strategy.entry("SELL", strategy.short)
    
    
    

Mais.