// Definición de los parámetros del código
 
DEFPARAM CumulateOrders = False // Acumulación de posiciones desactivada
 
// El sistema anulará todas las órdenes pendientes y cerrará todas las posiciones a las 0:00. No se permitirá ninguna nueva orden ni posición después de la hora "FLATBEFORE".
 
DEFPARAM FLATBEFORE = 090000
 
// Anular todas las órdenes pendientes y cerrar todas las posiciones a la hora "FLATAFTER"
 
DEFPARAM FLATAFTER = 210000
 
// Impide al sistema crear nuevas órdenes para entrar al mercado a aumentar el tamaño de la posición antes de una hora precisa
 
noEntryBeforeTime = 090000
 
timeEnterBefore = Time >= noEntryBeforeTime
 
// Impide al sistema lanzar nuevas órdenes para entrar al mercado o aumentar el tamaño de la posición después de una hora precisa
 
noEntryAfterTime = 210000
 
timeEnterAfter = Time < noEntryAfterTime
 
// Impide al sistema operar en días precisos de la semana
 
daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
 
// ===== Variables =====
 
ValorRSI = 9
ValorEMA = 18
ValorMOM = 20
 
// ====== Constantes ======
 
MiSTOP   = 90
MiPROFIT = 60
 
//===== INDICADORES DE LA ESTRATEGIA ======
 
MIRSI      = RSI[ValorRSI](close)
MiEMA      = ExponentialAverage[ValorEMA](MiRSI)
MiMOM      = Momentum[ValorMOM]
MiESTO     = SMI[8,3,5](Close)
 
// ===== Condiciones para ejecutar la estrategia =====
 
Condicion1Larga = MiMOM[1]  < MiMOM
Condicion2Larga = MiESTO[1] < MiESTO
 
Condicion1Corta = MiMOM[1]  > MiMOM
Condicion2Corta = MiESTO[1] > MiESTO
 
// ****** Esta es la Estrategia ******
 
CruceLargo = MiRSI CROSSES OVER  MiEMA AND (Condicion1Larga AND Condicion2Larga)
CruceCorto = MiRSI CROSSES UNDER MiEMA AND (Condicion1Corta AND Condicion2Corta)
 
// Condiciones para entrada de posiciones largas
 
IF CruceLargo AND (timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry) THEN
BUY 1 SHARES AT MARKET
ENDIF
 
// Condiciones de salida de posiciones largas
 
IF CruceCorto THEN
SELL AT MARKET
ENDIF
 
// Condiciones de entrada de posiciones cortas
 
IF CruceCorto AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THEN
SELLSHORT 1 SHARES AT MARKET
ENDIF
 
// Condiciones de salida de posiciones cortas
 
 
IF CruceLargo THEN
EXITSHORT AT MARKET
ENDIF
 
// Stops y objetivos
 
SET STOP   $TRAILING MiSTOP
SET TARGET $PROFIT   MiPROFIT