• Тинькофф Банк-лучшие банковские продукты еще выгоднее
    Выбирайте продукт от банка Тинькофф
  • Уважаемые форумчане, друзья и посетители!
    Поступило предложение ( ссылка на обсуждение ) на сбор средств поддержания форума в рабочем состоянии с 1 июня ( оплата хостинга, бэкап ежедневный на другой хостинг и тд), отчетность будет предоставляться ежемесячно. Пока на ЮMoney ( яндекс деньги), доступно картой перевод, далее добавлю другие способы. Сумму перевода указывайте на ваш выбор исходя из своих возможностей.
    Форум продолжает свою работу благодаря Вашим пожертвованиям.

Как правильно использовать System.Threading в Ninja Scripts?

Evggne

New Member
NinjaTrader
Всем привет! Подскажите кто знает как правильно в стратегии запустить кусок кода в ещё одном потоке. Чтобы этот поток останавливался когда стратегию отключаешь и не стартовал каждый раз когда открываешь свойства стратегии.

Делаю так. Создаю необходимый метод, и его стартую в новом потоке в OnBarUpdate().
 
Вот такая ошибка выскакивает периодически:

Default Failed to execute DB job 'StrategyUpdateJob': Возникла ошибка при отражении типа "NinjaTrader.Strategy.Bot".: Не удается сериализовать член "NinjaTrader.Strategy.Bot.t1" типа "System.Threading.Thread". Дополнительные сведения см. во внутреннем исключении.: Невозможно сериализовать System.Threading.Thread, т. к. он не имеет беспараметрического конструктора.
 
Стартовать поток надо только один раз, полагаю, вы так и делаете. Останавливать, соответственно, можно в OnTermination(). В общем, для реализации многопоточности применяются те же принципы, что и в "чистом" C#.

Обратите внимание, что если вы планируете использовать инфраструктуру NinjaTrader из ваших потоков, то для корректной работы нужно задействовать механизм синхронизации. Для этих целей можно использовать метод, предлагаемый NinjaTrader: см. документацию по ключевому слову TriggerCustomEvent.
 
Назад
Верх Низ