Перейти к содержанию

Потокобезопасность

Как cTrader запускает алгоритмы

cTrader запускает каждый индикатор или сиБота в отдельном подпроцессе, изолированном от основного процесса cTrader Windows. Это означает, что все новые экземпляры индикаторов и сиБотов работают в отдельных процессах.

Такой подход позволяет cTrader налагать ограничения доступа к коду на отдельные процессы, повышая безопасность и стабильность.

Кроме того, отдельные процессы индикаторов или сиБотов не разделяют свои ресурсы с основным процессом cTrader Windows. Если что-то пойдет не так с индикатором или сиБотом, основная проблема не повлияет на сам cTrader.

Методы и потокобезопасность

Только несколько методов в API являются потокобезопасными, то есть вы можете вызывать их из любого потока. Все остальное должно выполняться в основном потоке сиБота или индикатора.

Выполнение кода в основном потоке

Чтобы запустить что-либо в основном потоке сиБота или индикатора, используйте метод BeginInvokeOnMainThread(). Он принимает делегат действия, и вы можете вызвать его из любого запущенного потока.

Обмен данными между экземплярами

Поскольку каждый экземпляр индикатора или сиБота работает в одном дочернем процессе, вы можете использовать статические свойства или поля для обмена данными между различными экземплярами одного и того же сиБота или индикатора.