Esta estratégia usa a cruz de ouro da EMA para gerar sinais de negociação, ou seja, um sinal de compra é gerado quando a linha rápida da EMA cruza acima da linha lenta da EMA, e um sinal de venda é gerado quando a linha rápida da EMA cruza abaixo da linha lenta da EMA. Ela pertence a uma estratégia típica de tendência. Ao mesmo tempo, a estratégia usa o indicador ATR para definir um stop loss dinâmico para controlar riscos, garantindo lucros.
Soluções:
A estratégia é relativamente simples e fácil de usar. Ela gera sinais baseados em crossovers da EMA, segue a tendência e usa o ATR para controlar os riscos de forma eficaz. Embora possa haver alguns sinais falsos, ela tem fortes capacidades para capturar as principais tendências e os retornos são relativamente estáveis.
/*backtest start: 2022-12-04 00:00:00 end: 2023-12-10 00:00:00 period: 1d basePeriod: 1h 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/ // © byee322 /// This strategy uses the EMA to generate buy and sell signals with a 1.5x ATR stop loss //@version=5 strategy("EMA Strategy with ATR Stop Loss", overlay=true) // Define the EMA lengths as input parameters emaLength1 = input(13, "EMA Length 1") emaLength2 = input(48, "EMA Length 2") // Define the moving averages ema1 = ta.ema(close, emaLength1) ema2 = ta.ema(close, emaLength2) // Buy signal: EMA 1 crosses above EMA 2 buy = ta.crossover(ema1, ema2) // Sell signal: EMA 1 crosses below EMA 2 sell = ta.crossunder(ema1, ema2) // Define the state variable state = 0 state := buy ? 1 : sell ? -1 : nz(state[1]) // Change the color of the candles color = state == 1 ? color.green : state == -1 ? color.red : na // Plot the colored candles plotcandle(open, high, low, close, color=color) // Plot the signals on the chart with text labels plotshape(buy, style=shape.triangleup, color=color.new(color.green, 50), location=location.belowbar, text="Buy") plotshape(sell, style=shape.triangledown, color=color.new(color.red, 50), location=location.abovebar, text="Sell") // Calculate the ATR atrVal = ta.atr(14) // Calculate the stop loss level for buy stopLossBuy = buy ? close[1] - 1.5 * atrVal : na // Calculate the stop loss level for sell stopLossSell = sell ? close[1] + 1.5 * atrVal : na // Plot the stop loss level for buy plot(stopLossBuy, color=color.new(color.green, 50), linewidth=3) // Plot the stop loss level for sell plot(stopLossSell, color=color.new(color.red, 50), linewidth=3) if buy strategy.entry("Enter Long", strategy.long) else if sell strategy.entry("Enter Short", strategy.short)