
A estratégia usa a linha de golden cross da EMA para gerar um sinal de negociação, ou seja, um sinal de compra quando a linha de EMA rápida atravessa a linha de EMA lenta e um sinal de venda quando a linha de EMA rápida atravessa a linha de EMA lenta. A estratégia é uma estratégia típica de acompanhamento de tendências. Ao mesmo tempo, a estratégia usa o indicador ATR para definir um ponto de parada dinâmico e, ao mesmo tempo, controlar o risco para garantir o lucro.
Solução:
A estratégia em geral é mais simples e fácil de usar, com base em EMA, gerando sinais, além de ser complementada com o indicador ATR para rastrear o stop loss, o que pode ser eficaz para controlar o risco. Embora haja algum sinal falso, a capacidade de capturar as principais tendências é forte, os rendimentos são mais estáveis e são adequados como uma das estratégias básicas de negociação quantitativa.
/*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)