Тестируем 'CopyTicks' - страница 37

 

подскажите какой тип флага соответствует номеру 24. Опытным путем определил что

  • TICK_FLAG_BID = 2
  • TICK_FLAG_ASK = 4
  • TICK_FLAG_LAST = 8
  • TICK_FLAG_VOLUME = 16
  • TICK_FLAG_BUY = 32
  • TICK_FLAG_SELL = 64
 
Sergey Gritsay:

подскажите какой тип флага соответствует номеру 24. Опытным путем определил что

  • TICK_FLAG_BID = 2
  • TICK_FLAG_ASK = 4
  • TICK_FLAG_LAST = 8
  • TICK_FLAG_VOLUME = 16
  • TICK_FLAG_BUY = 32
  • TICK_FLAG_SELL = 64

Флаги могут складываться. Чтобы определить какие именно события произошли (Здесь "tick" - массив с тиками):

         string flags="";
         if((tick.flags  &TICK_FLAG_BID)==TICK_FLAG_BID)
            flags=" TICK_FLAG_BID ";
         if((tick.flags  &TICK_FLAG_ASK)==TICK_FLAG_ASK)
            flags+=" TICK_FLAG_ASK ";
         if((tick.flags  &TICK_FLAG_LAST)==TICK_FLAG_LAST)
            flags+=" TICK_FLAG_LAST ";
         if((tick.flags  &TICK_FLAG_VOLUME)==TICK_FLAG_VOLUME)
            flags+=" TICK_FLAG_VOLUME ";
         if((tick.flags  &TICK_FLAG_BUY)==TICK_FLAG_BUY)
            flags+=" TICK_FLAG_BUY ";
         if((tick.flags  &TICK_FLAG_SELL)==TICK_FLAG_SELL)
            flags+=" TICK_FLAG_SELL ";
         Comment(flags);
 

Добрый день, коллеги.

Возможно кому-то будет интересно смоделировать проблему, с которой я столкнулся - похоже CopyTicks в тестере стратегий в режиме "Каждый тик на основе реальных" в некоторых случаях начинает задваивать тики, возвращаемые одним запросом.

Проверял на MOEX RTS в эксперте, запрашивая новые тики в событии OnTimer(). Код во вложении.

Флаги TICK_FLAG_BUY TICK_FLAG_SELL  у дублей могут как повторяться, так и отличаться от оригинальных записей (впрочем понять какие из них оригиналы, а какие дубли невозможно, не проведя сравнение с другим источником тиков).

Пробовал подключаться к реал "Открытие" и MetaQuotes-Demo - результат одинаковый.

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

Вот кусок лога, где видно, что в одном запросе внезапно пошли повторные тики (с меньшим временем, чем предыдущие)


Startup MetaTester 5 x64 build 1578 (07 Apr 2017)

Server MetaTester 5 started on 127.0.0.1:3000

Startup initialization finished

127.0.0.1 login (build 1578)

Network 38520 bytes of account info loaded

Network 1482 bytes of tester parameters loaded

Network 188 bytes of input parameters loaded

Network 4192 bytes of symbols list loaded

Tester expert file added: Experts\!sn_err.ex5. 11617 bytes loaded

Tester initial deposit 10000.00 RUR, leverage 1:100

Tester successfully initialized

Network 29 Kb of total initialization data received

Tester QEMU Virtual  version (cpu64-rhel6), 2047 MB

Symbols RTS-6.17: symbol to be synchronized

Symbols RTS-6.17: symbol synchronized, 3784 bytes of symbol info received

History RTS-6.17: history synchronization started

History RTS-6.17: load 31 bytes of history data to synchronize in 0:00:00.000

History RTS-6.17: history synchronized from 2016.01.20 to 2017.04.07

Ticks RTS-6.17: ticks synchronization started

Ticks RTS-6.17: load 38 bytes of tick data to synchronize in 0:00:00.000

Ticks RTS-6.17: history ticks synchronized from 2017.04.06 to 2017.04.06

History RTS-6.17,M1: history cache allocated for 475200 bars and contains 23851 bars from 2016.01.20 12:28 to 2017.04.05 23:45

History RTS-6.17,M1: history begins from 2016.01.20 12:28

Tester RTS-6.17,M1 (MetaQuotes-Demo): generating based on real ticks

Tester RTS-6.17,M1: testing of Experts\!sn_err.ex5 from 2017.04.06 00:00 to 2017.04.07 00:00 started

Ticks RTS-6.17 : real ticks begin from 2017.04.06 00:00:00


...

CYCLE: 16  TICK: 2017.04.06 11:06:42;1491476802652;1;56; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_BUY 

