Praca z plikami w cTrader
W tym artykule i odpowiadającym mu filmie wyjaśnimy, jak można pracować z plikami w cTrader. Przeciętnie użytkownicy obawiają się uruchamiania cBotów lub wskaźników żądających pełnych praw dostępu do ich urządzenia. Zwłaszcza gdy kod źródłowy nie jest dostępny, trudno jest wiedzieć, co algorytm robi z tymi uprawnieniami. Na szczęście cTrader udostępnia kilka metod, które umożliwiają algorytmom dostęp do plików na komputerze lokalnym bez konieczności posiadania podwyższonych uprawnień.
Zapisywanie w katalogu algorytmu
cTrader umożliwia wszystkim algorytmom dostęp do folderu o tym adresie:
C:/Users/{username}/Documents/cAlgo/Data/{algoType}
, gdzie algoType to cBots lub Indicators.
Utworzymy przykładowego cBota i pokażemy, jak można uzyskać dostęp do tego katalogu programowo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
Jak zwykle zapisujemy i kompilujemy cBota, a następnie tworzymy jego instancję.
Po uruchomieniu instancji możemy przejść do folderu zdefiniowanego powyżej. W nim powinniśmy zobaczyć plik Hello World.txt zawierający tekst, który określiliśmy w naszym kodzie.
Odczytywanie z katalogu algorytmu
Następnym krokiem jest odczytanie zawartości pliku znajdującego się w katalogu algorytmu. Aby to zrobić, możemy przepisać naszą metodę OnStart() w następujący sposób.
1 2 3 4 | |
Po skompilowaniu i uruchomieniu naszego cBota zobaczymy, że algorytm drukuje ciąg znaków z pliku do dziennika cTrader.
Dostęp do innych katalogów
Należy zauważyć, że żadna z operacji wykonywanych wcześniej przez naszego cBota nie wymagała zapewnienia mu podwyższonych praw dostępu. W rzeczywistości prawa dostępu zostały wyraźnie ustawione na None na poziomie klasy.
Spróbujemy zapisać do pliku znajdującego się w innym katalogu i zobaczymy, co się stanie. Zmodyfikujemy nasz kod, aby zapisywać do pliku znajdującego się w głównym katalogu Documents.
1 2 3 4 | |
Po ponownym skompilowaniu i uruchomieniu cBota zobaczymy wyjątek zgłoszony w dzienniku wskazujący, że nie mamy uprawnień do zapisu w tym konkretnym katalogu.
Aby to rozwiązać, możemy wrócić do kodu cBota i zmienić jego prawa dostępu w następujący sposób.
1 | |
Kompilujemy i uruchamiamy cBota. Zamiast zgłaszać wyjątek, bot uzyska teraz dostęp do określonego katalogu i zapisze do właściwego pliku.
Aby jeszcze raz zademonstrować, jak działają prawa dostępu, zmodyfikujemy metodę OnStart() w następujący sposób.
1 2 3 4 | |
Ustawimy również prawa dostępu z powrotem na None.
1 | |
Po uruchomieniu cBota zobaczymy, że nie udaje mu się odczytać z pliku.