Estratégia de cruzamento da média móvel da SMA

Autora:ChaoZhang, Data: 2024-03-28 17:50:00
Tags:

img

Resumo

Esta estratégia é uma estratégia simples de cruzamento de média móvel SMA. Ela usa duas médias móveis simples (SMAs) com comprimentos diferentes. Quando o MA rápido cruza acima do MA lento, entra em uma posição longa. Quando o MA rápido cruza abaixo do MA lento, fecha a posição longa. Os comprimentos dos dois MAs podem ser personalizados, bem como as datas de início e fim para backtesting.

A ideia principal desta estratégia é utilizar as características de tendência das médias móveis e as características de sinal dos cruzados de MA para negociação. Quando o MA rápido está acima do MA lento, ele indica uma tendência ascendente e uma posição longa deve ser realizada. Quando o MA rápido está abaixo do MA lento, ele indica uma tendência descendente e nenhuma posição deve ser realizada.

Princípio da estratégia

  1. Calcule dois SMAs com comprimentos diferentes, que podem ser personalizados.
  2. Verifique se a hora atual está dentro da janela de backtesting.
  3. Se o MA rápido cruzar o MA lento, introduzir uma posição longa.
  4. Se a MA rápida cruzar abaixo da MA lenta, fechar todas as posições longas.
  5. Em outros casos, fique no chão e não faça nada.

Análise das vantagens

  1. Simples e fáceis de entender, com lógica clara, adequada para iniciantes a aprender e a usar.
  2. A média móvel é um indicador técnico amplamente utilizado, com características de tendência óbvias, que podem refletir bem a tendência actual do mercado.
  3. O cruzamento MA é um sinal clássico de tendência que pode capturar rapidamente as mudanças nas tendências.
  4. Os comprimentos dos MAs e a janela de backtesting podem ser personalizados, proporcionando uma boa flexibilidade.
  5. Adequado para instrumentos e prazos com fortes características de tendência.

Análise de riscos

  1. Quando o mercado flutua muito e a tendência reverte-se frequentemente, pode haver sinais cruzados frequentes, resultando em negociações excessivas e custos de transação aumentados.
  2. Esta estratégia só pode capturar tendências ascendentes e é impotente em mercados de gama e tendências descendentes.
  3. A selecção dos parâmetros MA deve ser otimizada para diferentes instrumentos e prazos, podendo diferentes parâmetros ter grandes diferenças de desempenho.
  4. Esta estratégia não contém medidas de stop-loss e pode enfrentar riscos de retirada maiores quando o mercado flutua drasticamente.

Orientações de otimização

  1. Considerar a adição de medidas de stop-loss adequadas, tais como o trailing stop baseado em ATR, para controlar a perda máxima de uma única transação.
  2. Considere adicionar algumas condições de filtragem, como volume de negociação e volatilidade, para filtrar alguns sinais falsos.
  3. Considere a otimização de parâmetros, como o uso de algoritmos genéticos ou outros algoritmos inteligentes para encontrar a combinação ideal de parâmetros.
  4. Considerar a combinação de outros indicadores técnicos ou sinais de negociação com o cruzamento MA, como o MACD e o RSI, para melhorar a fiabilidade e a eficácia da estratégia.

Conclusão

A estratégia de cruzamento da média móvel SMA é uma estratégia simples, fácil de entender, clássica e prática de seguir tendências que é adequada para iniciantes aprenderem e usarem. Utiliza as características de tendência das médias móveis e as características de sinal dos cruzamento da MA para capturar rapidamente mudanças nas tendências do mercado. No entanto, esta estratégia também tem algumas limitações e riscos, como atraso, negociação frequente e falta de stop-loss. Portanto, em aplicações práticas, ela precisa ser adequadamente otimizada e melhorada de acordo com condições específicas para aumentar a estabilidade e lucratividade da estratégia.


/*backtest
start: 2023-03-22 00:00:00
end: 2024-03-27 00:00:00
period: 1d
basePeriod: 1h
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/
// © j0secyn

//@version=5
strategy("MA Cross", overlay=true, margin_long=100, margin_short=100, default_qty_value=100, default_qty_type=strategy.percent_of_equity, initial_capital=10000)

// === INPUT BACKTEST RANGE ===
fromDay   = input.int(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input.int(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear  = input.int(defval = 2018,title = "From Year", minval = 1970)
thruDay   = input.int(defval = 30, title = "Thru Day", minval = 1, maxval = 31)
thruMonth = input.int(defval = 9, title = "Thru Month", minval = 1, maxval = 12)
thruYear  = input.int(defval = 2024, title = "Thru Year", minval = 1970)

slow_ma_length = input.int(defval = 100, title = "Slow MA lenght")
fast_ma_length = input.int(defval = 30, title = "Fast MA lenght")

// === FUNCTION EXAMPLE ===
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)            // backtest start  window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)            // backtest finish window
window()  => true

// === LOGIC ===
crossOv = ta.crossover(ta.sma(close, fast_ma_length), ta.sma(close, slow_ma_length))
crossUn = ta.crossunder(ta.sma(close, fast_ma_length), ta.sma(close, slow_ma_length))

// === EXECUTION ===
// strategy.entry("L", strategy.long, when = window() and crossOv)        // enter long when "within window of time" AND crossover
// strategy.close("L", when = window() and crossUn)                       // exits long when "within window of time" AND crossunder         
strategy.entry("L", strategy.long, when = window() and crossOv)        // enter long when "within window of time" AND crossover
strategy.close("L", when = window() and crossUn)                       // exits long when "within window of time" AND crossunder         

Mais.