CYCLE: 16  TICK: 2017.04.06 11:06:43;1491476803512;1;56; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_BUY 

CYCLE: 16  TICK: 2017.04.06 11:06:46;1491476806819;2;56; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_BUY 

CYCLE: 16  TICK: 2017.04.06 11:06:46;1491476806865;1;56; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_BUY 

CYCLE: 16  TICK: 2017.04.06 11:06:46;1491476806865;1;56; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_BUY 

CYCLE: 17  TICK: 2017.04.06 11:06:47;1491476807075;1;88; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_SELL 

CYCLE: 17  TICK: 2017.04.06 11:06:47;1491476807470;3;56; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_BUY 

CYCLE: 17  TICK: 2017.04.06 11:06:47;1491476807470;1;56; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_BUY 

CYCLE: 17  TICK: 2017.04.06 11:06:47;1491476807470;10;56; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_BUY 

CYCLE: 17  TICK: 2017.04.06 11:06:47;1491476807470;1;56; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_BUY 

CYCLE: 17  TICK: 2017.04.06 11:06:47;1491476807470;4;56; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_BUY 

CYCLE: 17  TICK: 2017.04.06 11:06:47;1491476807470;1;56; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_BUY 

CYCLE: 17  TICK: 2017.04.06 11:06:47;1491476807472;3;88; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_SELL 

CYCLE: 17  TICK: 2017.04.06 11:06:47;1491476807472;4;88; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_SELL 

CYCLE: 17  TICK: 2017.04.06 11:06:47;1491476807472;1;88; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_SELL 

CYCLE: 17  TICK: 2017.04.06 11:06:47;1491476807075;1;56; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_BUY DOUBLE

CYCLE: 17  TICK: 2017.04.06 11:06:47;1491476807470;3;56; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_BUY DOUBLE

CYCLE: 17  TICK: 2017.04.06 11:06:47;1491476807470;1;56; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_BUY DOUBLE

CYCLE: 17  TICK: 2017.04.06 11:06:47;1491476807470;10;56; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_BUY DOUBLE

CYCLE: 17  TICK: 2017.04.06 11:06:47;1491476807470;1;56; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_BUY DOUBLE

CYCLE: 17  TICK: 2017.04.06 11:06:47;1491476807470;4;56; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_BUY DOUBLE

CYCLE: 17  TICK: 2017.04.06 11:06:47;1491476807470;1;56; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_BUY DOUBLE

CYCLE: 17  TICK: 2017.04.06 11:06:47;1491476807472;3;56; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_BUY DOUBLE

CYCLE: 17  TICK: 2017.04.06 11:06:47;1491476807472;4;56; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_BUY DOUBLE

CYCLE: 17  TICK: 2017.04.06 11:06:47;1491476807472;1;56; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_BUY DOUBLE

CYCLE: 19  TICK: 2017.04.06 11:06:49;1491476809747;3;88; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_SELL 

CYCLE: 19  TICK: 2017.04.06 11:06:49;1491476809747;7;88; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_SELL 

CYCLE: 19  TICK: 2017.04.06 11:06:49;1491476809747;3;56; TICK_FLAG_LAST  TICK_FLAG_VOLUME  TICK_FLAG_BUY 

...

Файлы:
jsn_err.mq5  5 kb
 
Snest:

Возможно кому-то будет интересно смоделировать проблему, с которой я столкнулся - похоже CopyTicks в тестере стратегий в режиме "Каждый тик на основе реальных" в некоторых случаях начинает задваивать тики, возвращаемые одним запросом.

Всплыла очень неприятная вещь как раз в Вашей ситуации.

Так что тут выход только один - отказаться на время от тестера.


ЗЫ Посмотрел Ваши код и лог. Однозначно, баг CopyTicks в тестере. Интересно, DOUBLE-тики начинаются не с полного дублирования. В общем, копи-пастите в СД свой пост. На данный момент CopyTicks нельзя использовать в тестере и сам тестер нельзя использовать в режиме "по реальным тикам".

 
fxsaber:

Всплыла очень неприятная вещь как раз в Вашей ситуации.

Так что тут выход только один - отказаться на время от тестера.


ЗЫ Посмотрел Ваши код и лог. Однозначно, баг CopyTicks в тестере. Интересно, DOUBLE-тики начинаются не с полного дублирования. В общем, копи-пастите в СД свой пост. На данный момент CopyTicks нельзя использовать в тестере и сам тестер нельзя использовать в режиме "по реальным тикам".


Спасибо, в сервисдеск отписал. По результатам отпишусь.
 
