Ошибка: котирование порождает несколько выполненных заявок

Ошибка: котирование порождает несколько выполненных заявок
Atom
11/10/2011
Camill


Проблема проявляется даже стандартном примере SampleHistoryTesting. Для обнаружения в OnProcess достаточно добавить

if (Math.Abs(PositionManager.Position) > Volume)
  throw new Exception("Неверное состояние - поза превышает рабочий объем.");

и после получения эксепшена посмотреть Trader.Orders - последние две заявки будут исполненными, а перед ними будет несколько отмененных с примерно тем же временем.

Ошибка плавающая, возникает иногда на первой же заявке, а иногда несколько первых заявок проходят нормально.


Tags:


Thanks:


< 1 2 3 4 5  > >>
Mikhail Sukhov

Avatar
Date: 11/15/2011
Reply


Camill: Я кого-нибудь убедил в существовании проблемы, или еще что-то нужно уточнить?

Небольшой вопрос. А позиция учитывает стандартно, по заявкам, или по сделкам?

В принципе нашел несколько мест. Так что будем лечить как лечили проблему с позами - в несколько этапов.

Thanks:

kenota

Avatar
Date: 11/16/2011
Reply


А может эта ошибка быть связана с сообщениями о том что заявка не имеет состояния?

Я экспериментировал с демо примером из последней версии стокшарпа, так там через некоторое время он просто зависает, а в логах постоянно появляется сообщение о заявке без состояния, потом, когда срабатывает условие на выставление нового ордера, сообщения начинают чередоваться.

Это возникает в разное время от начала эмуляции.

Явно связано с многопоточностью, увелечиение параметра LoadingThreadCount у EmulationTrader вроде дает шанс получить ошибку еще раньше. То есть чем больше потоков тем больше вероятность наступления. При LoadingThreadCount=1 ошибка все равно проявляется.

Прикладываю скриншот логов о которых я говорю (это сообщение повторяется вечно и ордер никогда не выполняется).

Так же, один раз при тесте, когда я экспериментировал с количеством потоков выскочило окно с эксепшеном (мессадж бокс, то есть кто то его обработал), скрин этого эксепшена прикладываю к сообщению тоже.

Да, единственные изменения от тестового примера у меня это вывод логов в окно и период тестирования с 20 числа, что бы рынок поактивней был.

Есть варианты как это обойти можно? а то не получается стратегию оттестировать на истории вообще :(

exception.png 28 KB (353) orderFail.png 144 KB (411)
Thanks:

Camill

Avatar
Date: 11/16/2011
Reply


kenota: через некоторое время он просто зависает Аналогично, моя стратегия тоже зависает где-то после десятка-другого сделок.

Thanks:

Mikhail Sukhov

Avatar
Date: 11/16/2011
Reply


kenota: Явно связано с многопоточностью

Попробуйте EmulationTrader.MarketEmulator установить не ParallelEmulator а Sync.

Thanks:

Camill

Avatar
Date: 11/16/2011
Reply


Такой вот код не помог, все равно зависает:

_trader.MarketEmulator = new SyncMarketEmulator(_trader);

Thanks:

andy_baka_

Avatar
Date: 11/17/2011
Reply


Alexander Mukhanchikov: 2) PositionManager.Position может обновиться чуть позднее

Александр, а насколько к PositionManager.Position можно привязываться как к индикатору состояния позиции?

Thanks:

esper

Avatar
Date: 11/17/2011
Reply


Camill: Такой вот код не помог, все равно зависает:

_trader.MarketEmulator = new SyncMarketEmulator(_trader);

Сама стратегия у вас из примера, только окно логов добавлено? Если просто взять стандартный пример ошибка повторяется? Можете выложить ваш проект на котором повторяется ошибка? Какая конфигурация компа, т.е. сколько ядер и памяти?
Thanks:

Camill

Avatar
Date: 11/17/2011
Reply


esper: Если просто взять стандартный пример ошибка повторяется? Можете выложить ваш проект на котором повторяется ошибка? Какая конфигурация компа, т.е. сколько ядер и памяти? Пример SampleHistoryTesting, 4 ядра, 16 гигов памяти. На нем проявляются и зависание и дублирование заявок. Мы уже разбирались вчера вечером с Михаилом Суховым, у него ошибка с зависанием повторилась, так что по этому поводу он теперь больше знает. Но пока еще не понятно, возможно, дублирование заявок - это другая ошибка, не связанная с зависанием.

Thanks:

Camill

Avatar
Date: 11/18/2011
Reply


Похоже, ошибка исправлена, но стало работать в несколько раз медленнее, и памяти жрать чуть ли не в два раза больше.

Thanks:

Mikhail Sukhov

Avatar
Date: 11/18/2011
Reply


Camill: Похоже, ошибка исправлена, но стало работать в несколько раз медленнее, и памяти жрать чуть ли не в два раза больше.

Обычное в сравнительном приложении в русском языке пишут 2 части. Вторую часть пишут через слово "чем". Собственно, чем что?

Thanks:
< 1 2 3 4 5  > >>

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

loading
clippy