Estratégia de Crossover de Média Móvel


Data de criação: 2023-09-18 17:35:37 última modificação: 2023-09-18 17:35:37
cópia: 0 Cliques: 688
1
focar em
1617
Seguidores

Visão geral

A estratégia de cruzamento de média móvel é uma estratégia de acompanhamento de tendências baseada em cruzamento de média móvel como sinal de negociação. A estratégia usa o cruzamento de preço com a média móvel e dois cruzamento de média móvel como sinais de compra e venda para obter lucro.

Princípio da estratégia

Os principais princípios da estratégia são os seguintes:

  1. Calcule duas médias móveis, uma rápida e outra lenta, com opção de SMA ou EMA.

  2. Quando a linha rápida atravessa a linha lenta, faça mais; quando a linha rápida atravessa a linha lenta, equilibre-se.

  3. Pode-se optar por quebrar a linha média ou cruzar entre as linhas médias como sinal de negociação.

  4. Pode-se definir um período de tempo para a execução da estratégia.

  5. O mercado de ativos é o mercado de ativos em ações e o mercado de ativos em ações é o mercado de ativos em ações.

  6. Optimizado para diferentes períodos por meio de parâmetros de média móvel.

A estratégia utiliza a função de acompanhamento de tendências da linha de média móvel, indicando que a posição está em uma tendência ascendente quando a linha de média curta atravessa a linha de média longa e deve ser investida mais; por outro lado, quando a linha de média curta atravessa a linha de média longa abaixo da linha de média curta, indicando que a posição está em uma tendência descendente e deve ser investida menos.

Análise de vantagens

As principais vantagens desta estratégia incluem:

  1. O princípio é simples, fácil de implementar, os sinais de negociação são claros.

  2. A plataforma permite que os investidores e os investidores de todo o mundo possam acompanhar as tendências e capturar oportunidades de compra e venda em tempo real.

  3. Pode ser combinado com diferentes parâmetros de equilíbrio, para ser aplicado em vários ambientes de mercado.

  4. Pode optar por apenas fazer mais ou apenas fazer vazio, evitando a operação inversa incerta.

  5. Pode-se definir o tempo de execução da estratégia, evitando determinados períodos de tempo.

  6. Otimizando os parâmetros, o desempenho da estratégia pode ser continuamente melhorado.

Análise de Riscos

Os principais riscos desta estratégia são:

  1. É fácil gerar sinais falsos e deve-se evitar transações muito frequentes.

  2. O desempenho depende da escolha dos parâmetros da linha média, a escolha incorreta pode causar prejuízos.

  3. Há um certo atraso e deve ser evitado o ingresso prematuro e a saída tardia.

  4. Não é adequado para um mercado de liquidação em choque.

  5. O cruzamento de equilíbrio tem uma certa aleatoriedade e não é possível evitar completamente os prejuízos.

O risco pode ser reduzido através da confirmação do volume de transações, otimizando parâmetros ou usando em combinação com outros indicadores.

Direção de otimização

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

  1. Adicionar /% ((Line - ShortMa) /ShortMa) / ((Line - LongMa) /LongMa) / como condição de filtro de inclinação de linha média.

  2. Optimizar os parâmetros de ciclo de média móvel para testar diferentes combinações.

  3. Adicionar MACD ou RSI como um indicador de confirmação múltipla.

  4. Estabelecer paradas de perda e limitar perdas individuais.

  5. Distinguir entre mercado de tendência e mercado de liquidação, para uso condicional.

  6. Teste diferentes posições por um período de tempo curto e longo para encontrar a melhor opção.

Resumir

A estratégia de cruzamento de equilíbrio móvel é uma estratégia de acompanhamento de tendências simples e práticas. A vantagem é que é fácil de implementar e pode acompanhar a tendência de forma eficaz; A desvantagem é que tem atraso e pode produzir mais falsos sinais. A estratégia pode ser melhorada por meio de otimização de parâmetros, filtragem de indicadores, etc., para obter melhor desempenho em mercados com tendências evidentes.

Código-fonte da estratégia
/*backtest
start: 2023-09-10 00:00:00
end: 2023-09-17 00:00:00
period: 10m
basePeriod: 1m
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)