cBot インスタンスがクラウドでスムーズに動作するためには、2 つの主要な要件を満たす必要があります。
コンパイル時参照
.NET で依存関係を扱う方法はいくつかあります。たとえば、依存関係を個別の .dll
ファイルとして提供し、プロジェクトの実行可能ファイルに直接含めることなく扱うことができます。
しかし、クラウドでの cBot 実行に完全に対応するのは、コンパイル時参照のみです。クラウドは、cBot 実行ファイル(.algo
ファイル)を管理する専用の環境として機能し、外部の .dll
ファイルは管理しません。
コンパイル時依存関係は、コードの先頭でライブラリを参照する場合に保証されます。しかし、コードの本体内でスタンドアロンの .dll
ファイルを参照する場合(たとえば、Assembly.Load()
メソッドを使用する場合)、この参照はコンパイル時ではなく、cBot はクラウドで関連する操作を実行しません。
クロスプラットフォーム依存関係の使用
クラウドは、Linux ベースの環境で cBot を実行します。つまり、外部依存関係を使用する場合、それらの依存関係はクロスプラットフォームでなければなりません。
例として、以下の依存関係は Windows 固有であるため、クラウドでは機能しません。
- WPF
- WinForms
- WinAPI
新しい依存関係をプロジェクトに追加する際には、そのドキュメントを読んで Linux ベースの環境でサポートされているかどうかを確認してください。
API 機能
クラウドでの cBot 実行とローカル実行では、いくつかの Algo API 機能が異なります。
機能/メソッド | クラウドでの動作 |
---|---|
MessageBox | 常に MessageBoxResult.None を返します。 |
Window | 常に無視されます。 |
Notifications.PlaySound() | 常に無視されます。 |
Account.UserNickName | 常に OnException() ハンドラーが呼び出されます。 |
Chart.TakeChartshot() | 常に null を返します。 |
WebSocketClient | ポート 25345 を介してサービスに接続する場合のみ機能します。 |
HTTP | HTTP リクエストは送信されません。 |
LocalStorage とファイル操作 | 相対パスが指定されている場合、または新しいディレクトリがゼロから作成される場合にのみ機能します。 |
ローカルストレージとファイル操作
クラウドインスタンスが停止または削除されると、そのクラウド内のリソースはすべて自動的に解放されます。cBot がファイルやディレクトリを作成し、そのデータにアクセスする場合、これらのファイルはインスタンスの再起動または削除時にすべて削除されます。