
La estrategia es un sistema de negociación automática basado en una media móvil de múltiples índices (EMA) que establece señales de negociación mediante la división de los juicios de EMA de 5 períodos, 20 períodos y 50 períodos. La peculiaridad del diseño del sistema es que adopta juicios de EMA múltiples basados en los precios altos, bajos y cerrados, y combina un mecanismo de stop loss dinámico y un stop tracking para controlar el riesgo de manera efectiva y al mismo tiempo bloquear los beneficios.
La estrategia toma decisiones de negociación basadas en las relaciones de cruce y posición de EMA en múltiples períodos de tiempo. En concreto:
Se trata de un sistema de negociación de líneas medias múltiples rigurosamente diseñado para controlar eficazmente el riesgo a través de filtros estratificados y paros dinámicos. Aunque se pueden perder algunos movimientos rápidos, se puede mantener un rendimiento estable en un mercado de tendencia. Se recomienda ajustar los parámetros de manera adecuada según las diferentes características del mercado y considerar la inclusión de indicadores auxiliares como el volumen de transacción para mejorar la fiabilidad.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-03 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Automated EMA Strategy with Hierarchical Conditions", overlay=true)
// Inputs for EMA lengths
length_5 = 5
length_20 = 20
length_50 = 50
// Calculating EMAs
ema_5 = ta.ema(close, length_5)
ema_20_high = ta.ema(high, length_20)
ema_20_low = ta.ema(low, length_20)
ema_20_close = ta.ema(close, length_20)
ema_50 = ta.ema(close, length_50)
// Buy condition: 50 EMA < 20 EMA (Close) < 20 EMA (High) < 20 EMA (Low) < 5 EMA
// and LTP above all EMAs
buy_condition = ema_50 < ema_20_low and ema_20_low < ema_20_close and ema_20_close < ema_20_high and ema_20_high < ema_5 and close > ema_5 and close > ema_20_close and close > ema_20_high and close > ema_20_low and close > ema_50
// Stop-loss and target levels
stop_loss = ema_20_low
// Target condition: Close below 5 EMA
target_condition = close < ema_5
// Check if there's an open position
is_in_position = strategy.position_size > 0
// Execute Buy Signal only if no position is open
if (buy_condition and not is_in_position)
strategy.entry("Buy", strategy.long)
// Exit conditions: Stop-loss or target (close below 5 EMA)
if (is_in_position and (target_condition or close < stop_loss))
strategy.close("Buy")
// Plotting the EMAs
plot(ema_5, color=color.blue, title="5 EMA")
plot(ema_20_high, color=color.green, title="20 EMA (High)")
plot(ema_20_low, color=color.red, title="20 EMA (Low)")
plot(ema_20_close, color=color.purple, title="20 EMA (Close)")
plot(ema_50, color=color.orange, title="50 EMA")