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.
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.
Mitigação do risco:
Otimizar os parâmetros de MA testando mais combinações para melhor ajuste.
Adicionar filtros como confirmação MACD para reduzir sinais falsos.
Otimizar o multiplicador de quantidade de entrada inversa através do ajuste de parâmetros.
Teste a extensão da duração da sessão intradiária para obter melhores retornos.
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")