
Esta estratégia é feita através da computação de uma média móvel do índice de um ciclo rápido EMA e um ciclo lento EMA, e é traçada no gráfico, monitorando em tempo real a sua intersecção, para determinar a mudança de tendência de preços. Combinado com o RSI, o indicador de supera compra evita falsos sinais de supera venda, formando um sinal de negociação. Quando o EMA rápido se eleva, ele gera um sinal de compra; Quando o EMA rápido se abaixa, ele gera um sinal de venda.
A estratégia é clara em termos gerais, usando a EMA para determinar a tendência de mudança, combinada com o sinal de filtragem do indicador RSI, para capturar efetivamente a tendência de linha média. No entanto, a estratégia de ajuste e parada de perda dos parâmetros EMA e RSI ainda precisa ser otimizada e corre o risco de perder o ponto de reversão e o mercado de choque. Se a otimização dos parâmetros e o controle do risco estiverem em vigor, a estratégia pode ser usada para descobrir o ponto de reversão da tendência de linha média e tomar decisões de investimento.
/*backtest
start: 2022-12-18 00:00:00
end: 2023-12-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Trend Change with EMA Entry/Exit - Intraday", overlay=true)
// Define the fast and slow EMA periods
fast_ema_period = input(10, title="Fast EMA Period")
slow_ema_period = input(50, title="Slow EMA Period")
// Calculate the EMAs
ema_fast = ta.ema(close, fast_ema_period)
ema_slow = ta.ema(close, slow_ema_period)
// Plot the EMAs on the chart
plot(ema_fast, title="Fast EMA", color=color.blue, linewidth=2)
plot(ema_slow, title="Slow EMA", color=color.orange, linewidth=2)
// Detect trend changes (crossovers and crossunders)
is_uptrend = ta.crossover(ema_fast, ema_slow)
is_downtrend = ta.crossunder(ema_fast, ema_slow)
// Relative Strength Index (RSI)
rsi_length = input(14, title="RSI Length")
overbought_level = input(70, title="Overbought Level")
oversold_level = input(30, title="Oversold Level")
rsi_value = ta.rsi(close, rsi_length)
// Trend Filter
is_trending = ta.change(is_uptrend) != 0 or ta.change(is_downtrend) != 0
// Entry and Exit signals
enter_long = is_uptrend and rsi_value < overbought_level and is_trending
exit_long = is_downtrend and is_trending
enter_short = is_downtrend and rsi_value > oversold_level and is_trending
exit_short = is_uptrend and is_trending
strategy.entry("Buy", strategy.long, when=enter_long)
strategy.close("Buy", when=exit_long)
strategy.entry("Sell", strategy.short, when=enter_short)
strategy.close("Sell", when=exit_short)