Die Strategie ist ein vollständiges Handelssystem, das die Kombination von doppelte Gleichgewicht-Kreuzsignale, Stop-Loss-Management und Zeitfilterung enthält. Der Kern der Strategie basiert auf der Kreuzung von schnellen und langsamen Index-Moving Averages (EMA), um Markttrends zu erfassen und Risiken zu kontrollieren, indem Sie Stop-Take-Profit- und Stop-Loss-Sätze einstellen. Die Strategie enthält auch eine Zeitfilterung, die es dem Händler ermöglicht, in einem bestimmten Zeitrahmen zu handeln.
Die Strategie basiert auf den folgenden Kernmechanismen:
Es handelt sich um eine gut konzipierte Trend-Tracking-Strategie, die den Händlern eine umfassende Handelslösung bietet, die durch die Kombination von Gleichgewichtssystem, Risikomanagement und Zeitfilterung. Die Strategie ist stark konfigurierbar und für Händler mit unterschiedlichen Risikopräferenzen geeignet.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Estrategia Cruce de EMAs con: Stop Loss, Take Profit, Días de Operación y Alertas (Modificables)", overlay=true, commission_value = 0.2, process_orders_on_close = true, initial_capital = 1000)
// Parámetros de las EMAs
emaRapidaLen = input.int(5, title="Periodo EMA rápida")
emaLentaLen = input.int(21, title="Periodo EMA lenta")
// Parámetros de Stop Loss y Take Profit
stopLoss = input.float(3.0, title="Stop Loss (%)", step=0.1) / 100
takeProfit = input.float(6.0, title="Take Profit (%)", step=0.1) / 100
// Tipo de operación: Largo, Corto o Ambos
operacion = input.string(title="Tipo de operación", defval="Largo", options=["Largo", "Corto", "Ambos"])
// Parámetros de la duración de la estrategia (días)
diasInicio = input(timestamp("2009-01-03 00:00"), title="Fecha de inicio (YYYY-MM-DD HH:MM)")
diasFin = input(timestamp("2024-09-11 00:00"), title="Fecha de fin (YYYY-MM-DD HH:MM)")
// Comprobar si estamos dentro del rango de días definido
dentroDeRango = true
// Cálculo de las EMAs
emaRapida = ta.ema(close, emaRapidaLen)
emaLenta = ta.ema(close, emaLentaLen)
// Condiciones para cruce de EMAs
cruceAlcista = ta.crossover(emaRapida, emaLenta)
cruceBajista = ta.crossunder(emaRapida, emaLenta)
// Operaciones en Largo (solo si estamos en el rango de días definido)
if dentroDeRango and (operacion == "Largo" or operacion == "Ambos") and cruceAlcista
strategy.entry("Compra", strategy.long)
alert("Posición larga abierta: Cruce alcista de EMAs", alert.freq_once_per_bar_close)
// Operaciones en Corto (solo si estamos en el rango de días definido)
if dentroDeRango and (operacion == "Corto" or operacion == "Ambos") and cruceBajista
strategy.entry("Venta", strategy.short)
alert("Posición corta abierta: Cruce bajista de EMAs", alert.freq_once_per_bar_close)
// Cálculo del Stop Loss y Take Profit para largos
if (strategy.position_size > 0 and strategy.opentrades.entry_id(strategy.opentrades - 1) == "Compra")
strategy.exit("Cerrar Compra", "Compra", stop=strategy.position_avg_price * (1 - stopLoss), limit=strategy.position_avg_price * (1 + takeProfit))
alert("Posición larga cerrada: Alcanzado Stop Loss o Take Profit", alert.freq_once_per_bar_close)
// Cálculo del Stop Loss y Take Profit para cortos
if (strategy.position_size < 0 and strategy.opentrades.entry_id(strategy.opentrades - 1) == "Venta")
strategy.exit("Cerrar Venta", "Venta", stop=strategy.position_avg_price * (1 + stopLoss), limit=strategy.position_avg_price * (1 - takeProfit))
alert("Posición corta cerrada: Alcanzado Stop Loss o Take Profit", alert.freq_once_per_bar_close)
// Plot de las EMAs
plot(emaRapida, color=color.blue, title="EMA rápida", linewidth = 2)
plot(emaLenta, color=color.red, title="EMA lenta", linewidth = 2)