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

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


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

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

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

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


Теги:


Спасибо:


< 1 2 3 4 5  > >>
Mikhail Sukhov

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


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

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

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

Спасибо:

kenota

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


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

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

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

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

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

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

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

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

exception.png 28 KB (353) orderFail.png 144 KB (411)
Спасибо:

Camill

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


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

Спасибо:

Mikhail Sukhov

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


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

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

Спасибо:

Camill

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


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

_trader.MarketEmulator = new SyncMarketEmulator(_trader);

Спасибо:

andy_baka_

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


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

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

Спасибо:

esper

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


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

_trader.MarketEmulator = new SyncMarketEmulator(_trader);

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

Camill

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


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

Спасибо:

Camill

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


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

Спасибо:

Mikhail Sukhov

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


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

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

Спасибо:
< 1 2 3 4 5  > >>

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

loading
clippy