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

Autora:ChaoZhang, Data: 2023-11-14 16:17:16
Tags:

img

Resumo

Esta estratégia gera sinais de compra e venda baseados em cruz de ouro e cruz de morte de múltiplas médias móveis simples (SMAs) com diferentes períodos de tempo para determinar a direção da tendência. Ele usa 4 SMAs - 20 dias, 50 dias, 100 dias e 200 dias SMA. Quando o SMA de curto prazo cruza acima do SMA de longo prazo, ele é considerado um cruz de ouro e um sinal de compra é acionado. Quando o SMA de curto prazo cruza abaixo do SMA de longo prazo, ele é considerado um cruz de morte e um sinal de venda é acionado.

Estratégia lógica

A lógica central desta estratégia baseia-se nos seguintes pontos:

  1. Calcular múltiplas SMA com diferentes períodos de tempo, incluindo SMA de 20 dias, 50 dias, 100 dias e 200 dias.

  2. Verificar as situações de cruzamento entre as SMA de curto prazo (20 dias) e as SMA de longo prazo (50 dias, 100 dias, 200 dias).

  3. Quando a SMA de 20 dias cruza acima da SMA de 50 dias, ela é considerada uma cruz de ouro e um sinal de compra é acionado.

  4. A tendência maior é determinada pelas SMAs de período mais longo que permanecem acima das SMAs de período mais curto, ou seja, SMAs de 50 dias > SMAs de 20 dias.

  5. A prioridade para os sinais de entrada é: SMA de 20 dias contra SMA de 50 dias > SMA de 20 dias contra SMA de 100 dias > SMA de 20 dias contra SMA de 200 dias.

  6. O sinal de saída é gerado quando a SMA de 20 dias cruza novamente abaixo da SMA de 50 dias.

A estratégia baseia-se principalmente em crossovers de SMA para determinar a direção da tendência. Cruzes de ouro em mercados de touros e cruzes de morte em mercados de ursos podem sinalizar o início de uma tendência potencial.

Vantagens da estratégia

As principais vantagens desta estratégia incluem:

  1. A lógica é simples e fácil de entender e implementar.

  2. As SMAs são melhores do que as EMAs na filtragem do ruído do mercado e na identificação da tendência.

  3. O uso de SMAs de vários períodos de tempo melhora a confiabilidade do sinal.

  4. A definição da prioridade dos sinais de entrada evita a entrada prematura.

  5. Períodos e cores de SMA personalizáveis permitem a otimização da estratégia.

  6. Aplicável a vários prazos para diferentes estilos de negociação.

  7. O sistema de cruzamento do SMA é muito eficaz na determinação da direção da tendência principal.

Riscos da Estratégia

Alguns riscos associados a esta estratégia:

  1. Podem ocorrer demasiados sinais falsos durante os mercados variáveis com cruzes frequentes da SMA.

  2. Os períodos de SMA fixos não podem adaptar-se às alterações do mercado, os parâmetros devem ser otimizados com base na tendência e na volatilidade.

  3. Os cruzes da SMA por si só não podem determinar a entrada precisa, outros indicadores como o MACD devem ser incorporados.

  4. As SMAs têm uma natureza de atraso, o tempo de entrada precisa de otimização ou devem ser utilizadas ordens de limite.

  5. A aplicação rigorosa de um "stop loss" é crucial para a preservação do capital.

  6. Deverá ser considerado o impacto dos custos de negociação na rendibilidade.

Reforço da Estratégia

Algumas maneiras de otimizar esta estratégia:

  1. Otimizar os períodos de SMA de forma dinâmica com base nas condições de mercado e no ATR.

  2. Adicione outros indicadores como MACD, RSI para o tempo de entrada.

  3. Adicionar um filtro de tendência como o ADX para evitar falsos sinais durante a consolidação.

  4. Otimizar os métodos de stop loss como ATR stop ou trailing stop.

  5. Gerenciar o dimensionamento das posições de forma dinâmica com base no tamanho da conta.

  6. Teste os parâmetros ideais em diferentes classes de ativos.

  7. Incorporar vários prazos para garantir a consistência com a tendência de prazos mais longos.

