Com base em uma estratégia de negociação de crossover de média móvel dupla simples


Data de criação: 2023-12-25 16:03:48 última modificação: 2023-12-25 16:03:48
cópia: 0 Cliques: 643
1
focar em
1623
Seguidores

Com base em uma estratégia de negociação de crossover de média móvel dupla simples

Visão geral

A estratégia é baseada no princípio do SMA. A estratégia usa duas SMAs, a SMA rápida e a SMA lenta, que geram um sinal de compra quando a SMA rápida quebra a SMA lenta de baixo; e um sinal de venda quando a SMA rápida quebra a SMA lenta de cima.

Princípio da estratégia

A estratégia baseia-se em duas linhas de indicador SMA. Dentre elas, a configuração mais curta durante o SMA rápido, pode capturar as mudanças de preço mais rapidamente; a configuração mais longa durante o SMA lento, pode filtrar parte do ruído. Quando o SMA rápido cruza o SMA lento da direção inferior, indica que o preço de curto prazo sobe mais rapidamente, gerando um sinal de compra.

Ao definir diferentes parâmetros de ciclo de SMA, os parâmetros da estratégia podem ser ajustados em certa medida para adaptar-se a diferentes condições de mercado. Ao mesmo tempo, a estratégia também permite definir um intervalo de tempo de retorno, facilitando o teste de parâmetros da estratégia em dados históricos.

Análise de vantagens

  • O SMA é um indicador conhecido, simples e fácil de entender.
  • Parâmetros de ciclo SMA personalizáveis e adaptáveis
  • Tempo de resposta ajustável para otimização de parâmetros
  • O método de geração de sinais de cruzamento tem um certo efeito de filtragem sobre os sinais de ruptura, reduzindo as transações erradas.

Análise de Riscos

  • O SMA está atrasado e pode ter perdido a oportunidade de fazer uma curta-metragem
  • Não é possível determinar a intensidade da tendência, o efeito do sinal pode ser instável
  • Parâmetros de ciclo SMA mal definidos aumentam o sinal de erro

Para combater estes riscos, podem ser adotadas as seguintes medidas:

  • Reduzir adequadamente o ciclo SMA e aumentar a sensibilidade
  • Força de tendência em combinação com outros indicadores
  • Buscar a melhor combinação de parâmetros com a ferramenta de otimização de parâmetros

Direção de otimização

  • Aumentar as estratégias de stop loss para controlar as perdas individuais
  • Aumento do mecanismo de gestão de posições
  • Combinação com outros indicadores técnicos
  • Aumentar os algoritmos de aprendizagem de máquina para a otimização de parâmetros dinâmicos

Resumir

Esta estratégia pertence a uma típica estratégia de acompanhamento de tendências. Aplicando um simples princípio de duplo equilíbrio de linhas cruzadas, se os parâmetros forem adequados, um melhor efeito de acompanhamento pode ser obtido. Mas o SMA em si é um pouco atrasado e não pode determinar a intensidade da tendência.

Código-fonte da estratégia
/*backtest
start: 2023-12-17 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//strategy(title="MA Cross Entry & Exit w/Date Range", overlay=true, initial_capital=10000, currency='USD')

strategy(title="SMA Cross Entry & Exit Strategy", overlay=true)

// Credit goes to this developer for the "Date Range Code"
// https://www.tradingview.com/script/62hUcP6O-How-To-Set-Backtest-Date-Range/


// === GENERAL INPUTS ===
// short ma
maFastSource   = input(defval = open, title = "Fast MA Source")
maFastLength   = input(defval = 36, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource   = input(defval = open , title = "Slow MA Source")
maSlowLength   = input(defval = 46, title = "Slow MA Period", minval = 1)

// === SERIES SETUP ===
// a couple of ma's..
maFast = sma(maFastSource, maFastLength)
maSlow = sma(maSlowSource, maSlowLength)


// === PLOTTING ===
fast = plot(maFast, title = "Fast MA", color = red, linewidth = 2, style = line, transp = 30)
slow = plot(maSlow, title = "Slow MA", color = green, linewidth = 2, style = line, transp = 30)

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, 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)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"

// === LOGIC ===
//enterLong = crossover(maFast, maSlow)
//exitLong = crossover(maSlow, maFast)
enterLong = crossover(maSlow, maFast)
exitLong = crossover(maFast, maSlow)


// Entry //
strategy.entry(id="Long Entry", long=true, when=window() and enterLong)
strategy.entry(id="Short Entry", long=false, when=window() and exitLong)

// === FILL ====

fill(fast, slow, color = maFast > maSlow ? green : red)