Sistema de Crossover de Média Móvel


Data de criação: 2024-01-03 16:22:18 última modificação: 2024-01-03 16:22:18
cópia: 1 Cliques: 574
1
focar em
1621
Seguidores

Sistema de Crossover de Média Móvel

Visão geral

A estratégia é uma estratégia de negociação de superávit de câmbio aberto, que cria um sinal de negociação baseado em uma média móvel. Um sinal de compra é gerado quando a média móvel rápida atravessa a média móvel lenta de baixo para cima; um sinal de venda é gerado quando a média móvel rápida atravessa a média móvel lenta de cima para baixo.

Princípio da estratégia

A estratégia usa duas médias móveis, a média móvel simples de 20 dias e a média móvel simples de 30 dias. Um sinal de compra é gerado quando a média móvel de 20 dias atravessa a média móvel de 30 dias de baixo; um sinal de venda é gerado quando a média móvel de 20 dias atravessa a média móvel de 30 dias de cima para baixo.

A média móvel em si é um indicador de tendência e pode efetivamente descrever a direção da tendência do mercado. O princípio da interseção permite que a estratégia capte pontos de mudança de tendência em tempo hábil e forme um sinal de negociação.

Análise de vantagens

A vantagem desta estratégia é que:

  1. A lógica da estratégia é simples, clara, fácil de entender e implementar, adequada para aprendizagem de iniciantes;
  2. A negociação a favor, evitando a construção de posições em contra, pode reduzir perdas desnecessárias;
  3. A própria média móvel tem um efeito de filtragem que elimina o ruído do movimento e evita a produção de sinais falsos.
  4. A configuração dos parâmetros do ciclo é razoável e não é muito sensível e afeta a estabilidade da estratégia.

Análise de Riscos

A estratégia tem os seguintes riscos:

  1. Quando as coisas estão agitadas, as médias móveis se cruzam com frequência e podem gerar mais pedidos de stop loss;
  2. A média móvel está atrasada em termos de tendência e pode perder parte do lucro.
  3. Se os parâmetros não forem definidos no momento certo, a estabilidade da estratégia será afetada.

Resposta:

  1. Ajustar os ciclos das médias móveis, usando técnicas como as médias móveis triangulares para suavizar a curva e reduzir a frequência de cruzamento;
  2. Ajudar outros indicadores a avaliar as tendências e evitar a negociação em situações de turbulência;
  3. Parâmetros de otimização, para encontrar a melhor combinação de parâmetros.

Direção de otimização

A estratégia pode ser melhorada em vários aspectos:

  1. Tente diferentes tipos de médias móveis, como médias móveis ponderadas, médias móveis trigonométricas, etc.
  2. Aumentar o discernimento de outros indicadores técnicos para evitar sinais de negociação em mercados turbulentos;
  3. Análise de tendências através de técnicas de análise, como a teoria das ondas e a teoria dos canais;
  4. Parâmetros de otimização em tempo real de modelos, como o aprendizado de máquina;
  5. Combinando ferramentas de quantificação, adotar estratégias de stop loss para otimizar a gestão de fundos.

Resumir

O sistema de cruzamento de média móvel é uma estratégia de acompanhamento de tendências simples e eficaz, com princípios claros e fáceis de entender, muito adequada para os iniciantes. A estratégia depende principalmente do movimento de média para formar sinais de negociação, obtendo lucros através de negociação progressiva. Pode ser otimizada em vários aspectos, tornando a estratégia mais estável e eficiente.

Código-fonte da estratégia
/*backtest
start: 2023-12-03 00:00:00
end: 2024-01-02 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/
// © gliese581d

//@version=4
strategy(title="Moving Averages Testing", overlay=true, precision=2, calc_on_every_tick=false, max_bars_back=5000, pyramiding=2,  
 default_qty_type=strategy.percent_of_equity, default_qty_value=50, commission_type=strategy.commission.percent, initial_capital=10000)


//SETTINGS

longs_on = input(title="Long Trades enabled", defval=true)
shorts_on = input(title="Short Trades enabled", defval=true)

long_cond = input(title="Buy/Long Crossover Condition", defval="price x MA1", options=["price x MA1", "price x MA2", "MA1 x MA2"])
short_cond = input(title="Sell/Short Crossunder Condition", defval="price x MA2", options=["price x MA1", "price x MA2", "MA1 x MA2"])

ma1_type = input(title="Moving Average 1 Type", defval="SMA", options=["SMA", "EMA"])
ma1_len = input(defval=20, title="Moving Average 1 Len", type=input.integer, minval=1, maxval=1000, step=1)
ma2_type = input(title="Moving Average 2 Type", defval="SMA", options=["SMA", "EMA"])
ma2_len = input(defval=30, title="Moving Average 2 Len", type=input.integer, minval=1, maxval=1000, step=1)


//MOVING AVERAGES

ma_1 = ma1_type == "EMA" ? ema(close, ma1_len) : sma(close, ma1_len)
ma_2 = ma2_type == "EMA" ? ema(close, ma2_len) : sma(close, ma2_len)


//STRATEGY

//trade entries
long_entry = long_cond == "price x MA1" ? crossover(close, ma_1) : long_cond == "price x MA2" ? crossover(close, ma_2) : long_cond == "MA1 x MA2" ? crossover(ma_1, ma_2) : false
short_entry = short_cond == "price x MA1" ? crossunder(close, ma_1) : short_cond == "price x MA2" ? crossunder(close, ma_2) : short_cond == "MA1 x MA2" ? crossunder(ma_1, ma_2) : false

start_month = input(defval=4, title="Strategy Start Month", type=input.integer, minval=1, maxval=12, step=1)
start_year = input(defval=2018, title="Strategy Start Year", type=input.integer, minval=2000, maxval=2025, step=1)
end_month = input(defval=12, title="Strategy End Month", type=input.integer, minval=1, maxval=12, step=1)
end_year = input(defval=2020, title="Strategy End Year", type=input.integer, minval=2000, maxval=2025, step=1)

in_time =true

strategy.entry("Long", strategy.long, when=longs_on and in_time and long_entry)
strategy.close("Long", when=longs_on and not shorts_on and short_entry)

strategy.entry("Short", strategy.short, when=shorts_on and in_time and short_entry)
strategy.close("Short", when=shorts_on and not longs_on and long_entry)


//PLOTTING

//color background
last_entry_was_long = nz(barssince(long_entry)[1], 5000) < nz(barssince(short_entry)[1], 5000)
bgcol = (longs_on and last_entry_was_long) ? color.green : (shorts_on and not last_entry_was_long) ? color.red : na
bgcolor(color=bgcol, transp=90)

plot((long_cond == "price x MA1" or long_cond == "MA1 x MA2") or (short_cond == "price x MA1" or short_cond == "MA1 x MA2") ? ma_1 : na, color=color.blue)
plot((long_cond == "price x MA2" or long_cond == "MA1 x MA2") or (short_cond == "price x MA2" or short_cond == "MA1 x MA2") ? ma_2 : na, color=color.black)
plotshape(long_entry, style=shape.triangleup, location=location.belowbar, color=color.green)
plotshape(short_entry, style=shape.triangledown, location=location.abovebar, color=color.red)