RafaParticipant
Senior
Hola a todos,
Tengo una duda porque no consigo hacer que funcione. En otro post he escrito acerca de el RSI normalizado, quiero hacer un walk foward y los resultados que me aparecen son todos 0.
Hay alguna limitación para esto? se puede hacer?
Muchas gracias
¿Puedes publicar el código que usaste para probarlo?
RafaParticipant
Senior
Si claro Roberto no es ningún secreto
// Definición de los parámetros del código
DEFPARAM CumulateOrders = False // Acumulación de posiciones desactivada
DEFPARAM FLATBEFORE = 070000
DEFPARAM FLATAFTER = 230000
noEntryBeforeTime = 070000
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 = 230000
timeEnterAfter = Time < noEntryAfterTime
// Impide al sistema operar en días precisos de la semana
daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
// ===== Variables =====
//ValorRSI = 7
//ValorEMA = 5
EMABollinger = 24
NumeroDeContratos = 1
// ====== Constantes ======
//MiSTOP = 90
//MiPROFIT = 110
// ********* A PARTIR DE AQUÍ NO SE TOCA EL CÓDIGO ***********
//===== INDICADORES DE LA ESTRATEGIA ======
MIRSI = CALL “NormalizedRSI”[ValorRSI,EMABollinger]
MiEMA = ExponentialAverage[ValorEMA](MiRSI)
MiSMI = CALL NormalizedSMI[EMABollinger]
// ===== Condiciones para ejecutar la estrategia =====
ESTOSubiendo = MiSMI[1] < MiSMI
ESTOBajando = MiSMI[1] > MiSMI
// ****** Esta es la Estrategia ******
CruceLargo = MiRSI CROSSES OVER MiEMA AND (ESTOSubiendo)
CruceCorto = MiRSI CROSSES UNDER MiEMA AND (ESTOBajando )
// Condiciones para entrada de posiciones largas
IF CruceLargo AND (timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry) THEN
BUY NumeroDeContratos 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 NumeroDeContratos 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
Para escribir el código , utilice el botón <> “insert PRT code”
Gracias.
Parece que hay un problema en la línea 41 y no puedo entender por qué, así que necesito probar nuevamente. Intenta agregar esta última línea:
GRAPH MiEMA
¡Y nada será tramado!
RafaParticipant
Senior
Muchas gracias Roberto pero no me funciona
Sé que no funciona. Se ha enviado un informe de error a PRT, debemos esperar su respuesta (lo que puede llevar algún tiempo).
RafaParticipant
Senior
Ah perdón, había entendido mal. Muchas gracias por tu ayuda!
Parece que el problema se relaciona solo con el cálculo del MEDIO EXPONENCIAL (ya sea mediante el uso de ExponentialAverage o del Average[n, 1]) usando MiRSI, porque si reemplaza la línea 41 por:
MiEMA = WeightedAverage[ValorEMA](MIRSI) //wma
MiEMA = Average[ValorEMA, 2](MIRSI) // wma
MiEMA = Average[ValorEMA](MIRSI) // sma
¡Todo funciona bien! Pero todavía estamos esperando una respuesta de PRT.
RafaParticipant
Senior
Grazzie mile!! Roberto…
Yo todavía soy un newbie, así que en estos temas no puedo ayudar porque no se
Un saludo fuerte
Hola rafa. ¿Podrías adjuntar el archivo .itf de tu estrategia en tu próxima publicación para poder replicar el problema de manera idéntica a la tuya? (¡Y para descubrir por qué los promedios móviles no se calculan correctamente!). Gracias por adelantado.
RafaParticipant
Senior
Perdona Nicolás,
Ya sabes que soy un novato en esto y necesito práctica.
Un saludo
Hice un informe técnico sobre esta cuestión, esta mañana.
Intente reemplazar las líneas 41-42 con estas (es una versión personalizada del Promedio Móvil Exponencial):
// customized EMA
Periods = ValorEMA
Alpha = 2 / (Periods + 1)
i = 0
TREMA = MiRSI
FOR j = 0 TO Periods
i = i + 1
TREMA = ((MiRSI[j] - TREMA) * Alpha) + TREMA
IF i = Periods THEN
BREAK
ENDIF
NEXT
IF TREMA = 0 THEN
TREMA = MiRSI
ENDIF
MiEMA = TREMA//ExponentialAverage[ValorEMA](MiRSI)
RafaParticipant
Senior
Muchas gracias Roberto,
Eso por ahora es muy avanzado para mi jejeje
Un abrazo fuerte