Estratégia de negociação de média móvel dupla rápida e lenta


Data de criação: 2023-10-27 16:41:24 última modificação: 2023-10-27 16:41:24
cópia: 0 Cliques: 691
1
focar em
1617
Seguidores

Estratégia de negociação de média móvel dupla rápida e lenta

Visão geral

A estratégia de negociação de dupla equilíbrio gera um sinal de negociação com base no cruzamento de duas médias móveis, calculadas em média móvel rápida e média móvel lenta. Quando a média móvel lenta é cruzada acima da média móvel rápida, uma estratégia de múltiplas cabeças é adotada; quando a média móvel lenta é cruzada abaixo da média móvel rápida, uma estratégia de vazio é adotada.

Princípio da estratégia

A estratégia começa por definir a duração da média móvel rápida (maFastLength) e a média móvel lenta (maSlowLength). A média móvel rápida (fastMA) e a média móvel lenta (slowMA) são então calculadas. A média móvel rápida é mais sensível à mudança de preço e pode ser usada para determinar a tendência atual; a média móvel lenta é mais lenta para responder a mudança de preço e pode ser usada para determinar a direção da tendência.

Quando a média móvel rápida atravessou a média móvel lenta, a estratégia de multiplicação foi adotada, gerando um sinal de goLong (). Quando a média móvel rápida atravessou a média móvel lenta, a posição de equilíbrio foi feita, gerando um sinal de killLong ().

Pode-se optar por fazer apenas estratégias longonly, fazer apenas estratégias shorting, ou swapping de negociação bidirecional.

Quando você faz estratégias em múltiplos, abra mais posições quando o sinal de goLong ((() é emitido; e pare quando o sinal de killLong ((() é emitido.

Quando a estratégia de fechar, fechar a posição quando o sinal de killLong () é emitido; fechar a posição quando o sinal de goLong () é emitido.

No caso de negociação bidirecional, abra uma posição a mais quando o sinal de goLong () for emitido; Peça uma posição a mais e abra uma posição a zero quando o sinal de killLong () for emitido.

Além disso, a estratégia também possui funções como stop loss, stop loss tracking e notificações de negociação, permitindo uma escolha flexível entre elas.

Vantagens estratégicas

  1. A estratégia é simples, fácil de entender e de implementar.

  2. Pode optar por fazer uma operação a longo prazo, a curto prazo ou a dois lados.

  3. Há uma flexibilidade para escolher entre o uso de funções de gerenciamento de risco, como stop loss e o rastreamento de stop loss.

  4. A mensagem de transação pode ser personalizada, com sugestões de transações em tempo real.

  5. A estratégia de linha média rápida e lenta é sensível às mudanças nas tendências do mercado e pode capturar tendências mais fortes.

  6. Os parâmetros da estratégia são ajustáveis, podem ser ajustados para diferentes mercados e são altamente adaptáveis.

Risco estratégico

  1. Quando o mercado não tem uma tendência óbvia, pode haver mais falsos sinais, o que leva a uma sobrevenda.

  2. O sistema de linha média não é sensível a eventos de emergência e pode perder oportunidades de emergência.

  3. É necessário escolher razoavelmente os parâmetros da linha média, pois a escolha incorreta dos parâmetros pode afetar o efeito da estratégia.

  4. A estratégia de negociação deve ser rigorosamente seguida para evitar transações arbitrárias.

  5. O impacto dos custos de transação na rentabilidade estratégica deve ser observado.

Direção de otimização da estratégia

  1. Pode-se introduzir outros indicadores, como o RSI, para validar os sinais de negociação e evitar a emissão de sinais errados.

  2. Pode-se configurar a função de otimização de parâmetros para encontrar automaticamente a combinação de parâmetros mais adequada.

  3. Pode-se configurar um stop loss dinâmico para bloquear o lucro e ajustar o ponto de stop loss quando necessário.

  4. Os modelos de aprendizagem de máquina podem ser usados para ajudar a determinar a direção das tendências.

  5. Os usuários podem otimizar as notificações para se adequarem aos seus hábitos de negociação.

Resumir

A estratégia de negociação em linha dupla é, em geral, mais simples e prática, mais sensível às mudanças nas tendências do mercado e pode capturar oportunidades de negociação de tendências mais fortes. Mas também é necessário ter cuidado para evitar erros de negociação em mercados sem tendências e ajustar adequadamente os parâmetros para se adaptar a diferentes ambientes de mercado. Além disso, a inclusão apropriada de indicadores e funções de otimização de tecnologias auxiliares pode aumentar ainda mais a estabilidade e a adaptabilidade da estratégia.

Código-fonte da estratégia
/*backtest
start: 2022-10-20 00:00:00
end: 2023-10-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy("SMA Strategy", shorttitle="SMA Strategy", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// === Inputs ===
// short ma
maFastSource = input(defval=close, title="Fast MA Source")
maFastLength = input(defval=3, title="Fast MA Period", minval=1)

// long ma
maSlowSource = input(defval=close, title="Slow MA Source")
maSlowLength = input(defval=9, title="Slow MA Period", minval=1)

// Trade direction
shorting = input(defval=false, title="Short only?")
longonly = input(defval=true, title="Long only?")
swapping = input(defval=false, title="Swap orders?")
// risk management
useStop = input(defval=false, title="Use Initial Stop Loss?")
slPoints = input(defval=25, title="Initial Stop Loss Points", minval=1)
useTS = input(defval=false, title="Use Trailing Stop?")
tslPoints = input(defval=120, title="Trail Points", minval=1)
useTSO = input(defval=false, title="Use Offset For Trailing Stop?")
tslOffset = input(defval=20, title="Trail Offset Points", minval=1)

// Messages for buy and sell
message_long_entry  = input("Long entry message", title="Long entry message")
message_long_exit   = input("Long exit message", title="Long exit message")
message_short_entry = input("Short entry message", title="Short entry message")
message_short_exit  = input("Short exit message", title="Short exit message")

// Calculate start/end date and time condition
startDate  = input(timestamp("2021-01-01T00:00:00"), type = input.time)
finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time)
 
time_cond  = true
// === Vars and Series ===
fastMA = sma(maFastSource, maFastLength)
slowMA = sma(maSlowSource, maSlowLength)

plot(fastMA, color=color.blue)
plot(slowMA, color=color.purple)

goLong() =>
    crossover(fastMA, slowMA)
killLong() =>
    crossunder(fastMA, slowMA)
    
// Long only
if longonly
    strategy.entry("Buy", strategy.long, when=goLong() and time_cond, alert_message = message_long_entry)
    strategy.close("Buy", when=killLong() and time_cond, alert_message = message_long_exit)

// Short only
if shorting
    strategy.entry("Sell", strategy.short, when=killLong() and time_cond, alert_message = message_short_entry)
    strategy.close("Sell", when=goLong() and time_cond, alert_message = message_short_exit)
    
// Order Swapping
if swapping
    strategy.entry("Buy", strategy.long, when=goLong() and time_cond, alert_message = message_long_entry)
    strategy.entry("Sell", strategy.short, when=killLong() and time_cond, alert_message = message_short_entry)

if useStop
    strategy.exit("XLS", from_entry="Buy", stop=strategy.position_avg_price / 1.08, alert_message = message_long_exit)
    strategy.exit("XSS", from_entry="Sell", stop=strategy.position_avg_price * 1.08, alert_message = message_short_exit)