Не верный расчет Latency в EmulationTrader

Не верный расчет Latency в EmulationTrader
Atom
6/21/2012
PavelAd


Произвожу тестирование с использованием EmulationTrader, задаю максимальную задержку так:
Code

        var emulationTrader = new EmulationTrader(new[] { security }, new[] { portfolio }) {
          MarketTimeChangedInterval = new TimeSpan(0, 0, 0, 10, 0), // Изменение Trader.MarketTime каждые 10 секунд
          StorageRegistry = storageRegistry,
          WorkingTime = Exchange.Rts.WorkingTime,          
          UseMarketDepth = false          
        };
        // Задаем максимальную задержку принятия выставляемых заявок на бирже
        emulationTrader.MarketEmulator.Settings.Latency = new TimeSpan(0, 0, 0, 0, 250);


в результате тестирования в логе задержка больше указанного значения:
Quote:

10:55:05.000 | | TS_RIM2@RTS_tst | Выставлена PROFIT заявка по цене 156750 для заявки с Id=23. TransactionId=56758977, Id=24, V=1, Pos=1, задержка 00:00:03

в примере например 3 секунды



Thanks:


pyhta4og

Avatar
Date: 6/21/2012
Reply


Параметр эмулятора Latency означает МИНИМАЛЬНУЮ задержку от момента RegisterOrder до момента когда заявка начинает обрабатываться в эмуляторе.

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

В вашем случае видимо первый тик пришел через 3 секунды. И ФАКТИЧЕСКАЯ задержка (Order.Latency) была 3 секунды. Что больше минимальной.

Так что все нормально.
Thanks:

PavelAd

Avatar
Date: 6/22/2012
Reply


pyhta4og
Параметр эмулятора Latency означает МИНИМАЛЬНУЮ задержку от момента RegisterOrder до момента когда заявка начинает обрабатываться в эмуляторе.


Значит ошибка в документации, там сказано:
Quote:
MarketEmulatorSettings.Latency свойство

Максимальное значение задержки выставляемых заявок. По умолчанию равно Zero, что означает мгновенное принятие биржей выставляемых заявок.

Тогда есть пожелание к разработчикам, реализовать возможность задавать максимальную задержку.
Thanks:

PavelAd

Avatar
Date: 6/27/2012
Reply


Принято пожелание или нет?
Thanks:

Alexander

Avatar
Date: 6/27/2012
Reply


Михаил (пыхтачог) приедет из отпуска, ответит.
Thanks:

pyhta4og

Avatar
Date: 7/3/2012
Reply


Непонятно зачем нужен такой параметр максимальной задержки

Минимальная введена чтобы имитировать задержку сетевого канала.

Если не хотите задержки вообще - ставьте Latency=0 тогда будет мгновенное исполнение.

В чем конечная проблема которую вы пытаетесь решить?
Thanks:

PavelAd

Avatar
Date: 7/11/2012
Reply


pyhta4og
Непонятно зачем нужен такой параметр максимальной задержки

Минимальная введена чтобы имитировать задержку сетевого канала.

Если не хотите задержки вообще - ставьте Latency=0 тогда будет мгновенное исполнение.

В чем конечная проблема которую вы пытаетесь решить?


Максимальное значение так же нужно чтобы ограничить задержку сверху.
А так получается задержка максимальным пределом не ограничена. Или все таки ограничена?
Алгоритм расчета задержки можно привести?
Thanks:

pyhta4og

Avatar
Date: 7/11/2012
Reply


PavelAd
pyhta4og
Непонятно зачем нужен такой параметр максимальной задержки

Минимальная введена чтобы имитировать задержку сетевого канала.

Если не хотите задержки вообще - ставьте Latency=0 тогда будет мгновенное исполнение.

В чем конечная проблема которую вы пытаетесь решить?


Максимальное значение так же нужно чтобы ограничить задержку сверху.
А так получается задержка максимальным пределом не ограничена. Или все таки ограничена?
Алгоритм расчета задержки можно привести?


cмотрите. Latency это MarketEmulator.Settings.Latency - то что названо "минимальная задержка".

Когда эмулятор получает заявку от стратегии он просто помещает ее в список неактивных (пока) заявок, которые "в пути"

Когда эмулятор получает новый тик или стакан, он смотрит, не сидит ли заявка "в пути" больше чем Latency-мин. задержка. И если это так - обрабатывает заявку, отправляет в шлюз NewOrder. И в заявке запоминается Order.Latency - фактическое время "в пути".

Оно по данному алгоритму будет не меньше Latency, поэтому Latency- миним. задержка.

Название плохое, потому что это просто эмулируемая задержка.

Есть ньюанс что если тик или стакан не придет втечение долгого времени после отправки заявки то и заявка не будут активизирована, те будут как бы вечно "в пути".

Если это доставляет проблему то можно пофиксить последний момент и тогда факт задержка будет совпадаеть с Latency, те не будет ситуаций когда факт. Latency сильно больше чем MarketEmulator.Settings.Latency


hope it helps
Thanks: PavelAd


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

loading
clippy