Conclusão

Em resumo, este simples sistema de crossover SMA é confiável na determinação da direção da tendência e adequado para a maioria dos traders. No entanto, ele tem alguns problemas de atraso e pode gerar sinais falsos. Devemos procurar melhorar o tempo de entrada, stop loss, dimensionamento de posição etc. para torná-lo robusto em ambientes de mercado em mudança. A combinação de vários indicadores técnicos e avaliação de tendência é fundamental para construir uma estratégia de tendência sólida.


/*backtest
start: 2023-10-14 00:00:00
end: 2023-11-13 00:00:00
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/
// © xyzdesign1989
//@version=5
strategy("SMA crossover buy/sell [SCSM_Algo]", overlay=true, margin_long=3000, margin_short=3000)


BuyCond = ta.crossover(ta.sma(close, 20), ta.sma(close, 50)) and ta.sma(close, 20) > ta.sma(close, 50) and  ta.sma(close, 50) > ta.sma(close, 100) and  ta.sma(close, 100) > ta.sma(close, 200) or (ta.crossover(ta.sma(close, 20), ta.sma(close, 100)) and ta.sma(close, 20) > ta.sma(close, 50))
if (BuyCond)
    strategy.entry("SCSM 🤲 Buy", strategy.long)

SellCond = ta.crossunder(ta.sma(close, 20), ta.sma(close, 50))
if (SellCond)
    strategy.entry("الحمد للہ،Sell", strategy.short)

ma(source, length, type) =>
    type == "SMA" ? ta.sma(source, length) :
     type == "EMA" ? ta.ema(source, length) :
     type == "SMMA (RMA)" ? ta.rma(source, length) :
     type == "WMA" ? ta.wma(source, length) :
     type == "VWMA" ? ta.vwma(source, length) :
     na

show_ma1   = input(true   , "MA №1", inline="MA #1")
ma1_type   = input.string("SMA"  , ""     , inline="MA #1", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
ma1_source = input(close  , ""     , inline="MA #1")
ma1_length = input.int(20     , ""     , inline="MA #1", minval=1)
ma1_color  = input(#0929f6, ""     , inline="MA #1")
ma1 = ma(ma1_source, ma1_length, ma1_type)
plot(show_ma1 ? ma1 : na, color = ma1_color, title="MA №1")

show_ma2   = input(true   , "MA №2", inline="MA #2")
ma2_type   = input.string("SMA"  , ""     , inline="MA #2", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
ma2_source = input(close  , ""     , inline="MA #2")
ma2_length = input.int(50     , ""     , inline="MA #2", minval=1)
ma2_color  = input(#00fb04, ""     , inline="MA #2")
ma2 = ma(ma2_source, ma2_length, ma2_type)
plot(show_ma2 ? ma2 : na, color = ma2_color, title="MA №2")

show_ma3   = input(true   , "MA №3", inline="MA #3")
ma3_type   = input.string("SMA"  , ""     , inline="MA #3", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
ma3_source = input(close  , ""     , inline="MA #3")
ma3_length = input.int(100    , ""     , inline="MA #3", minval=1)
ma3_color  = input(#131313, ""     , inline="MA #3")
ma3 = ma(ma3_source, ma3_length, ma3_type)
plot(show_ma3 ? ma3 : na, color = ma3_color, title="MA №3")

show_ma4   = input(true   , "MA №4", inline="MA #4")
ma4_type   = input.string("SMA"  , ""     , inline="MA #4", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
ma4_source = input(close  , ""     , inline="MA #4")
ma4_length = input.int(200    , ""     , inline="MA #4", minval=1)
ma4_color  = input(#f60c0c, ""     , inline="MA #4")
ma4 = ma(ma4_source, ma4_length, ma4_type)
plot(show_ma4 ? ma4 : na, color = ma4_color, title="MA №4")

Mais.