Estratégia de negociação de média móvel dupla intradiária

Autora:ChaoZhang, Data: 2024-02-27 16:36:31
Tags:

img

Resumo

Esta é uma estratégia de negociação intradiária simples baseada em médias móveis duplas. Ele usa duas médias móveis simples com períodos diferentes e toma posições longas ou curtas quando as médias móveis se cruzam. A posição é invertida usando quantidade dupla quando o sinal muda.

Estratégia lógica

A estratégia usa uma média móvel simples de 10 dias e de 40 dias. Ela fica longa quando a média móvel de curto período cruza acima da média móvel de longo período e fica curta quando ocorre o cruzamento inverso. Quando o sinal muda, a posição é fechada usando a quantidade dupla e uma posição inversa é iniciada. A negociação só acontece após os sinais da média móvel durante uma sessão intradiária definida.

A estratégia utiliza principalmente a capacidade de captura de mudança de preço mais rápida da média móvel de período mais curto. Quando a SMA curta cruza acima da SMA longa, indica uma tendência de alta nos preços no curto prazo, portanto, ir longo pode capturar isso. O inverso indica uma tendência de queda de curto prazo. A entrada reversa de quantidade dupla expande o potencial de lucro.

Vantagens

  1. Uma lógica estratégica simples e clara, fácil de compreender e implementar.
  2. Captura efetivamente as tendências de preços a curto prazo utilizando o crossover de MA dupla.
  3. Evitar o risco durante a noite, restringindo-se a uma sessão intradiária.
  4. Aumentar o potencial de lucro através da troca inversa de quantidade dupla.

Análise de riscos

  1. Propenso a erros de negociação de ruído como uma estratégia de curto prazo.
  2. A dupla quantidade pode amplificar as perdas.
  3. Os riscos de deslocamento forçado perdem tendências mais rentáveis.

Mitigação do risco:

  1. Otimizar os parâmetros de MA para reduzir os falsos sinais.
  2. Adicionar filtros utilizando outros indicadores.
  3. Otimizar os parâmetros de quantidade.
  4. Relaxe a duração da sessão intradiária.

Oportunidades de melhoria

  1. Otimizar os parâmetros de MA testando mais combinações para melhor ajuste.

  2. Adicionar filtros como confirmação MACD para reduzir sinais falsos.

  3. Otimizar o multiplicador de quantidade de entrada inversa através do ajuste de parâmetros.

  4. Teste a extensão da duração da sessão intradiária para obter melhores retornos.

Conclusão

A estratégia capta tendências de curto prazo formadas a partir de sinais de cruzamento MA, expande os lucros usando negociação reversa de quantidade dupla e restringe os riscos overnight negociando apenas em uma sessão intradiária.


/*backtest
start: 2024-02-19 00:00:00
end: 2024-02-26 00:00:00
period: 1m
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/
// © Pritesh-StocksDeveloper

//@version=4
strategy("Moving Average - Intraday", shorttitle = "MA - Intraday", 
     overlay=true, calc_on_every_tick = true)

// Used for intraday handling
// Session value should be from market start to the time you want to square-off 
// your intraday strategy
var i_marketSession = input(title="Market session", type=input.session, 
     defval="0915-1455", confirm=true)

// Short & Long moving avg. period
var int i_shortPeriod = input(title = "Short MA Period", type = input.integer, 
     defval = 10, minval = 2, maxval = 20, confirm=true)
var int i_longPeriod = input(title = "Long MA Period", type = input.integer, 
     defval = 40, minval = 3, maxval = 120, confirm=true)

// A function to check whether the bar is in intraday session
barInSession(sess) => time(timeframe.period, sess) != 0

// Calculate moving averages
shortAvg = sma(close, i_shortPeriod)
longAvg = sma(close, i_longPeriod)

// Plot moving averages
plot(series = shortAvg, color = color.red, title = "Short MA", 
     linewidth = 2)
plot(series = longAvg, color = color.blue, title = "Long MA", 
     linewidth = 2)

// Long/short condition
longCondition = crossover(shortAvg, longAvg)
shortCondition = crossunder(shortAvg, longAvg)

// See if intraday session is active
bool intradaySession = barInSession(i_marketSession)

// Trade only if intraday session is active

// Long position
strategy.entry(id = "Long", long = strategy.long, 
     when = longCondition and intradaySession)

// Short position
strategy.entry(id = "Short", long = strategy.short, 
     when = shortCondition and intradaySession)

// Square-off position (when session is over and position is open)
squareOff = (not intradaySession) and (strategy.position_size != 0)
strategy.close_all(when = squareOff, comment = "Square-off")

Mais.