Problemas con la función CALL en ProBacktest
- This topic has 5 replies, 3 voices, and was last updated 1 year ago by .
Viewing 6 posts - 1 through 6 (of 6 total)
Viewing 6 posts - 1 through 6 (of 6 total)
Similar topics:
Forums › ProRealTime foro Español › Soporte ProOrder › Problemas con la función CALL en ProBacktest
Hola,
He creado un indicador personalizado para seguimiento de los MACD de 1 hora y 4 horas. Cuando lo utilizo en los gráficos funciona bien pero al llamarlo desde un sistema automático genera un error sin especificar información.
El código para llamar al indicador el cual no tiene parametros, es:
|
1 2 3 |
indicator1, indicator2 = CALL "MACD1-4" c1 = (indicator1[1] > 0.49) c2 = (indicator2[1] > 0.99) |
En el indicador personalizado, el return es lo siguiente:
|
1 |
Return val1 AS "1 Hour", val2 AS "4 Hour" |
El error que indica es:
El Backtest no puede iniciarse debido a un error de análisis en el código: línea 2, columna 0.
El tema es que si quito la función CALL el resto si que funciona así que el problema debe estar ahí.
Gracias por anticipado.
Hice algunas comprobaciones y parece que TIMEFRAME arroja el error cuando está en el archivo CALL, para ProBacktest.
Para probar, cambie el número de línea TIMEFRAME agregando líneas en blanco adicionales antes. El mensaje de error cambiará y apuntará a una nueva ubicación TIMEFRAME.
La imagen muestra un escenario básico y eso arroja un error.
Una solución es usar TIMEFRAME en el archivo ProBuilder y llamar a archivos/indicadores de código genérico y pasarles valores de variables de configuración. Para ello, es necesario configurar variables dinámicas en el archivo CALL.
Ver código e imagen. La solución alternativa es tener todo el código en el archivo proBacktest.
druby
|
1 2 3 4 5 6 7 |
// fileName test call V1.00 data // dynamic variables // lookback , integer, default = 1 avg = average[lookback](close) return avg |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
timeframe(5minute,updateonclose) avg5m = CALL "test call V1.00 data"[10] timeframe(1minute,updateonclose) avg1m = CALL "test call V1.00 data"[20] timeframe(default) cEnter = avg1m crosses over avg5m cExit = avg1m crosses under avg5m // Conditions to enter long positions IF NOT LongOnMarket AND cEnter THEN BUY 1 CONTRACTS AT MARKET ENDIF // Conditions to exit long positions If LongOnMarket AND cExit THEN SELL AT MARKET ENDIF |
Find exclusive trading pro-tools on 