Zum Inhalt

Anforderungen für cBots

Es gibt zwei Hauptanforderungen, die Sie erfüllen müssen, um sicherzustellen, dass Ihre cBot-Instanzen reibungslos in der Cloud ausgeführt werden können: Compile-Time-Referenzen und plattformübergreifende Abhängigkeiten.

Kompilierzeitverweise

Es gibt mehrere Möglichkeiten, mit Abhängigkeiten in .NET zu arbeiten. Sie können beispielsweise Abhängigkeiten als einzelne .dll-Dateien bereitstellen, ohne sie direkt in Ihre Projektausführungsdatei einzubeziehen.

Allerdings sind nur Kompilierzeitverweise vollständig mit der Ausführung von cBots in der Cloud kompatibel. Die Cloud fungiert als dedizierte Umgebung, die die cBot-Ausführungsdatei (die .algo-Datei) ausführt, ohne externe .dll-Dateien zu verwalten.

Kompilierzeitabhängigkeiten sind in allen Fällen gewährleistet, in denen Sie eine Bibliothek in den using-Anweisungen am Anfang Ihres Codes referenzieren. Wenn Sie jedoch eine eigenständige .dll-Datei innerhalb des Hauptteils Ihres Codes referenzieren (z. B. über die Assembly.Load()-Methode), ist dieser Verweis nicht zur Kompilierzeit vorhanden, und Ihr cBot führt keine zugehörigen Operationen in der Cloud aus.

Plattformübergreifende Abhängigkeiten

Cloud führt alle cBots in einer Linux-basierten Umgebung aus. Das bedeutet, dass externe Abhängigkeiten plattformübergreifend sein müssen, wenn Sie sie verwenden möchten.

Zur Veranschaulichung finden Sie hier einige Abhängigkeiten, die in der Cloud nicht funktionieren, da sie spezifisch für Windows sind.

  • WPF
  • WinForms
  • WinAPI

Wenn Sie eine neue Abhängigkeit zu Ihrem Projekt hinzufügen, lesen Sie die Dokumentation, um zu erfahren, ob sie in Linux-basierten Umgebungen unterstützt wird.

API-Funktionen

Es gibt mehrere Algo-API-Funktionen, die in der Cloud im Vergleich zur lokalen Ausführung anders funktionieren.

Funktion/Methode Funktionsweise in der Cloud
MessageBox Gibt immer MessageBoxResult.None zurück
Window Wird immer ignoriert
Notifications.PlaySound() Wird immer ignoriert
Account.UserNickName Ruft immer den OnException()-Handler auf
Chart.TakeChartshot() Gibt immer null zurück
WebSocketClient Funktioniert nur, wenn Sie über Port 25345 eine Verbindung zu einem Dienst herstellen
HTTP Es werden keine HTTP-Anfragen gesendet
LocalStorage und Dateioperationen Funktioniert nur, wenn relative Pfade angegeben oder neue Verzeichnisse von Grund auf neu erstellt werden

Lokaler Speicher und Dateioperationen

Wenn eine Cloud-Instanz gestoppt oder gelöscht wird, werden alle ihr innerhalb der Cloud zugewiesenen Ressourcen automatisch freigegeben. Wenn Ihr cBot Dateien oder Verzeichnisse erstellt und dann auf Daten daraus zugreift, werden diese Dateien bei jedem Neustart oder jeder Löschung der Instanz gelöscht.

Image title