Walk Forward con indicadores propios
Forums › ProRealTime foro Español › Soporte ProOrder › Walk Forward con indicadores propios
- This topic has 18 replies, 3 voices, and was last updated 5 years ago by Nicolas.
-
-
06/14/2019 at 2:54 PM #100670
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
06/14/2019 at 2:55 PM #100671¿Puedes publicar el código que usaste para probarlo?
06/14/2019 at 3:02 PM #100673Si claro Roberto no es ningún secreto
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384// Definición de los parámetros del códigoDEFPARAM CumulateOrders = False // Acumulación de posiciones desactivadaDEFPARAM FLATBEFORE = 070000DEFPARAM FLATAFTER = 230000noEntryBeforeTime = 070000timeEnterBefore = 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 precisanoEntryAfterTime = 230000timeEnterAfter = Time < noEntryAfterTime// Impide al sistema operar en días precisos de la semanadaysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0// ===== Variables =====//ValorRSI = 7//ValorEMA = 5EMABollinger = 24NumeroDeContratos = 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] < MiSMIESTOBajando = 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 largasIF CruceLargo AND (timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry) THENBUY NumeroDeContratos SHARES AT MARKETENDIF// Condiciones de salida de posiciones largasIF CruceCorto THENSELL AT MARKETENDIF// Condiciones de entrada de posiciones cortasIF CruceCorto AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THENSELLSHORT NumeroDeContratos SHARES AT MARKETENDIF// Condiciones de salida de posiciones cortasIF CruceLargo THENEXITSHORT AT MARKETENDIF// Stops y objetivosSET STOP $TRAILING MiSTOPSET TARGET $PROFIT MiPROFIT06/14/2019 at 4:17 PM #100683Para escribir el código , utilice el botón <> “insert PRT code”
Gracias.
06/14/2019 at 4:19 PM #100684Parece 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:
1GRAPH MiEMA¡Y nada será tramado!
06/14/2019 at 8:47 PM #10069406/14/2019 at 9:34 PM #100698Sé que no funciona. Se ha enviado un informe de error a PRT, debemos esperar su respuesta (lo que puede llevar algún tiempo).
06/14/2019 at 9:36 PM #10070006/15/2019 at 8:51 AM #100709Parece 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:
1MiEMA = WeightedAverage[ValorEMA](MIRSI) //wma1MiEMA = Average[ValorEMA, 2](MIRSI) // wma1MiEMA = Average[ValorEMA](MIRSI) // sma¡Todo funciona bien! Pero todavía estamos esperando una respuesta de PRT.
06/15/2019 at 3:05 PM #10074806/17/2019 at 8:52 AM #100849Hola 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.
06/17/2019 at 4:41 PM #10089306/19/2019 at 8:17 AM #10101006/19/2019 at 2:08 PM #101054Intente reemplazar las líneas 41-42 con estas (es una versión personalizada del Promedio Móvil Exponencial):
12345678910111213141516// customized EMAPeriods = ValorEMAAlpha = 2 / (Periods + 1)i = 0TREMA = MiRSIFOR j = 0 TO Periodsi = i + 1TREMA = ((MiRSI[j] - TREMA) * Alpha) + TREMAIF i = Periods THENBREAKENDIFNEXTIF TREMA = 0 THENTREMA = MiRSIENDIFMiEMA = TREMA//ExponentialAverage[ValorEMA](MiRSI)06/21/2019 at 7:34 AM #101125 -
AuthorPosts
Find exclusive trading pro-tools on