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

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


Проблема проявляется даже стандартном примере SampleHistoryTesting. Для обнаружения в OnProcess достаточно добавить
Code
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 (188) orderFail.png 144 KB (236)
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


Такой вот код не помог, все равно зависает:
Code
_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
Такой вот код не помог, все равно зависает:
Code
_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