Trabajar con archivos en cTrader
En este artículo y su video correspondiente, explicaremos cómo puede trabajar con archivos en cTrader. En promedio, los usuarios se preocupan por ejecutar cBots o indicadores que solicitan derechos de acceso completos a su dispositivo. Especialmente cuando no hay código fuente disponible, es difícil saber qué está haciendo el algoritmo con estos permisos. Afortunadamente, cTrader proporciona varios métodos que permiten a los algoritmos acceder a archivos en su máquina local sin necesidad de permisos elevados.
Escribir en el directorio del algoritmo
cTrader permite a todos los algoritmos acceder a una carpeta con esta dirección:
C:/Users/{username}/Documents/cAlgo/Data/{algoType}
, donde algoType es cBots o Indicators.
Crearemos un cBot de ejemplo y demostraremos cómo puede acceder a este directorio programáticamente.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
Como de costumbre, guardamos y construimos el cBot, luego creamos su instancia.
Después de que la instancia se inicie, podemos navegar a la carpeta definida anteriormente. En ella, deberíamos ver el archivo Hello World.txt que contiene el texto que especificamos en nuestro código.
Leer desde el directorio del algoritmo
El siguiente paso es leer el contenido de un archivo ubicado en el directorio del algoritmo. Para hacerlo, podemos reescribir nuestro método OnStart() de la siguiente manera.
1 2 3 4 | |
Después de construir y lanzar nuestro cBot, veremos que el algoritmo imprime la cadena del archivo en el registro de cTrader.
Acceder a otros directorios
Tenga en cuenta que ninguna de las operaciones que nuestro cBot realizó anteriormente requirió proporcionarle derechos de acceso elevados. De hecho, los derechos de acceso se establecieron explícitamente en None a nivel de clase.
Intentaremos escribir en un archivo ubicado en un directorio diferente y veremos qué sucede. Modificaremos nuestro código para escribir en un archivo ubicado en el directorio raíz Documents.
1 2 3 4 | |
Una vez que construyamos y ejecutemos el cBot de nuevo, veremos una excepción lanzada en el registro que indica que no estamos autorizados para escribir en este directorio específico.
Para resolver esto, podemos volver al código del cBot y cambiar sus derechos de acceso de la siguiente manera.
1 | |
Construimos y ejecutamos el cBot. En lugar de lanzar una excepción, el bot ahora accederá al directorio especificado y escribirá en el archivo correcto.
Para una demostración más de cómo funcionan los derechos de acceso, modificaremos el método OnStart() de la siguiente manera.
1 2 3 4 | |
También estableceremos los derechos de acceso de vuelta a None.
1 | |
Después de que el cBot comience a ejecutarse, veremos que falla al leer desde el archivo.