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

Шлюз не инициализирован в стратегии, являющейся дочерней.
Atom
20.03.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 устанавливается в конструкторе?

Теги:


Спасибо:


hobo

Фотография
Дата: 20.03.2012
Ответить


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

Alexander

Фотография
Дата: 20.03.2012
Ответить


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

vader

Фотография
Дата: 21.03.2012
Ответить


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

Alexander

Фотография
Дата: 21.03.2012
Ответить


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

vader

Фотография
Дата: 21.03.2012
Ответить


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

Alexander

Фотография
Дата: 21.03.2012
Ответить


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


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

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


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy