A estratégia Triple EMA Crossover Breakout usa indicadores de média móvel exponencial tripla (EMA) para determinar a direção da tendência do mercado e entrar nos pontos de ruptura da tendência.
A estratégia baseia-se principalmente nos seguintes princípios:
Utilize três EMA com períodos diferentes (200 dias, 50 dias, 20 dias) para determinar as principais tendências de mercado a médio e curto prazo.
Quando a EMA de curto prazo (20 dias) cruza acima da EMA de médio prazo (50 dias), é gerado um sinal de compra.
Combine padrões de velas para verificar a confiabilidade do sinal. Somente quando o preço de fechamento da segunda vela é maior (menor) do que o preço alto (baixo) da vela anterior, a quebra é considerada confiável.
Estabelecer níveis de stop loss e de lucro para limitar os riscos para além das flutuações razoáveis dos preços.
O uso de múltiplas EMAs melhora a precisão do julgamento da tendência.
Filtrar sinais falsos com padrões de candelabro evita riscos comerciais desnecessários.
Stop loss e take profit controla perdas de negociação única de forma eficaz.
Em mercados variados, as EMAs podem gerar sinais falsos excessivos e não determinar a direcção do mercado.
O sistema de indicadores únicos tem uma capacidade limitada em situações de mercado complexas.
Ignora os custos de negociação que poderiam conduzir à não rendibilidade nos mercados de taxas elevadas.
Introduzir outros indicadores como o MACD e o KDJ para formar um sistema combinado e melhorar a precisão do julgamento.
Otimizar parâmetros através de backtesting para símbolos específicos e prazos para tornar a estratégia mais adequada.
Aumentar o volume de negociação para evitar sinais falsos de baixo volume.
A estratégia de ruptura de crossover tripla da EMA tem uma lógica clara e fácil de entender para determinar tendências de mercado e encontrar o tempo de entrada usando crossovers da EMA. Mas também tem algumas limitações ao lidar com situações de mercado complexas.
/*backtest start: 2022-12-21 00:00:00 end: 2023-12-27 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("GHG RETRACEMENT MODE 1", overlay=true) entryLevel1 = input(0.5, "ENTRY LEVEL 1") entryLevel2 = input(0.25, "ENTRY LEVEL 2") entryLevel3 = input(0.0, "ENTRY LEVEL 3") stopLevel = input(-0.35, "STOP LEVEL") tpLevel = input(0.88, "TP LEVEL") dontUseEma = input(false, "Don't Use EMA") get_level(level, level100, level0) => level * (level100 - level0) + level0 buySignal = close[2] < open[2] and close[1] > open[1] and close[0] > open[0] and high[0] > open[2] and high[1] < high[2] sellSignal = close[2] > open[2] and close[1] < open[1] and close[0] < open[0] and low[0] < open[2] and low[1] > low[2] if buySignal and (close[0] > ta.ema(close, 200) or dontUseEma) l = label.new(bar_index, na) entryPrice1 = get_level(entryLevel1, high[0], low[2]) entryPrice2 = get_level(entryLevel2, high[0], low[2]) entryPrice3 = get_level(entryLevel3, high[0], low[2]) exitPrice = get_level(tpLevel, high[0], low[2]) stopPrice = get_level(stopLevel, high[0], low[2]) strategy.order("BUY 1", strategy.long, comment="BUY 1", limit=entryPrice1) strategy.exit("exit", "BUY 1", limit=high[0], stop=stopPrice) strategy.order("BUY 2", strategy.long, comment="BUY 2", limit=entryPrice2) strategy.exit("exit", "BUY 2", limit=high[0], stop=stopPrice) label.set_text(l, "Buy => " + str.tostring(close[2]) + "\nSL=> " + str.tostring(stopPrice) + "\nTP => " + str.tostring(exitPrice) ) label.set_color(l, color.green) label.set_yloc(l, yloc.belowbar) label.set_style(l, label.style_label_up) if sellSignal and (close[0] < ta.ema(close, 200) or dontUseEma) a = label.new(bar_index, na) entryPrice1 = get_level(entryLevel1, low[0], high[2]) entryPrice2 = get_level(entryLevel2, low[0], high[2]) entryPrice3 = get_level(entryLevel3, low[0], high[2]) exitPrice = get_level(tpLevel, low[0], high[2]) stopPrice = get_level(stopLevel,low[0], high[2]) strategy.order("SELL 1", strategy.short, comment="SELL 1", limit=entryPrice1) strategy.exit("exit", "SELL 1", limit=low[0], stop=stopPrice) strategy.order("SELL 2", strategy.short, comment="SELL 2", limit=entryPrice2) strategy.exit("exit", "SELL 2", limit=low[0], stop=stopPrice) label.set_text(a,"Sell => " + str.tostring(close[2]) + "\nSL=> " + str.tostring(stopPrice) + "\nTP => " + str.tostring(exitPrice) ) label.set_color(a, color.red) label.set_yloc(a, yloc.abovebar) label.set_style(a, label.style_label_down)