Estratégia de crossover SMA


Data de criação: 2023-11-08 11:36:51 última modificação: 2023-11-08 11:36:51
cópia: 1 Cliques: 646
1
focar em
1617
Seguidores

Estratégia de crossover SMA

Visão geral

A estratégia é baseada no princípio de cruzamento entre a média móvel rápida e a média móvel lenta para gerar um sinal de compra. Quando a média móvel rápida atravessa a média móvel lenta de baixo, gera um sinal de compra; quando a média móvel rápida atravessa a média móvel lenta de cima para baixo, gera um sinal de venda.

Princípios

A estratégia usa a função sma para calcular a média móvel rápida e a média móvel lenta. Fast_SMA é a média móvel rápida, com a duração do período fast_SMA_input; slow_SMA é a média móvel lenta, com a duração do período slow_SMA_input.

A estratégia usa a função cross e crossunder para julgar o cruzamento entre a média móvel rápida e a média móvel lenta. Quando a média móvel rápida atravessa a média móvel lenta, a variável LONG é verdadeira, gerando um sinal de compra; Quando a média móvel rápida atravessa a média móvel lenta abaixo, a variável SHORT é verdadeira, gerando um sinal de venda.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. A estratégia é simples, fácil de entender e implementar.
  2. A média móvel pode ser personalizada para diferentes cenários de mercado.
  3. O sistema de filtragem de ruído do mercado produz um sinal de negociação mais confiável.
  4. A partir daí, é possível captar simultaneamente o início e a reversão de uma tendência.

Análise de Riscos

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

  1. Se a configuração não for correta, muitos sinais de negociação serão gerados, resultando em negociações frequentes.
  2. O mercado horizontal pode gerar muitos sinais de invalidez.
  3. A tendência é que os preços dos produtos e serviços de consumo sejam mais baixos do que os preços dos produtos e serviços de consumo, o que pode levar a uma reversão prematura.

Métodos de controle de risco:

  1. Configure razoavelmente os parâmetros da média móvel para equilibrar o filtro e a sensibilidade.
  2. A combinação de indicadores de tendência com o filtro de sinais de invalidez.
  3. Estabeleça um ponto de parada para controlar a perda individual.

Direção de otimização

A estratégia pode ser otimizada em:

  1. Aumentar as condições de filtragem para verificar a transação ou os indicadores de volatilidade quando a média móvel for quebrada, evitando falsas quebras.
  2. Combinado com indicadores de tendências, identifica a direção e a intensidade das tendências.
  3. Adição de modelos de aprendizagem de máquina para otimizar automaticamente os parâmetros da média móvel.
  4. Combinado com o suporte de indicadores técnicos como resistência, Brin Belt, e outros, para mapear a área de negociação, o que aumenta a precisão de entrada.

Resumir

A estratégia utiliza as vantagens da média móvel para gerar sinais de negociação de forma simples e eficiente. Embora haja alguns riscos, ela pode ser melhorada por meio de otimização de parâmetros, adição de condições de filtragem, etc. A estratégia de cruzamento de média móvel merece mais pesquisa e aplicação.

Código-fonte da estratégia
/*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)