В истории правильные тики идут начиная с определенной даты (писал ранее об этом). До того идут с дублями. Это если в Открытии счет.
 
Dmitriy Skub:
В истории правильные тики идут начиная с определенной даты (писал ранее об этом). До того идут с дублями. Это если в Открытии счет.


По логам видно, что тест проводился за 06 апреля 2017. Аналогичные результаты за 07 апреля.

И на Открытие-реал и на МQ-Demo ситуация аналогичная

 
Snest:


По логам видно, что тест проводился за 06 апреля 2017. Аналогичные результаты за 07 апреля.

И на Открытие-реал и на МQ-Demo ситуация аналогичная

Тады в морг. То бишь, в СД))
 
Dmitriy Skub:
Тады в морг. То бишь, в СД))

Очень точное замечание.
 

Прошло три месяца, а тикет так и не закрыли. Беда.


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

Сравнение тиковых данных МТ5, полученных стандартным инструментом "Стакан цен / Показ таблицы всех сделок" на реальном счете AMP-Features c котировками от CQG, с данными от Ритмика показало, что МТ5 в некоторых, видимо достаточно редких случаях  неверно определяет направление сделки. 

Выгружаем стакан цен за 11.07 стандартным инструментом "Стакан цен / Показ таблицы всех сделок".  Смотрим данные по фьючерсу GCEQ7 за 00:03 минуту по чикагскому времени (В таблице ниже не чикагское, а GMT)

Полученный результат

2017.07.1105:03:00.3241209.71209.81209.71Sell
2017.07.1105:03:00.3241209.71209.81209.71Sell
2017.07.1105:03:00.3241209.71209.81209.71Sell
2017.07.1105:03:00.3241209.71209.81209.71Sell
2017.07.1105:03:00.3241209.71209.81209.71Sell
2017.07.1105:03:00.9701209.71209.81209.72Sell
2017.07.1105:03:00.9701209.71209.81209.71Sell
2017.07.1105:03:00.9701209.71209.81209.72Sell
2017.07.1105:03:00.9701209.71209.81209.71Sell
2017.07.1105:03:00.9701209.71209.81209.71Sell
2017.07.1105:03:00.9701209.71209.81209.71Sell
2017.07.1105:03:00.9771209.71209.81209.72Sell
2017.07.1105:03:00.9771209.71209.81209.71Sell
2017.07.1105:03:00.9771209.71209.81209.72Sell
2017.07.1105:03:00.9771209.71209.81209.71Sell
2017.07.1105:03:00.9771209.71209.81209.71Sell
2017.07.1105:03:00.9771209.71209.81209.71Sell
2017.07.1105:03:00.9771209.71209.81209.71Buy
2017.07.1105:03:01.3621209.71209.81209.71Sell
2017.07.1105:03:02.1171209.71209.81209.73Sell
2017.07.1105:03:02.1171209.71209.81209.72Sell
2017.07.1105:03:02.1171209.71209.81209.71Sell

Ожидаемый результат

Данные от Rithmic по московскому времени:

2017-07-11 08:03:00.26023314997493802598473291209.71S
2017-07-11 08:03:00.26023314997493802598473291209.71S
2017-07-11 08:03:00.26023314997493802598473291209.71S
2017-07-11 08:03:00.26023314997493802598473291209.71S
2017-07-11 08:03:00.26023314997493802598473291209.71S
2017-07-11 08:03:00.94879814997493809485465951209.72S
2017-07-11 08:03:00.94879814997493809485465951209.71S
2017-07-11 08:03:00.94910014997493809487981271209.72S
2017-07-11 08:03:00.94910014997493809487981271209.71S
2017-07-11 08:03:00.94923314997493809487984631209.71S
2017-07-11 08:03:00.94946614997493809491073051209.71B
2017-07-11 08:03:00.95085414997493809494661771209.72B
2017-07-11 08:03:00.95100914997493809496342611209.71B
2017-07-11 08:03:00.95100914997493809496342611209.72B
2017-07-11 08:03:00.95158814997493809506472211209.71B
2017-07-11 08:03:00.95158814997493809506472211209.71B
2017-07-11 08:03:00.95158814997493809506472211209.71B
2017-07-11 08:03:00.95170114997493809508641431209.71B
2017-07-11 08:03:01.28457614997493812842645651209.71S
2017-07-11 08:03:02.0858251499749382853877211209.73S
2017-07-11 08:03:02.0858251499749382853877211209.72S
2017-07-11 08:03:02.0858251499749382853877211209.71S


Красным показаны расхождения в направлении сделок

Причина обращения: