ПРоблема стала возникла после того, как стратегия стала дочерной. Иногда ВОзникает ошибка о том, что Шлюз не инициализирован.
Пример. Запушена стратегия, произошла ошибка при регистрации. Вызван метод 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)
登录 或 创建账户, 登录或注册以发表评论
Проверяйте на ProcessState, если страта уже останавливается (не Started), то шлюз будет null
Trader устанавливается в null когда для стратегии вызывается DisposeManaged
А в какой момент для стратегии вызывается DisposeManaged?
когда вы её удаляете :) это обычный Disposable объект
Это происхлдит после вызова метода Stop()?
Да. При вызове Stop дочерние стратегии удаляются и, соответственно, для них вызывается Dispose. Следовательно, Trader становится null
Можете через флаг запретить удаление дочерних стратегий.