A estratégia de linha longa de dupla EMA Golden Cross é uma estratégia de rastreamento de tendências que apenas abre posições longas. A estratégia usa três médias móveis, EMA de curto prazo, EMA de médio prazo e EMA de longo prazo. A regra específica de entrada é: abrir longo quando o preço está acima da EMA de longo prazo e a EMA de curto prazo cruza acima da EMA de médio prazo para formar uma cruz de ouro.
Calcular a EMA de curto prazo, a EMA de médio prazo e a EMA de longo prazo utilizando três períodos de EMA configuráveis.
Se o preço estiver acima da EMA de longo prazo, prova que está atualmente em uma tendência de alta.
Se a EMA de curto prazo cruzar acima da EMA de médio prazo a partir de baixo para formar uma cruz de ouro, isso prova ainda mais que a tendência de alta está se fortalecendo.
Quando ambas as condições acima forem satisfeitas ao mesmo tempo, abrir longo.
A maior vantagem desta estratégia é que ela pode identificar efetivamente tendências usando o julgamento combinado de EMAs de vários períodos para evitar ser enganado pelo ruído de curto prazo do mercado.
O principal risco desta estratégia é a posição longa. Quando o mercado reverte, ele não é capaz de fechar posições a tempo, levando ao risco de expansão de perdas. Além disso, a fixação inadequada do período das EMAs também pode levar a negociações frequentes e aumentar os custos de transação.
Aumentar a gestão do tamanho das posições para reduzir as posições quando os drawdowns atingirem uma certa percentagem.
Aumentar as configurações de stop loss quando romper novos máximos.
Otimizar os parâmetros de período da EMA para reduzir a frequência de negociação.
Esta estratégia é, em geral, uma estratégia de detenção de longo prazo estável e de alta qualidade. Tem uma forte capacidade de identificar tendências com o controle adequado do risco. Com uma otimização adicional, espera-se obter retornos estáveis melhores.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Strategia EMA Long con Opzioni di Uscita Avanzate e Periodi EMA Personalizzabili", overlay=true) // Parametri di input generali useVolatilityFilter = input.bool(true, title="Usa Filtro di Volatilità") atrPeriods = input.int(14, title="Periodi ATR", minval=1) atrMultiplier = input.float(1.5, title="Moltiplicatore ATR", step=0.1) useTrailingStop = input.bool(true, title="Usa Trailing Stop") trailingStopPercent = input.float(15.0, title="Percentuale Trailing Stop", minval=0.1, step=0.1) / 100.0 useEMAExit = input.bool(true, title="Usa Uscita EMA Corta incrocia EMA Media al Ribasso") // Parametri di input per periodi EMA personalizzabili emaLongTermPeriod = input.int(200, title="Periodo EMA Lungo Termine", minval=1) emaShortTermPeriod = input.int(5, title="Periodo EMA Breve Termine", minval=1) emaMidTermPeriod = input.int(10, title="Periodo EMA Medio Termine", minval=1) // Calcolo delle EMA con periodi personalizzabili longTermEMA = ta.ema(close, emaLongTermPeriod) shortTermEMA = ta.ema(close, emaShortTermPeriod) midTermEMA = ta.ema(close, emaMidTermPeriod) // Calcolo ATR e soglia di volatilità atr = ta.atr(atrPeriods) atrThreshold = ta.sma(atr, atrPeriods) * atrMultiplier // Condizione di entrata enterLongCondition = close > longTermEMA and shortTermEMA > midTermEMA enterLong = useVolatilityFilter ? (enterLongCondition and atr > atrThreshold) : enterLongCondition if (enterLong) strategy.entry("Enter Long", strategy.long) // Tracking del prezzo di entrata e del massimo prezzo raggiunto per il trailing stop var float entryPrice = na var float maxPriceSinceEntry = na if (strategy.position_size > 0) maxPriceSinceEntry := math.max(na(maxPriceSinceEntry) ? high : maxPriceSinceEntry, high) entryPrice := na(entryPrice) ? strategy.position_avg_price : entryPrice else maxPriceSinceEntry := na entryPrice := na // Calcolo del valore del trailing stop trailStopPrice = maxPriceSinceEntry * (1 - trailingStopPercent) // Implementazione delle condizioni di uscita exitCrossUnder = close < longTermEMA emaCross = ta.crossunder(shortTermEMA, midTermEMA) if (useEMAExit and emaCross) strategy.close("Enter Long", comment="EMA Cross Exit") if (useTrailingStop) strategy.exit("Trailing Stop", from_entry="Enter Long", stop=trailStopPrice) // Visualizzazioni plot(longTermEMA, color=color.yellow, title="EMA Lungo Termine") plot(shortTermEMA, color=color.blue, title="EMA Breve Termine") plot(midTermEMA, color=color.green, title="EMA Medio Termine") plot(useVolatilityFilter ? atrThreshold : na, color=color.purple, title="ATR Threshold") plot(strategy.position_size > 0 ? trailStopPrice : na, color=color.orange, title="Trailing Stop Value", style=plot.style_linebr)