cTrader에서 파일 작업하기
이 글과 해당 동영상에서는 cTrader에서 파일을 작업하는 방법을 설명하겠습니다. 일반적으로 사용자들은 자신의 장치에 대한 전체 액세스 권한을 요청하는 cBot 또는 지표를 실행하는 것에 대해 우려합니다. 특히 소스 코드가 없는 경우 알고리즘이 이러한 권한으로 무엇을 하는지 알기 어렵습니다. 다행히 cTrader는 알고리즘이 로컬 머신의 파일에 액세스할 수 있도록 여러 방법을 제공하며, 이는 높은 권한을 필요로 하지 않습니다.
알고리즘 디렉토리에 쓰기
cTrader는 모든 알고리즘이 다음 주소의 폴더에 액세스할 수 있도록 합니다:
C:/Users/{username}/Documents/cAlgo/Data/{algoType}
, 여기서 algoType은 cBots 또는 Indicators입니다.
예제 cBot을 생성하고 이 디렉토리에 프로그래밍 방식으로 액세스하는 방법을 시연하겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
일반적으로 cBot을 저장하고 빌드한 후 인스턴스를 생성합니다.
인스턴스가 시작된 후 위에서 정의한 폴더로 이동할 수 있습니다. 그 안에는 코드에서 지정한 텍스트를 포함한 Hello World.txt 파일이 있어야 합니다.
알고리즘 디렉토리에서 읽기
다음 단계는 알고리즘 디렉토리에 있는 파일의 내용을 읽는 것입니다. 이를 위해 OnStart() 메서드를 다음과 같이 다시 작성할 수 있습니다.
1 2 3 4 | |
cBot을 빌드하고 실행한 후 알고리즘이 파일에서 문자열을 읽어 cTrader 로그에 출력하는 것을 볼 수 있습니다.
다른 디렉토리 액세스
이전에 cBot이 수행한 작업 중 어느 것도 높은 액세스 권한을 제공할 필요가 없었습니다. 사실, 클래스 수준에서 액세스 권한이 None으로 명시적으로 설정되었습니다.
이제 다른 디렉토리에 있는 파일에 쓰기를 시도하고 어떤 일이 발생하는지 살펴보겠습니다. 코드를 수정하여 Documents 루트 디렉토리에 있는 파일에 쓰도록 하겠습니다.
1 2 3 4 | |
cBot을 다시 빌드하고 실행하면 이 특정 디렉토리에 쓰기 권한이 없음을 나타내는 예외가 로그에 발생합니다.
이 문제를 해결하기 위해 cBot 코드로 돌아가 액세스 권한을 다음과 같이 변경할 수 있습니다.
1 | |
cBot을 빌드하고 실행합니다. 예외를 던지는 대신 이제 봇은 지정된 디렉토리에 액세스하고 올바른 파일에 씁니다.
액세스 권한이 어떻게 작동하는지 한 번 더 시연하기 위해 OnStart() 메서드를 다음과 같이 수정하겠습니다.
1 2 3 4 | |
또한 액세스 권한을 다시 None으로 설정하겠습니다.
1 | |
cBot이 실행을 시작한 후 파일에서 읽기를 실패하는 것을 볼 수 있습니다.