cTraderがアルゴを実行する方法
cTraderは、各インジケーター/cBotをcTraderデスクトップのメインプロセスとは隔離された別のサブプロセスで実行します。これは、すべての新しいインジケーターとcBotのインスタンスが別々のプロセスで実行されることを意味します。
このアプローチにより、cTraderは別々のプロセスにコードアクセス制限を課すことができ、安全性と安定性が向上します。
さらに、別々のインジケーター/cBotプロセスは、メインのcTraderデスクトッププロセスとリソースを共有しません。インジケーターやcBotに何か問題が発生しても、その根本的な問題はcTrader自体には影響を与えません。
メソッドとスレッドの安全性
APIの中でスレッドセーフなメソッドはわずかで、どのスレッドからでも呼び出すことができます。それ以外のすべては、cBot/インジケーターのメインスレッドで実行する必要があります。
メインスレッドでのコードの実行
cBot/インジケーターのメインスレッドで何かを実行するには、BeginInvokeOnMainThread()
メソッドを使用します。このメソッドはアクションデリゲートを受け入れ、どのスレッドからでも呼び出すことができます。
インスタンス間でのデータ共有
各インジケーター/cBotインスタンスが単一の子プロセスで実行されるため、静的プロパティやフィールドを使用して、同じcBots/インジケーターの異なるインスタンス間でデータを共有することができます。