Esta estratégia emprega um sistema duplo de média móvel para determinação de tendências e decisões de negociação, utilizando a posição relativa de médias móveis exponenciais rápidas e lentas (EMA) em pontos de tempo específicos para identificar o início, continuação ou término da tendência.
O núcleo da estratégia é baseado em dois EMAs com períodos diferentes para determinação de tendência. O EMA rápido (período padrão 10) é mais sensível às mudanças de preço, capaz de capturar rapidamente os movimentos do mercado; o EMA lento (período padrão 50) reflete tendências de longo prazo. A estratégia verifica a relação de posição entre essas duas linhas em um horário especificado a cada dia de negociação (padrão 9:00), usando sinais de cruzamento do EMA para determinar a direção da tendência do mercado e executar negociações. Uma posição longa é inserida quando o EMA rápido cruza acima do EMA lento, indicando o fortalecimento do ímpeto ascendente, enquanto uma posição curta é inserida quando o EMA rápido cruza abaixo do EMA lento, indicando o fortalecimento do ímpeto descendente.
A estratégia alcança um sistema de negociação de tendência simples, mas eficaz, combinando um sistema de EMA duplo com mecanismos de verificação de tempo fixo. Seus pontos fortes estão na lógica clara e na alta automação, embora enfrente limitações de atraso da média móvel e tempo de entrada fixo.
/*backtest start: 2024-12-06 00:00:00 end: 2025-01-04 08:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Daily EMA Comparison Strategy", shorttitle="Daily EMA cros Comparison", overlay=true) //------------------------------------------------------------------------------ // Inputs //------------------------------------------------------------------------------ fastEmaLength = input.int(10, title="Fast EMA Length", minval=1) // Fast EMA period slowEmaLength = input.int(50, title="Slow EMA Length", minval=1) // Slow EMA period checkHour = input.int(9, title="Check Hour (24h format)", minval=0, maxval=23) // Hour to check checkMinute = input.int(0, title="Check Minute", minval=0, maxval=59) // Minute to check //------------------------------------------------------------------------------ // EMA Calculation //------------------------------------------------------------------------------ fastEMA = ta.ema(close, fastEmaLength) slowEMA = ta.ema(close, slowEmaLength) //------------------------------------------------------------------------------ // Time Check //------------------------------------------------------------------------------ // Get the current bar's time in the exchange's timezone currentTime = timestamp("GMT-0", year, month, dayofmonth, checkHour, checkMinute) // Check if the bar's time equals or passes the daily check time isCheckTime = (time >= currentTime and time < currentTime + 60 * 1000) // 1-minute tolerance //------------------------------------------------------------------------------ // Entry Conditions //------------------------------------------------------------------------------ // Buy if Fast EMA is above Slow EMA at the specified time buyCondition = isCheckTime and fastEMA > slowEMA // Sell if Fast EMA is below Slow EMA at the specified time sellCondition = isCheckTime and fastEMA < slowEMA //------------------------------------------------------------------------------ // Strategy Execution //------------------------------------------------------------------------------ // Enter Long if buyCondition strategy.entry("Long", strategy.long) // Enter Short if sellCondition strategy.entry("Short", strategy.short) //------------------------------------------------------------------------------ // Plot EMAs //------------------------------------------------------------------------------ plot(fastEMA, color=color.blue, title="Fast EMA") plot(slowEMA, color=color.orange, title="Slow EMA")