← Voltar

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

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

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

Este tópico foi útil?

Compartilhar tópico

Comentários (6)

Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário

hobo
hobo

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

Alexander
Alexander

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

vader
vader Autor

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

Alexander
Alexander

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

vader
vader Autor

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

Alexander
Alexander

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

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

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