Estratégia de cruzamento da SMA

Autora:ChaoZhang, Data: 2023-11-08 11:36:51
Tags:

img

Resumo

Esta estratégia gera sinais de negociação baseados no cruzamento entre médias rápidas e lentas. Produz sinais de compra quando a média móvel rápida cruza acima da média móvel lenta de baixo. Produz sinais de venda quando a média móvel rápida cruza abaixo da média móvel lenta de cima.

Princípios

Esta estratégia usa a função sma para calcular as médias móveis rápidas e lentas. O fast_SMA é a média móvel rápida com duração do período fast_SMA_input. O slow_SMA é a média móvel lenta com duração do período slow_SMA_input.

A estratégia usa as funções de cruzamento e cruzamento para determinar o cruzamento entre as médias móveis rápidas e lentas. Quando a média móvel rápida cruza acima da média móvel lenta, a variável LONG é verdadeira e um sinal de compra é gerado. Quando a média móvel rápida cruza abaixo da média móvel lenta, a variável SHORT é verdadeira e um sinal de venda é gerado.

Vantagens

Esta estratégia tem as seguintes vantagens:

  1. Princípio simples, fácil de entender e implementar.
  2. Períodos de média móvel personalizáveis, adaptáveis aos diferentes ambientes de mercado.
  3. Filtra algum ruído do mercado e gera sinais comerciais relativamente confiáveis.
  4. Captura tanto o início como os pontos de virada das tendências.

Riscos

Esta estratégia apresenta igualmente os seguintes riscos:

  1. Pode gerar sinais de negociação excessivos se as configurações forem inadequadas, levando ao excesso de negociação.
  2. Pode produzir muitos sinais falsos nos mercados laterais.
  3. Não pode determinar a duração de uma tendência, pode reverter-se prematuramente.

Gestão de riscos:

  1. Defina os parâmetros da média móvel adequados para equilibrar o efeito de filtragem e a sensibilidade.
  2. Adicionar filtros de indicadores de tendência para evitar falsos sinais.
  3. Definir pontos de stop loss para controlar a perda por negociação.

Optimização

Esta estratégia pode ser otimizada a partir dos seguintes aspectos:

  1. Adicionar condições de filtragem sobre o volume ou a volatilidade quando ocorrer a ruptura para evitar falsas rupturas.
  2. Incorporar indicadores de tendência para identificar a direção e a força da tendência.
  3. Adicionar modelos de aprendizagem de máquina para otimizar automaticamente os parâmetros da média móvel.
  4. Combinar com suporte/resistência e Bandas de Bollinger para definir intervalos de negociação e melhorar a precisão de entrada.

Resumo

Esta estratégia gera efetivamente sinais de negociação alavancando as vantagens das médias móveis. Embora existam alguns riscos, eles podem ser melhorados pela otimização de parâmetros, adição de filtros, etc. A estratégia de cruzamento de médias móveis vale a pena mais pesquisa e aplicação.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-13 00:00:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@author Jacques Grobler
//
//                  SIMPLE CROSS OVER BOT
//                  =====================
//
// This is a simple example of how to set up a strategy to go long or short
// If you make any modifications or have any suggestions, let me know
// When using this script, every section marked back testing should be 
// uncommented in order to use for back testing, same goes for using the script portion

///////////////////////////////////////////////////////////////////////////////////////
//// INTRO
//// -----
// BACKTESTING
//@version=4
strategy(title="SimpleCrossOver_Bot_V1_Backtester", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0, commission_type=strategy.commission.percent, commission_value=0.1)

// SIGNALS
//study(title="SimpleCrossOver_Bot_V1_Signals", overlay = true)

///////////////////////////////////////////////////////////////////////////////////////
//// INPUTS
//// ------
// BACKTESTING
dateSart_Year = input(2018, title="Start Year", minval=2000)
dateSart_Month = input(1, title="Start Month", minval=1, maxval=12)
dateSart_Day = input(1, title="Start Day", minval=1, maxval=31)
dateEnd_Year = input(2019, title="End Year", minval=2000)
dateEnd_Month = input(1, title="End Month", minval=1, maxval=12)
dateEnd_Day = input(1, title="End Day", minval=1, maxval=31)

// BACKTESTING AND SIGNALS
fast_SMA_input = input(7, title="SMA Fast")
slow_SMA_input = input(25, title="SMA Slow")

///////////////////////////////////////////////////////////////////////////////////////
//// INDICATORS
//// ----------
fast_SMA = sma(close, fast_SMA_input)
slow_SMA = sma(close, slow_SMA_input)

///////////////////////////////////////////////////////////////////////////////////////
//// STRATEGY
//// --------
LONG = cross(fast_SMA, slow_SMA) and fast_SMA > slow_SMA
stratLONG() => crossover(fast_SMA, slow_SMA)
SHORT = cross(fast_SMA, slow_SMA) and fast_SMA < slow_SMA
stratSHORT() => crossunder(fast_SMA, slow_SMA)

///////////////////////////////////////////////////////////////////////////////////////
//// TRIGGERS
//// --------
// BACKTESTING
testPeriodStart = timestamp(dateSart_Year, dateSart_Month, dateSart_Day, 0, 0)
testPeriodStop = timestamp(dateEnd_Year, dateEnd_Month, dateEnd_Day, 0, 0)
timecondition = true

strategy.entry(id="LONG", long = true, when=timecondition and stratLONG())
strategy.entry(id="SHORT", long = false, when=timecondition and stratSHORT())

// SIGNALS
//alertcondition(LONG, title="LONG")
//alertcondition(SHORT, title="SHORT")

///////////////////////////////////////////////////////////////////////////////////////
//// PLOTS
//// -----
// BACKTESTING AND SIGNALS
plot(fast_SMA, color=green, linewidth=1)
plot(slow_SMA, color=yellow, linewidth=1)
plotshape(LONG, title="LONG", style=shape.triangleup, text="LONG", location=location.belowbar, size=size.small, color=green)
plotshape(SHORT, title="SHORT", style=shape.triangledown, text="SHORT", location=location.abovebar, size=size.small, color=red)

Mais.