← Назад

Шлюз не инициализирован в стратегии, являющейся дочерней.

ПРоблема стала возникла после того, как стратегия стала дочерной. Иногда ВОзникает ошибка о том, что Шлюз не инициализирован.

Пример. Запушена стратегия, произошла ошибка при регистрации. Вызван метод protected void AbortStop(string callingMethod) { this.Stop(); WriteDiagnostics("AbortStop-" + callingMethod); try { this.CancelActiveOrders(); } catch(Exception ex) { WriteDiagnostics("CancelActiveOrders " + ex.Message); } Console.Beep(); } CancelActiveOrders выдал исключение - Шлюз не инициализирован. Как так? Почему эта ошибка не выскочила раньше, при попытке регистрации заявки.И как воодше такое возможно, если Trader устанавливается в конструкторе?

Комментарии (6)

Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий

hobo
hobo

Проверяйте на ProcessState, если страта уже останавливается (не Started), то шлюз будет null

Alexander
Alexander

Trader устанавливается в null когда для стратегии вызывается DisposeManaged

vader
vader Автор

А в какой момент для стратегии вызывается DisposeManaged?

Alexander
Alexander

когда вы её удаляете :) это обычный Disposable объект

vader
vader Автор

Это происхлдит после вызова метода Stop()?

Alexander
Alexander

vader: Это происхлдит после вызова метода Stop()?

Да. При вызове Stop дочерние стратегии удаляются и, соответственно, для них вызывается Dispose. Следовательно, Trader становится null

Можете через флаг запретить удаление дочерних стратегий.