Dateioperationen
Plattformbenutzer äußern berechtigte Bedenken hinsichtlich des Startens von cBots und Indikatoren mit AccessRights.FullAccess. Dies gilt insbesondere dann, wenn kein Quellcode verfügbar ist, da es schwierig ist, mit Sicherheit zu wissen, welche Änderungen der Algorithmus am Dateisystem vornehmen wird. Im Leitfaden zu Zugriffsrechten haben wir bereits empfohlen, dass cBots und Indikatoren, die Sie mit anderen teilen, AccessRights.None erhalten sollten.
Dieser API-Leitfaden erklärt, wie Algorithmen mit eingeschränkten AccessRights sicher Operationen mit lokalen Dateien durchführen können.
Dateioperationen in einer Minute!
- Die Funktion für Dateioperationen ermöglicht es Algorithmen mit eingeschränkten Zugriffsrechten, nur innerhalb eines bestimmten Ordners mit Dateien und Ordnern zu arbeiten.
- Der Ordnername entspricht dem Namen des cBots oder Indikators.
- Alle anderen Verzeichnisse des Dateisystems des Benutzers bleiben sicher vor unbefugtem Zugriff geschützt.
- In der API wird die Funktion für Dateioperationen nur für .NET 6.0-Algorithmen unterstützt.
Regeln für Dateioperationen
Jeder Algorithmus mit eingeschränkten Zugriffsrechten darf Dateioperationen nur in einem bestimmten Ordner des Dateisystems des Benutzers durchführen. Jeder Algorithmustyp lokalisiert seinen eigenen Ordner wie unten gezeigt (z. B. cBots und Indikatoren), wobei für jeden Algorithmusnamen ein separater Ordner erstellt wird.
Documents
|-cAlgo
|-Data
|-cBots
|-${cBot Name}
|-Indicators
|-${Indicator Name}
Hinweis
Die Funktion für Dateioperationen ist nur für .NET 6.0-Algorithmen verfügbar.
Die folgenden Regeln bestimmen, wie die Funktion für Dateioperationen in der API funktioniert:
1. Jeder Algorithmus hat nur Zugriff auf den Ordner, der seinem Namen entspricht (einschließlich Unterordner, falls vorhanden).
2. Wenn kein entsprechender Ordner vorhanden ist, wird ein solcher Ordner im Dateisystem gemäß dem obigen Schema erstellt, wenn eine Instanz zum ersten Mal gestartet wird.
3. Wenn ein neuer Ordner nicht erstellt werden kann, startet der cBot oder Indikator nicht und ein Fehler wird gemeldet.
4. Im Algorithmuscode müssen Sie nicht den vollständigen Pfad zum entsprechenden Ordner angeben. Stattdessen verwenden Algorithmen einen relativen Pfad.
5. Der Namespace System.IO bietet eine Vielzahl von Klassen (File, FileInfo, Directory. DirectoryInfo, Path usw.), für die relevante Methoden aufgerufen werden können, um Operationen mit Dateien und Ordnern auszuführen.
Nachfolgend finden Sie einige Beispiele für die Methoden, die in den Klassen File und Directory enthalten sind.
| Methode | Beschreibung |
|---|---|
File.Create() | Erstellt oder überschreibt eine Datei im bestimmten Verzeichnis. |
File.WriteAllText() | Erstellt eine neue Datei, schreibt die angegebene Zeichenfolge in die Datei und schließt die Datei. |
File.Copy() | Kopiert die vorhandene Datei in eine neue Datei. Das Überschreiben einer Datei mit demselben Namen ist nicht zulässig. |
File.Delete() | Löscht eine Datei im bestimmten Verzeichnis. |
Directory.CreateDirectory() | Erstellt einen Ordner oder einen Unterordner. |
Directory.Delete() | Löscht einen Ordner oder einen Unterordner. |
Directory.Exists() | Überprüft, ob das angegebene Verzeichnis existiert. |
Directory.Move() | Verschiebt das vorhandene Verzeichnis in ein neues angegebenes Verzeichnis. |
Anwendungsfall
Beim Aufrufen der Methode TakeChartshot() müssen Sie nicht den vollständigen Pfad zum Zielverzeichnis nach File.WriteAllBytes angeben. Aufgrund der Funktion für Dateioperationen wird der Chartshot im relevanten Algorithmusverzeichnis gespeichert, selbst wenn die Zugriffsrechte AccessRights.None sind.
Erstellen Sie ein cBot-Beispiel
Das folgende cBot-Beispiel hat AccessRights.None, erstellt aber unmittelbar nach seiner Initialisierung eine Textdatei im entsprechenden Ordner mit dem Namen „File Access Test". Wenn eine erfolgreiche Market-Order platziert wird OnStart(), schreibt der cBot eine Positions-ID in die erstellte Datei.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | |
Dateiparameter
Der Parametertyp File ermöglicht es Algorithmen, Dateieingaben von Benutzern über die API zu akzeptieren. Er ermöglicht es Algorithmen, sicher aus einer vom Benutzer ausgewählten Datei auf dem lokalen Rechner zu lesen und in diese zu schreiben.
Wenn er in einem Algorithmus definiert ist:
- In der cTrader-Benutzeroberfläche wird der Parameter als Textfeld mit einer Schaltfläche Durchsuchen angezeigt, die einen Dateiauswahldialog öffnet.
- In cTrader CLI können Benutzer einen Dateipfad direkt als Parameterwert übergeben.
- Der Algorithmus erhält ein stark typisiertes
File-Objekt mit integrierten Lese- und Schreibmethoden.
Hinweis
Der Dateizugriff ist auf die vom Benutzer explizit bereitgestellte Datei beschränkt und gewährt keinen uneingeschränkten Zugriff auf das lokale Dateisystem.
Der Parametertyp File kann verwendet werden, um Folgendes in Algorithmen zu tun:
| Vorgang | Beispiele |
|---|---|
| Externe Dateneingabe | CSV- oder Textdateien lesen, benutzerdefinierte Datensätze laden. |
| Persistente Ausgabe | Protokolle in eine Datei schreiben, Ergebnisse exportieren. |
| Konfigurationsverwaltung | Externe Konfigurationsdateien laden, große Parametersätze verwalten. |
Um einen Dateiparameter zu definieren, deklarieren Sie eine Eigenschaft vom Typ File und versehen Sie sie mit dem Attribut [Parameter].
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
DefaultValue kann verwendet werden, um den Parameter mit einem Dateipfad vorab zu füllen, und der Typ File stellt eine Reihe von High-Level-Methoden für die Interaktion mit dem Dateiinhalt bereit. Sie können die gesamte Datei als Text oder als einzelne Zeilen lesen.
1 2 | |
Schreibvorgänge überschreiben den vorhandenen Dateiinhalt.
1 | |
Sie können Text oder mehrere Zeilen anhängen, ohne den vorhandenen Inhalt zu überschreiben.
1 2 | |
Vor der Durchführung von Vorgängen können Sie überprüfen, ob die Datei existiert.
1 2 3 4 | |
Zusammenfassung
Die Dateioperationsfunktion in der API ermöglicht es Algorithmen mit eingeschränkten Zugriffsrechten weiterhin, mit lokalen Dateien und Ordnern zu arbeiten. Sie können Methoden aus dem Namespace System.IO von C# verwenden, um zu programmieren, wie Algorithmen solche Operationen innerhalb der Grenzen des entsprechenden Ordners durchführen. Somit bleiben andere Verzeichnisse im Dateisystem des Benutzers vollständig geschützt, selbst wenn der Quellcode des Algorithmus nicht verfügbar ist.

