Estratégia de tendência cruzada da média móvel

Autora:ChaoZhang, Data: 2024-01-12 10:56:57
Tags:

img

Resumo

Esta estratégia de negociação é baseada em um sistema de cruzamento de média móvel e média móvel simples para rastreamento de tendências. Ele usa o cruzamento de médias móveis rápidas e lentas com diferentes períodos como sinais para ir longo ou curto. Quando o MA rápido cruza acima do MA lento de baixo, vá longo; quando o MA rápido cruza abaixo do MA lento de cima, vá curto. Esta estratégia funciona bem para produtos com tendências óbvias.

Estratégia lógica

A estratégia usa uma média móvel simples rápida como 60 dias e uma lenta como 200 dias.

Quando o MA curto cruza acima do MA longo de baixo, ele sinaliza que os preços de curto prazo começam a subir e entrar em um mercado de alta, então vá longo.

A estratégia usa o cruzamento de MA para determinar a direção da tendência. Quando os preços de curto prazo aumentam mais rápido, o MA curto empurra o MA longo para cima e cruza-o de baixo. Isso significa que uma tendência de alta está emergindo e uma posição longa deve ser tomada. Por outro lado, quando os preços de curto prazo caem mais rápido, o MA curto puxará o MA longo para baixo e cruzá-lo de cima, implicando uma tendência de queda e uma posição curta deve ser tomada.

Ao capturar os pontos de inflexão das tendências de preços utilizando cruzamento MA rápido e lento, a estratégia pode ajustar as posições longas/cortas em conformidade.

Análise das vantagens

  • Utiliza o cruzamento de MA para determinar as principais tendências, evitando ser enganado por ruídos de mercado a curto prazo.
  • Considera os prazos a curto e médio e longo prazos mais estáveis e fiáveis.
  • Implementa rastreamento de tendências simples e eficaz, por exemplo, longo em tendências de alta e curto em tendências de baixa.
  • As médias móveis são amplamente aplicáveis, fáceis de entender e os parâmetros são flexíveis.
  • Os parâmetros de gestão de riscos são ajustáveis para os riscos controlados.

Análise de riscos

  • A estratégia baseia-se em tendências de preços claras, falhas podem acontecer durante oscilações violentas do mercado.
  • Os Whipsaws podem produzir muitos sinais falsos durante os mercados variáveis, causando abertura e fechamento frequentes de posições.
  • As médias móveis têm atrasos, potencialmente faltando pontos de virada de preços.
  • As configurações de parâmetros inadequadas, como stop loss demasiado apertado ou take profit demasiado amplo, podem levar a uma saída prematura ou a um encerramento de posições rentáveis.
  • Os parâmetros razoáveis necessitam de otimização de acordo com as especificidades dos diferentes produtos.

Métodos como o ajuste dos períodos de MA com base na frequência de volatilidade dos produtos, a melhoria do stop loss/take profit utilizando indicadores mais complexos, a adição de filtros de volume, etc., podem otimizar esta estratégia e melhorar a estabilidade.

Orientações de otimização

A estratégia pode ser ainda melhorada nos seguintes aspectos:

  1. Otimizar períodos de MA rápidos e lentos para se adaptar a produtos com diferentes frequências de volatilidade.

  2. Melhorar as condições de entrada adicionando mais filtros como picos de volume para reduzir os falsos sinais.

  3. Melhorar o stop loss/take profit como trailing stop ou take profit dinâmico para melhorar a rentabilidade.

  4. Considere custos de negociação como comissões e adicione módulos de avaliação de custos para backtests mais realistas.

  5. Projetar Parâmetro Universo para encontrar combinações ótimas de parâmetros adaptados a diferentes produtos.

  6. Adicionar a identificação de padrões locais para ajudar a determinar pontos de virada da tendência e melhorar o calendário das entradas e saídas.

Através de uma otimização sistemática da estratégia, a rendibilidade, a estabilidade podem ser muito melhoradas e os retrabalhos reduzidos.

Resumo

A estratégia de negociação determina as mudanças de tendência usando MA crossovers, uma estratégia típica de seguimento de tendência. Ele usa crossover entre MAs rápidos e lentos para gerar sinais longos / curtos, identificando a direção da tendência através da combinação dos dois. Esta estratégia captura as tendências de forma constante e confiável e é fácil de entender e implementar. Quando otimizada, pode se adaptar à maioria dos produtos e forma uma estratégia de negociação quantitativa fundamental.


/*backtest
start: 2024-01-04 00:00:00
end: 2024-01-11 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/
// © thebearfib
//
//@version=5
//

strategy("x-over 150d_200d_sma - Free", overlay = true)

repaint = input.bool(defval = false, title = "[RePaint] Uncheck to see real time results") //when you deselect it - it shows what would have happened in real time while trading the system
srcmc   = request.security(syminfo.tickerid, 'D', open, lookahead= repaint ? barmerge.lookahead_on : barmerge.lookahead_off, gaps=barmerge.gaps_off)

fast_length         = input(title="Fast Length", defval=60)
slow_length         = input(title="Slow Length", defval=275)

_fast               = ta.sma(srcmc,  fast_length)
_slow               = ta.sma(srcmc,  slow_length)

plot(_fast, 
  title="Fast SMA", 
  color=color.red,
  linewidth = 1) 

plot(_slow, 
  title="Slow SMA", 
  color=color.white,
  linewidth = 3)
//
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// ————————————————————————————————— Calculating  —————————————————————————————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//
longProfitPerc      = input.float(title="Long Take Profit (%)", minval=0.01, step=1.0, defval=42) * .01
longStopPerc        = input.float(title="Long Stop (%)",        minval=0.01, step=1.0, defval=13)  * .01
//
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// ————————————————————————————————— Stop Conditions   ————————————————————————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
longExitPrice  = strategy.opentrades > 0 ? strategy.position_avg_price * (1 + longProfitPerc) : srcmc *  (1 + longProfitPerc)
longStopPrice = strategy.opentrades  > 0 ? strategy.position_avg_price * (1 - longStopPerc)   : srcmc *  (1 - longStopPerc)
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// ————————————————————————————————— Long Conditions   ————————————————————————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
longCondition   = srcmc > _slow and  ta.crossover(_fast, _slow)
closeCondition  =  ta.crossover(srcmc, _slow)  

if (longCondition)
    strategy.entry("Entry (long)", strategy.long, comment="→ 𝗟𝗴 𝗘𝗻𝘁𝗿𝘆")

if (closeCondition)
    strategy.close("Entry (long)", comment=" 𝗟𝗴 𝗘𝘅𝗶𝘁 ←")

if (strategy.position_size > 0)
    strategy.exit(id="XL", limit=longExitPrice, stop = longStopPrice, comment_profit = "Take Profit", comment_loss = "Stop Loss")
//
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// —————————————————————————————————  Never the End Just the beginning    —————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//

Mais.