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

Шлюз не инициализирован в стратегии, являющейся дочерней.
Atom
3/20/2012
vader


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

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

Tags:


Thanks:


hobo

Avatar
Date: 3/20/2012
Reply


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

Alexander

Avatar
Date: 3/20/2012
Reply


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

vader

Avatar
Date: 3/21/2012
Reply


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

Alexander

Avatar
Date: 3/21/2012
Reply


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

vader

Avatar
Date: 3/21/2012
Reply


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

Alexander

Avatar
Date: 3/21/2012
Reply


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


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

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


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy