
La estrategia es una estrategia de seguimiento de la tendencia basada en el movimiento medio del índice de múltiples marcos temporales (EMA) y el filtro de EMA de 200 días. Su principal idea es utilizar EMA de diferentes marcos temporales para identificar la dirección de la tendencia del mercado y establecer una posición múltiple cuando la tendencia es ascendente y el precio está por encima de la EMA de 200 días.
La estrategia utiliza tres marcos de tiempo de 5 minutos, 15 minutos y 30 minutos para calcular el EMA rápido y el EMA lento respectivamente. Al comparar el EMA rápido y el EMA lento de cada marco de tiempo, se puede determinar la dirección de la tendencia en ese marco de tiempo. Luego, se suman las señales de tendencia de los tres marcos de tiempo para obtener una señal de tendencia integral.
La estrategia determina la dirección de la tendencia mediante la comparación de EMAs en varios marcos de tiempo, y utiliza EMAs de 200 como filtro de tendencia, estableciendo múltiples posiciones para capturar la tendencia a la alza cuando la tendencia es claramente ascendente y el precio está por encima de la media a largo plazo. Las condiciones de apertura de posición estrictas y los paros de pérdida fijos ayudan a controlar el riesgo. Sin embargo, la estrategia puede reaccionar más lentamente a los puntos de cambio de tendencia y la posición de los paros de pérdida es fija y tiene limitaciones en respuesta a las fluctuaciones repentinas del mercado. En el futuro, la adaptabilidad y la solidez de las estrategias se pueden mejorar mediante la introducción de más marcos de tiempo, la optimización de los stop-loss, la adición de más señales de negociación y la optimización de parámetros, lo que les permite aprovechar mejor las oportunidades de mercado y controlar los riesgos.
/*backtest
start: 2023-05-17 00:00:00
end: 2024-05-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Multi-Timeframe Trend Following with 200 EMA Filter - Longs Only", shorttitle="MTF_TF_200EMA_Longs", overlay=true, initial_capital=1000, default_qty_type=strategy.fixed, default_qty_value=1)
// Inputs
fast_length = input.int(9, title="Fast EMA Length", minval=1)
slow_length = input.int(21, title="Slow EMA Length", minval=1)
filter_length_200 = input.int(200, title="200 EMA Length", minval=1)
stop_loss_perc = input.float(1.0, title="Stop Loss Percentage", minval=0.1) / 100
take_profit_perc = input.float(3.0, title="Take Profit Percentage", minval=0.1) / 100
// Calculate EMAs for 5-minute, 15-minute, and 30-minute timeframes
ema_fast_5min = request.security(syminfo.tickerid, "5", ta.ema(close, fast_length), lookahead=barmerge.lookahead_on)
ema_slow_5min = request.security(syminfo.tickerid, "5", ta.ema(close, slow_length), lookahead=barmerge.lookahead_on)
ema_fast_15min = request.security(syminfo.tickerid, "15", ta.ema(close, fast_length), lookahead=barmerge.lookahead_on)
ema_slow_15min = request.security(syminfo.tickerid, "15", ta.ema(close, slow_length), lookahead=barmerge.lookahead_on)
ema_fast_30min = request.security(syminfo.tickerid, "30", ta.ema(close, fast_length), lookahead=barmerge.lookahead_on)
ema_slow_30min = request.security(syminfo.tickerid, "30", ta.ema(close, slow_length), lookahead=barmerge.lookahead_on)
// Calculate 200 EMA for the 5-minute timeframe
ema_200_5min = ta.ema(close, filter_length_200)
// Determine the trend for each timeframe
trend_5min = ema_fast_5min > ema_slow_5min ? 1 : -1
trend_15min = ema_fast_15min > ema_slow_15min ? 1 : -1
trend_30min = ema_fast_30min > ema_slow_30min ? 1 : -1
// Combine trend signals
combined_trend = trend_5min + trend_15min + trend_30min
// Define entry and exit conditions with 200 EMA filter
enter_long = combined_trend == 3 and close > ema_200_5min
exit_long = combined_trend < 3 or close < ema_200_5min
// Plot EMAs for the 5-minute timeframe
plot(ema_fast_5min, color=color.blue, linewidth=2, title="Fast EMA 5min")
plot(ema_slow_5min, color=color.red, linewidth=2, title="Slow EMA 5min")
plot(ema_200_5min, color=color.green, linewidth=2, title="200 EMA 5min")
// Strategy execution
if (enter_long)
strategy.entry("Long", strategy.long, stop=close * (1 - stop_loss_perc), limit=close * (1 + take_profit_perc))
if (exit_long)
strategy.close("Long")