nikolz (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 ... 18 19 20 21 22 23 24 25 26 27 28 ... 79 След.
Как подавить вывод командного окна при запуске exe-файла из Lua?, popen execute
 
Создайте не консольное приложение, а оконное и в нет отключите отображение окна.
Неверные флаги в функции OnOrder, флаги показывают что лимитная заявка снята, хотя её состояние Активна
 
Поэтому , для тех кто не понял, уточняю

OnTransRepley  и OnOrder Приходят многократно, но ПЕРВЫМ всегда приходит первый  OnTransReple
В нем нет номера заявки потому что на еще не пришла с сервера биржи
Остальные сигналы приходят как угодно но они не первые.
Неверные флаги в функции OnOrder, флаги показывают что лимитная заявка снята, хотя её состояние Активна
 
Цитата
Sergey Gorokhov написал:
Цитата
Цитата
nikolz написал:
так как это ответ сервера брокера, а ответ onOrder - это трансляция сервера биржи сервером брокера.
тоже нет, ответ на транзакцию содержит номер заявки. QUIK не может его знать, только биржа его может сообщить, значит это ответ биржи, а не сервера брокера.
Добрый день,
мы с Вам говорим о разном.
Вы говорите о OnTransRepley в котором есть номер заявки.
------------------------------
Я говорю о OnTransRepley,  в которых нет номерf заявки.
Эти сигналы всегда приходят раньше onOrder.
Так как ответ от биржи еще не пришел.
---------------------------
Именно этот ответ всегда приходит раньше
Именно его я и использую для фиксации момент выставления заявки.
-------------
Неверные флаги в функции OnOrder, флаги показывают что лимитная заявка снята, хотя её состояние Активна
 
более того, ответ на транзакцию OnTransRepley всегда приходит первым,
так как это ответ сервера брокера, а ответ onOrder - это трансляция сервера биржи сервером брокера.
Я именно в  OnTransRepley ловлю исполнение транзакции на выставление заявки всегда до прихода onOrder.
Неверные флаги в функции OnOrder, флаги показывают что лимитная заявка снята, хотя её состояние Активна
 
Цитата
Kalmar написал:
Цитата
nikolz написал:
Нет. если Вы не в дата центре.
Да, если ответ на транзакцию и заявка пришли вместе.
Вы невнимательно читаете.
Специально для Вас вопрос был такой:
1) Возможно ли что функция OnOrder выполняется через 1 мс после отправки sendTransaction(transaction) ??
------------------
Читайте внимательно в вопросе время отсчитывается от отправки , а не от прихода.
---------------------
Прочитали, теперь снова напишите свой ответ на данный вопрос.
Неверные флаги в функции OnOrder, флаги показывают что лимитная заявка снята, хотя её состояние Активна
 
Alexey написал:
1) Возможно ли что функция OnOrder выполняется через 1 мс после отправки sendTransaction(transaction) ??
Нет. если Вы не в дата центре.
Ошибка "Order depth should be positive", Ошибка "Order depth should be positive"
 
Цитата
Вадим Никитин написал:
Если нужна какая-то ещё информация, то могу попробовать предоставить, если это будет возможно. Но судя по всему на форуме такой ошибки ещё не было.
полагаю, что это ошибка с биржи.
Что бы разобраться надо ее поймать и потом выложить скрипт и скрип экрана со стаканом
Ошибка "Order depth should be positive", Ошибка "Order depth should be positive"
 
Цитата
Вадим Никитин написал:
Если перевести ошибку, то да, смысл может быть такой.

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

И как можно выставить заявку вне очереди, тем более по одному из самых ликвидных фьючерсов CNY-6.23?

Возможно глюк системы, но хотелось бы всё-таки уточнить у разработчиков в чём смысл данного сообщения и в каких случаях QUIK может его выдавать, потому как в английском интерфейсе он выдаёт одни и те же сообщения на разные ошибки транзакций?
Все возможно, но кроме текста сообщения Вы ничего конкретного не выложили.
Лишь Ваше убеждение, что у Вас все правильно.

 
Ошибка в простом скрипте
 
АндрейКД,
Дам Вам бесплатный совет.
----------------------
Если действительно желаете научиться писать для КВИКА скрипты на луа то Вам надо:
--------------------
1) Изучить язык программирования Луа . Те проштудировать книжку и сделать кучу примеров без привязки к QUIK.
-----------------------
2) Изучить функции библиотеки QLUA. Проштудировать документа документацию на QLUA.
-------------------------
3) Научиться писать индикаторы и скрипты на луа с использованием библиотеки QLUA.
-----------------
Вы стали сразу что-то писать. Поэтому и не понимаете.
Ошибка в простом скрипте
 
Цитата
АндрейКД написал:
Цитата
nikolz написал:
В 54 строке nil в арифметической операции. Какая строка 54?
 sum = sum + dValue(i, Settings.value_type)
проверьте диапазон i
и значение dValue(...)
Ошибка в простом скрипте
 
В 54 строке nil в арифметической операции. Какая строка 54?
Ошибка "Order depth should be positive", Ошибка "Order depth should be positive"
 
Цитата
Вадим Никитин написал:
Order depth should be positive
предположу, что Вы пытаетесь выставить вне очереди заказов.
Посмотрите что в стакане и куда вы хотите поставить заявку.
Неверные флаги в функции OnOrder, флаги показывают что лимитная заявка снята, хотя её состояние Активна
 
почитайте это:
https://forum.quik.ru/forum1/topic8018/
Выгрузка библиотек
 
Alexander,
Добрый день,
Объясняю как это сделать.
----------------------
1) Вам надо написать отдельную dll, в которой одна функция - выгрузить dll по ее имени
-------------------------
2) в этой функции вам надо найти хендл выгружаемой dll и выгрузить ее столько раз, сколько ее вызывали до этого.
---------------------
3) При сборке dll, которую Вы будете в дальнейшем выгружать, вам надо отключить оповещение о вызове этой dll
----------------
И будет вам счастье.
QIUK 9.8.0.11 выходит при attach MSVC 2019 debugger - защита или проблема?
 
Цитата
Delv написал:
Цитата
nikolz написал:
 
Цитата
Delv  написал:
И как продвигается? Пока приходится использовать старый Quik для такой отладки. А какие другие варианты есть??? Не отлаживать dll?
 Отлаживаю DLL вне QUIK.
В чем пролема?
Никогда не пробовал отлаживать dll для Quik вне Quik. Даже в голову такое не приходило. Но звучит интересно. Поделитесь опытом, как там и что.
Рассказываю кратко.
--------------------
DLL для скрипта Луа состоит  из функций C и обертки для вызова этих функций из Луа.
--------------------------------
Можно делать - мухи отдельно, котлеты отдельно.
-----------------------------
Можно сделать функцию интерфейса вызова функций С из луа и не делать оберток вообще.
---------------------------------
Но делают обычно все в одну кучу, т е пишут функцию на С с интерфейсом для Луа и внутри нее реализацию алгоритма на СИ.
Этот вариант  отлаживается путем создания тестового скрипта на Луа с вызовом в нем функций из DLL.
=============================
Я делаю это в редакторе SciTe, который написан на луа
и имеет встроенные надстройки для вызова и компиляции скриптов Луа.
----------------------
При этом в функциях  СИ можно ставить контрольную печать для любых переменных СИ
и они будут отображаться , так же как и печать переменных Луа, в окне вывода SciTe.
Т е можно выводить состояние любых переменных Луа и СИ и даже ASM в окно редактора SCITE.
-------------------------
Кратко все.
В какой таблице найти информацию о short
 
Цитата
МихаилКа написал:
Доброго времени суток!
Подскажите, пожалуйста, есть ли возможность видеть признак торгуемости актива в шорт именно в таблице Текущие торги?
Нормальная ручная торговля, просмотр графиков, постановка заявок проходят из этой таблицы, хотелось бы не искать инструмент в другой таблице Купить/Продать, а сразу видеть признак в Текущих торгах.
это зависит от брокера. Шорт - это кредит бумагами у брокера . Если его клиенты этими бумагами не торгуют, то он вам их и не даст.
Брокер ничего своего в долг не дает.
Поэтому просто спросите у брокера даст он Вам в долг эти бумаги или нет и сколько это будет стоить.
По закону это должно быть в регламенте брокера.
Вы регламент брокера внимательно читали?
Отладка кодов индикаторов, Отладка кодов индикаторов
 
демо счет можно получить на этом сайте разработчиков QUIK без проблем и быстро.
Отладка кодов индикаторов, Отладка кодов индикаторов
 
Цитата
Александр Клименко написал:
Здравствуйте. Столкнулся с проблемой отладки кода простенького индикатора.
Без данных брокера отладить не представляю как.
Quik - 10
Операционка - w7х64.

decoda  не работает.


Кто и что может посоветовать толкового?
На демо счете все отлаживается без проблем
используйте лог файл.
Торговый робот на LUA, Робот классический сеточник для торговли акциями
 
Цитата
muyuyu написал:
Робот должен усреднять позицию в 1,5 раза после покупки акции в случае снижения на 1% и продавать по ТП 33 (все цифры назначаются в параметрах). Вход авто или ручной.
Можно без бла-бла-бла выложить на форуме, или в личку или файлообменник тех задание, бюджет и сроки.  
------------------------
Без обид, но угадывать Ваши хотелки бесплатно нет желания.
Синхронизация QUIK с NTP
 
Добрый день,
Для контроля  реального времени прихода сделок с биржи синхронизирую компьютер с сервером точного времени.
Не удается получить погрешность менее 20 ms.



Майкрософт декларирует возможность 1 ms.
----------------
Если кому-то это удалось, подскажите как Вы это достигли.
QIUK 9.8.0.11 выходит при attach MSVC 2019 debugger - защита или проблема?
 
Цитата
Delv написал:
И как продвигается? Пока приходится использовать старый Quik для такой отладки. А какие другие варианты есть??? Не отлаживать dll?
Отлаживаю DLL вне QUIK.
В чем пролема?
Тест. Данные в другое приложение.
 
Добрый день,
Неоднократно на форуме интересовались передачей данных из  QUIK  в другое приложение(процесс).
Есть много способов.
Наиболее универсальным является file mapping
Этот метод позволяет обмениваться данными практически любого объема.
Использую этот метод не только для QUIK
------------------
В названии метода есть слово файл.
Уверен, что многие скривятся и скажут, что метод медленно работает.
А вот и нет. .
---------------------------------
Что нам рассказывает об этом методе Майкрософт:
--------------------------
Это объединение содержимого файла с частью виртуального адресного пространства процесса.
Система создает объект сопоставления файлов (также известный как объект раздела) для поддержания этой связи.
Просмотр файла - это часть виртуального адресного пространства, которую процесс использует для доступа к содержимому файла.
Сопоставление файлов позволяет процессу использовать как случайный ввод-вывод (I / O), так и последовательный ввод-вывод.
Это также позволяет процессу эффективно работать с большим файлом данных, таким как база данных,
без необходимости отображать весь файл в памяти.
Несколько процессов также могут использовать файлы, сопоставленные с памятью, для обмена данными.

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

Использование данного метода повышает эффективность, поскольку файл находится на диске, а представление файла - в памяти.

===========================

Тест для измерения задержки передачи данных из скрипта QUIK  в приложение.

скрипт Теста в SciTe:

Код
paths = "D:/nkarray/"
package.cpath =paths.."?.dll;"
require"nkthread"
----------------------
local T=0; while true do local T1,dt,hms,s,num,HMS,ss=nkmx.gsm(0,T); if T1 then T=T1; print(0.1*dt,hms,s,num,HMS,ss); end  end

фрагмент скрипта в QUIK:
Код
function OnAllTrade(t)
   local c,s=t.class_code,t.sec_code;  local z=ds[c..s]; local num=t.trade_num;
   if z then   local d=z[1]; local n=z[2]; local f=z[3];
      local Ti=t.datetime; local HMS=(60*(60*Ti.hour+Ti.min)+Ti.sec)+0.001*Ti.ms;
      local D=os.date("*t"); local hms=60*(60*(D.hour-shH)+D.min)+D.sec-shS;
      local dt= hms-HMS+n;
      local size=d:Size();
      local T1=d:T(size);   local HMS1=(60*(60*T1.hour+T1.min)+T1.sec)+0.001*T1.ms;
      if HMS==HMS1 and z[4]~=num then
         local dt1=0.01*math.floor(100*dt);   if 0>dt then dt=0 end   count=count+1;   count1=count1+1;
         local m=math.floor(dt)+1;
         local ss=tostring(hms)..","..tostring(s)..",num="..tostring(num)..",size="..tostring(size)..",HMS="..tostring(HMS)..",dt="..tostring(dt1)..",n="..tostring(n)..",m="..tostring(m)..",clock="..(os.clock()-clockOS);
         nkmx.ssm(0,hms,s,num,HMS,ss); -- Log:write(ss.."\n"); Log:flush();
         if sts[m] then sts[m]=sts[m]+1; else sts[m]=1    end
      end
      z[4]=num;
   end
end

результат вывода параметров в SciTe:
Код
0.0   46972   MTSS   4794253307   44952.0   46972,MTSS,num=4794253307,size=2390,HMS=44952.0,dt=2020.0,n=0,m=2021,clock=8.4760000000024
0.1   46972   MTSS   4794253308   44952.0   46972,MTSS,num=4794253308,size=2391,HMS=44952.0,dt=2020.0,n=0,m=2021,clock=8.4760000000024
0.1   46972   FIVE   4794253618   44971.0   46972,FIVE,num=4794253618,size=2756,HMS=44971.0,dt=2001.0,n=0,m=2002,clock=8.4760000000024
0.1   46972   FIVE   4794253619   44971.0   46972,FIVE,num=4794253619,size=2757,HMS=44971.0,dt=2001.0,n=0,m=2002,clock=8.4760000000024
0.1   46972   FIVE   4794253620   44971.0   46972,FIVE,num=4794253620,size=2758,HMS=44971.0,dt=2001.0,n=0,m=2002,clock=8.4760000000024
0.1   46972   FIVE   4794253621   44971.0   46972,FIVE,num=4794253621,size=2759,HMS=44971.0,dt=2001.0,n=0,m=2002,clock=8.4760000000024
0.1   46972   MTSS   4794253982   44990.0   46972,MTSS,num=4794253982,size=2394,HMS=44990.0,dt=1982.0,n=0,m=1983,clock=8.4760000000024
0.1   46972   MTSS   4794255354   45061.0   46972,MTSS,num=4794255354,size=2396,HMS=45061.0,dt=1911.0,n=0,m=1912,clock=8.4760000000024
0.1   46972   MTSS   4794255355   45061.0   46972,MTSS,num=4794255355,size=2397,HMS=45061.0,dt=1911.0,n=0,m=1912,clock=8.4760000000024
0.1   46972   MTSS   4794255356   45061.0   46972,MTSS,num=4794255356,size=2398,HMS=45061.0,dt=1911.0,n=0,m=1912,clock=8.4760000000024
0.1   46972   MTSS   4794255903   45095.0   46972,MTSS,num=4794255903,size=2402,HMS=45095.0,dt=1877.0,n=0,m=1878,clock=8.4770000000026
0.1   46972   MTSS   4794255904   45095.0   46972,MTSS,num=4794255904,size=2403,HMS=45095.0,dt=1877.0,n=0,m=1878,clock=8.4770000000026
0.1   46972   FIVE   4794256157   45107.0   46972,FIVE,num=4794256158,size=2763,HMS=45107.0,dt=1865.0,n=0,m=1866,clock=8.4770000000026
0.1   46972   FIVE   4794256158   45107.0   46972,MTSS,num=4794256215,size=2405,HMS=45110.0,dt=1862.0,n=0,m=1863,clock=8.4770000000026
0.1   46972   MTSS   4794256215   45110.0   46972,MTSS,num=4794256215,size=2405,HMS=45110.0,dt=1862.0,n=0,m=1863,clock=8.4770000000026
0.1   46972   MTSS   4794256220   45111.0   46972,MTSS,num=4794256220,size=2407,HMS=45111.0,dt=1861.0,n=0,m=1862,clock=8.4770000000026
0.1   46972   VSMO   4794213402   42862.0   46972,VSMO,num=4794213402,size=2696,HMS=42862.0,dt=4110.0,n=0,m=4111,clock=8.4770000000026
0.1   46972   VSMO   4794213403   42862.0   46972,VSMO,num=4794213403,size=2697,HMS=42862.0,dt=4110.0,n=0,m=4111,clock=8.4770000000026
0.1   46972   VSMO   4794213404   42862.0   46972,VSMO,num=4794213404,size=2698,HMS=42862.0,dt=4110.0,n=0,m=4111,clock=8.4770000000026
0.1   46972   VSMO   4794213405   42862.0   46972,VSMO,num=4794213405,size=2699,HMS=42862.0,dt=4110.0,n=0,m=4111,clock=8.4770000000026
0.1   46972   VSMO   4794213406   42862.0   46972,VSMO,num=4794213406,size=2700,HMS=42862.0,dt=4110.0,n=0,m=4111,clock=8.4770000000026
0.1   46972   VSMO   4794213881   42889.0   46972,VSMO,num=4794213881,size=2702,HMS=42889.0,dt=4083.0,n=0,m=4084,clock=8.4770000000026
0.1   46972   VSMO   4794214435   42919.0   46972,VSMO,num=4794214435,size=2704,HMS=42919.0,dt=4053.0,n=0,m=4054,clock=8.482
0.0   46972   VSMO   4794214436   42919.0   46972,VSMO,num=4794214436,size=2705,HMS=42919.0,dt=4053.0,n=0,m=4054,clock=8.482
0.1   46972   VSMO   4794214729   42935.0   46972,VSMO,num=4794214729,size=2707,HMS=42935.0,dt=4037.0,n=0,m=4038,clock=8.482
0.1   46972   VSMO   4794214730   42935.0   46972,VSMO,num=4794214730,size=2708,HMS=42935.0,dt=4037.0,n=0,m=4038,clock=8.482
0.1   46972   VSMO   4794214732   42936.0   46972,VSMO,num=4794214732,size=2710,HMS=42936.0,dt=4036.0,n=0,m=4037,clock=8.482
0.1   46972   VSMO   4794214733   42936.0   46972,VSMO,num=4794214733,size=2711,HMS=42936.0,dt=4036.0,n=0,m=4037,clock=8.482
0.1   46972   VSMO   4794214734   42936.0   46972,VSMO,num=4794214734,size=2712,HMS=42936.0,dt=4036.0,n=0,m=4037,clock=8.482
0.1   46972   VSMO   4794214735   42936.0   46972,VSMO,num=4794214735,size=2713,HMS=42936.0,dt=4036.0,n=0,m=4037,clock=8.482
0.0   46972   VSMO   4794214736   42936.0   46972,VSMO,num=4794214736,size=2714,HMS=42936.0,dt=4036.0,n=0,m=4037,clock=8.482
0.1   46972   VSMO   4794214737   42936.0   46972,VSMO,num=4794214737,size=2715,HMS=42936.0,dt=4036.0,n=0,m=4037,clock=8.482
0.1   46972   VSMO   4794214738   42936.0   46972,VSMO,num=4794214738,size=2716,HMS=42936.0,dt=4036.0,n=0,m=4037,clock=8.482
первое число в стоке - задержка передачи параметров из QUIK в приложение в мкс.
--------------------
Резюме:  задержка передачи методом file mapping параметров из QUIK в другое приложение составляет 0.0000001 сек.

Как получить графу Прибыль/Убыток из getPortfolioInfoEx, часть возвращаемой таблицы пустая, хотя в визуальной таблице QUIK данные есть.
 
опечатка:
т е параметры с 6 по 22
Как получить графу Прибыль/Убыток из getPortfolioInfoEx, часть возвращаемой таблицы пустая, хотя в визуальной таблице QUIK данные есть.
 
Цитата
awkozlov написал:
Пытаюсь получить из таблицы "Клиентский портфель [SUR]" данные из графы << Плечо >> по строке Т2  Использую для этого код:  
Код
   local  PortfolioInfoExTable =  getPortfolioInfo Ex (gFIRMID, gCLIENT_CODE,  2 )  -- https://luaq.ru/getPortfolioInfoEx.html 
 local  zPortfolio_value = PortfolioInfoExTable.portfolio_value  -- Стоимость портфеля 
 local  zCash_leverage = PortfolioInfoExTable.cash_leverage  -- Плечо 
 message (tostring(zPortfolio_value) .. '\n\n' .. tostring(zCash_leverage))   
   Но значение плеча zCash_leverage нулевое, хотя я вижу этот размер плеча   явно   в таблице "Клиентский портфель [SUR]" в строке Т2.  При этом мне успешно показывается стоимость портфеля - zPortfolio_value.  У меня такое ощущение, что в синтаксисе команды getPortfolioInfoEx должно быть ещё указание на валюту т.к. она указана в титуле окна.  На самом деле мне нужна графа <<Прибыль/Убытки>>, но для упрощения вопроса спрашиваю про графу <<Плечо>>.  Как мне получить размер Плеча или Прибыль/Убыток с начала дня по спотовому рынку?
В документации сказано:
Функция возвращает таблицу Lua с параметрами
таблицы «Клиентский портфель».

Дополнительно возвращаются следующие параметры:  

ПараметрТипОписание
1init_marginSTRINGЗначение начальной маржи. Заполняется для клиентов типа «МД»Нач.маржа
2min_marginSTRINGЗначение минимальной маржи. Заполняется для клиентов типа «МД»Мин.маржа
3corrected_marginSTRINGЗначение скорректированной маржи. Заполняется для клиентов типа «МД»Скор.маржа
4client_typeSTRINGТип клиентаТип клиента
5portfolio_valueSTRINGСтоимость портфеля. Для клиентов типа «МД» возвращается значение для строк с  максимальным сроком расчётов limit_kindСтоимость портфеля
6*start_limit_open_posSTRINGЛимит открытых позиций на начало дняЛимОткрПозНачДня
7*total_limit_open_posSTRINGЛимит открытых позицийЛимОткрПоз
8*limit_open_posSTRINGПланируемые чистые позицииПланЧистПоз
9*used_lim_open_posSTRINGТекущие чистые позицииТекЧистПоз
10*acc_var_marginSTRINGНакопленная вариационная маржаНакопВарМаржа
11*cl_var_marginSTRINGВариационная маржа по итогам промклирингаВарМаржаПромклир.
12*opt_liquid_costSTRINGЛиквидационная стоимость опционовЛиквСтоимОпционов
13*fut_assetSTRINGСумма оценки средств клиента на срочном рынкеСумАктивовНаСрчРынке
14*fut_total_assetSTRINGСумма оценки собственных средств клиента на фондовом и срочном рынкахПолнСтоимостьПортфеля
15*fut_debtSTRINGТекущая задолженность на срочном рынкеТекЗадолжНаСрчРынке
16*fut_rate_assetSTRINGДостаточность средствДост. Средств
17*fut_rate_asset_openSTRINGДостаточность средств (под открытые позиции)Дост. Средств (ОткрПоз)
18*fut_rate_goSTRINGКоэффициент ликвидности ГОКоэффЛикв ГО
19*planed_rate_goSTRINGОжидаемый коэффициент ликвидности ГООжид. КоэффЛикв ГО
20*cash_leverageSTRINGCash LeverageCash Leverage
21*fut_position_typeSTRINGТип позиции на срочном рынке. Возможные значения  
  • «0» – нет позиции;
  • «1» – фьючерсы;
  • «2» – опционы;
  • «3» – фьючерсы и опционы
ТипПозНаСрчРынке
22*fut_accured_intSTRINGНакопленный доход с учётом премии по опционам и биржевым сборамНакопДоход
23rcv1STRINGНорматив покрытия риска 1. Рассчитывается как разница параметров «Стоимость  портфеля» и «Начальная маржа». Для клиентов типа «МД» и «МД+»НПР1
24rcv2STRINGНорматив покрытия риска 2. Рассчитывается как разница параметров «Стоимость  портфеля» и «Минимальная маржа». Для клиентов типа «МД» и «МД+»НПР2

* - параметр заполняется для  клиентов с настроенной единой денежной позицией и для клиентов срочного рынка  без единой денежной позиции

т е параметры с 6 по 20 заполняются лишь для
клиентов с настроенной единой денежной позицией и для клиентов срочного рынка без единой денежной позиции
если Вы не такой клиент, то будет ноль.
Пример
 
Цитата
cudi написал:
Цитата
cudi написал:
[img]file:///C:/Users/family/Desktop2.png[/img]
теперь после повторного соединения его уже нет
Надо не прикреплять файл, загружать картинку с компьютера, иначе  плохое качество
-----------------------
Посмотрите внимательно у вас нет спроcа и предложения (bid, offer) по двум валютам 2 и 3 строка
поэтому результат пустой. В ТТП нули, т е валюты либо не торгуются либо вы их не выбрали в заказе данных
Нечем торговать.
Подключение к Quik, Как подключиться к quik для получения информации с графика и формирования заявок?
 
Цитата
Юрий написал:
Цитата
nikolz написал:
замечу два момента.1) если речь идет о фильтрации обезличенных сделок, то ваш вариант неправильный. Так как при большом числе сделок вы будете долго искать.На основе своих исследований данной проблемы могу сказать, что задача решается проще. Повторная сделка приходит всегда следом за первой сделкой.Но особенность в том, что следующая сделка по данному инструменту это не следующая сделка в потоке сделок после первой.-----------------------2) Вы зря не хотите реализовать через файлы. Это просто и быстро. Более того, такие методы как   Pipe и mailslot  тоже используют запись чтение файлов. Поэтому когда набьете руку (голову) на файлах ,то легко решите задачу с Pipe или mailslot и им подобным.

1. Я уже говорил что мне надо получать сделки которые прилетают в функцию OnTrade то есть они не обезличенные, так что с количеством проблем нет. Но это не главное...
2. Я не против сделать через файлы для начала, а может и навсегда. Но даже я понимаю что через память быстрее :) Но мне нужен внятный пример в C++ коде. Потому что сам я прогер слабенький, мягко говоря.

А тут столько блин специалистов и никто не может пример написать. Все жадные до кода :)  
1) Для OnTrade, OnOrder,onStopOrder, OnTransReply  вообще нет проблем с повторением.
------------------------------------
Но так как это колбеки, то У Вас проблема в алгоритме обработки.
-----------------------------------
Если хотите конкретной помощи, то задавайте конкретные вопросы и выкладывайте совй скрипт.
Иначе будете бла бла бла с Владимиром. Он Вам будет хвалится что все решил и уговаривать писать на "чистом" Луа, а сам тайно использует dll QLUA, которая написана на C.
____________________________  
2) Вот даже вы ошибаетесь.  Файлы они в памяти, И реально Вы и будете передавать через память, если это короткие сообщения и разрешен параллельный доступ к файлам.
Рекомендую Вам не гадать, а написать короткий тест и измерить скорость обмена через файлы.
-----------------
Повторю еще раз.
Хотите помощи - пишите сами получайте ошибки выкладывайте свое произведение и задавайте вопросы.
Примеры как писать читать файлы на C вы найдете в интернете.
Зачем вам C++, если для луа надо писать на С?
С++ еще сложнее чем С. Вы хоть понимаете, что такое классы в программировании?
Если нет или Вы пишите без них то Вам С++ не нужен.
Подключение к Quik, Как подключиться к quik для получения информации с графика и формирования заявок?
 
Владимир,
На форуме я выкладывал пример скрипта в котором любые функции из dll на СИ я вызываю буз использования C fo Lua.
---------------
Для этого я написал очень маленькую  dll .
если Вы крутой программист то напишите аналогичную, а не рассказывайте байки  
Подключение к Quik, Как подключиться к quik для получения информации с графика и формирования заявок?
 
Цитата
Владимир написал:
повторная сделка не только не всегда приходит следом за первой сделкой, они ещё и приходят "крест-накрест собачьим шагом", особенно красиво это выглядит, если заявка реализуется в десяток-другой сделок. Но это не Ваш уровень - я уже задолбался советовать Вам заняться чем-нибудь кроме программирования - вдруг Вы в какой-то области деятельности и в самом деле что-то соображаете.
Полагаю Вы все путаете.
Есть повторение обезличенных сделок в колбеке onAllTrade
Именно об этом я и написал. Проблема решается сравнительно просто, но Вы ее не решите.
---------------------------
Получение исполненных сделок в OnTrade меня вообще не волнует.
------------------------
Есть повторение заявок onOrder
Это вообще не проблема.
==================
И кончайте размазывать сопли по экрану.
Если хотите сравнить Вашу писанину с моей, то предлагаю напишите передачу параметров между процессами.
Я это давно уже написал во всех вариантах
Когда напишите то сравним  
Пример расчёта индекса Московской биржи, Инструкция по созданию в QUIK
 
если Вам надо формат xlsx, то с биржи можно скачать Архив ребалансировки
https://fs.moex.com/files/15237
Подключение к Quik, Как подключиться к quik для получения информации с графика и формирования заявок?
 
Цитата
Юрий написал:
Цитата
У меня уже все работает через библиотеку trans2quik но мне необходим альтернативный вариант получения данных через lua скрипт. Поэтому вот мучаюсь. С дублями все просто, получил сделку, сравнил по номеру есть ли такая уже в текущей временной табличке в памяти, если нет добавил, если есть пропустил. А после уже из этой таблички делаю с ними что надо.
Но вот как получать данные синхронно из библиотеки, по сути другой программы не связанной с моей, тут я в тупике.. и разобраться без примеров не могу потому как кодер я такой себе.. Кодю по тому что удается нагуглить в примерах.
К сожалению варианты из книги которую посоветовал  nikolz  я не осилил.. там все очень сложно. А внятных примеров найти не получается пока :(  В принципе уже нашел ( https://quikluacsharp.ru/qlua-c-cpp-csharp/vzaimodejstvie-lua-i-biblioteki-dll-napisannoj-na-c-c/com... ) как помещать данные в именованную память, но как их оттуда потом доставать в другой программе да еще и синхронно, на С++ пока не нашел примеров :(
замечу два момента.
1) если речь идет о фильтрации обезличенных сделок, то ваш вариант неправильный. Так как при большом числе сделок вы будете долго искать.
На основе своих исследований данной проблемы могу сказать, что задача решается проще. Повторная сделка приходит всегда следом за первой сделкой.
Но особенность в том, что следующая сделка по данному инструменту это не следующая сделка в потоке сделок после первой.
-----------------------
2) Вы зря не хотите реализовать через файлы. Это просто и быстро.
Более того, такие методы как   Pipe и mailslot  тоже используют запись чтение файлов.
Поэтому когда набьете руку (голову) на файлах ,то легко решите задачу с Pipe или mailslot и им подобным.

 
Подключение к Quik, Как подключиться к quik для получения информации с графика и формирования заявок?
 
и еще..
в книге есть примеры синхронизации потоков и передачи данных между процессами.
Подключение к Quik, Как подключиться к quik для получения информации с графика и формирования заявок?
 
Цитата
Юрий написал:
Цитата
nikolz написал:
проще всего передать данные через файл.-------------------------Для начала можете передавать в текстовом формате.  Для этого нет надобности делать функцию на С for Lua. т е пишите в скрипте луа данные в файл, а в своей программе читаете эти данные.  при этом Вам надо синхронизировать работу с файлом из приложений,  

Этот вариант плох тем что программа не будет знать в какой момент в файле появились новые данные. То есть надо будет постоянно опрашивать файл что не есть хорошо. Надо чтобы все было по событиям, появились данные - программа их получила. Ну и скорость опять же.. Вот мне надо получать данные о сделках, а они могут прилетать в функцию OnTrade по несколько штук в секунду. Работа через файл тут явно не лучший вариант.
Я же Вам написал, что надо синхронизировать.
Тогда программа будет знать когда банные изменились.
------------------------
Скорость будет нормальная, так как фалы хранятся в кеш в памяти, если Вы не выгружаете их сразу в файл.
Если надо , то создавайте события.
Все зависит от того, что напишите.
---------------------
Но так как Вы как я понимаю не очень владеете   вопросом, то рекомендую начать с простоя реализации.
----------------------
Рассказывать здесь другие Варианты большого смысла нет. Будут конкретные вопросы , отвечу конкретно.
----------------------
Если желаете изучить как сделать профессионально Ваши хотелки рекомендую изучить
книгу:
Джеффри РИХТЕР  
Создание эффективных WIN32-приложений
с учетом специфики 64-разрядной  версии Windows.
В ней есть почти все, что Вам нужно знать и уметь.

Подключение к Quik, Как подключиться к quik для получения информации с графика и формирования заявок?
 
Цитата
Юрий написал:
Цитата
nikolz написал:
 
Цитата
Юрий  написал:
 
Цитата
 paluke   написал:
Любой механизм ipc - сокеты, каналы, разделяемая память, сообщения, dde...
И зачем вообще отдельная программа? Что мешает делать всё прямо в dll?
 
Нужно в отдельную программу. Там слишком много завязано на нее другого разного.
А какой-нибудь наименее сложный механизм в виде примера в коде на C++ можно увидеть?  
 Что Вам мешает вызвать функцию из dll в своей программе на C++?

Не совсем понимаю как это реализовать, получается функция в DLL вызывается из LUA чтобы передать параметры, и функция в DLL вызывается из программы чтобы эти параметры получить, но как? У меня это не стыкуется в голове как это сделать :( И вообще допустимо ли одновременное подключение DLL и в сторонней программе и в LUA ?
Я потому и прошу пример кода чтобы понять как это все реализовать. Пока что я только смог получить параметры в DLL из LUA.
проще всего передать данные через файл.
-------------------------
Для начала можете передавать в текстовом формате.  
Для этого нет надобности делать функцию на С for Lua.
т е пишите в скрипте луа данные в файл, а в своей программе читаете эти данные.  
при этом Вам надо синхронизировать работу с файлом из приложений,  
Подключение к Quik, Как подключиться к quik для получения информации с графика и формирования заявок?
 
Цитата
Юрий написал:
Цитата
paluke написал:
Любой механизм ipc - сокеты, каналы, разделяемая память, сообщения, dde...
И зачем вообще отдельная программа? Что мешает делать всё прямо в dll?

Нужно в отдельную программу. Там слишком много завязано на нее другого разного.
А какой-нибудь наименее сложный механизм в виде примера в коде на C++ можно увидеть?  
Что Вам мешает вызвать функцию из dll в своей программе на C++?
Кто сможет объяснить необъяснимое?
 
Цитата
Даниил Волошин написал:
Цитата
nikolz написал:
Что-то разработчики  молчат.
Ay!!!

Добрый день,

Просим прощения, немного поторопили Вас. На демо-доступе QUIK Junior идёт эмуляция торгов - так называемый игровой полигон, следовательно причины могут отличаться от таковых на реальных торгах.

Просим Вас всё же в аналогичном формате привести в пример: номер сделки, которая пришла с запозданием, её время и время её появления на терминале, но с реального рынка (подключаясь к Сбербанку). Также укажите обязательно дату и сервер (его адрес) к которому Вы подключались.
Так мы сможем обратиться к Вашему брокеру и совместно с ним разобрать возможную задержку обезличенных сделок.
Добрый день,
Понятно.
Но хотел бы услышать Ваше объяснение применительно к Вашему демо серверу.
Судя по данным , приведенным мною выше, Вы отправляете обезличенные сделки пакетом.
Для демо сервера размер пакета получается в 1 минуту.
Полагаю, что на рабочем сервере отправка пакетами остается но возможно, что интервал меньше.
Это так?
----------------------------------
Кроме того, могу выложить задержки по свечам.
На 1 минутных свечах на демо сервере у Вас задержки до 20 секунд.
======================
Для свечей я наблюдал аналогичные задержки и на рабочем сервере. Обычно это задержка до 10 секунд.
-------------------------------
Поясните механизм возникновение этих задержек.
-------------------------------
Задержка интернет и загрузка процессора исключаются, так как их величина на несколько порядков меньше.
------------------
Пример
 
Добрый день,
по просьбе трудящихся выкладываю пример на QPILE
Код
PORTFOLIO_EX TEST;
DESCRIPTION TEST;
CLIENTS_LIST ALL_CLIENTS;
FIRMS_LIST FIRM_ID;
USE_CASE_SENSITIVE_CONSTANTS;

PROGRAM

NEW_GLOBAL("count",0)
NEW_GLOBAL("CLAS","CETS")
NEW_GLOBAL("List","USD000000TOD,EURUSD000TOD,EUR_RUB__TOD")
NEW_GLOBAL("com",0.000445)

i=1
dif=0
e=1-3*com
f=create_map()
z=create_map()
FOR SEC IN List
  s=get_param_ex(CLAS,SEC,"SHORTNAME")
  n=get_value(s,"PARAM_IMAGE")
  s=get_param_ex(CLAS,SEC,"LAST")
  p=get_value(s,"PARAM_IMAGE")+0
  s=get_param_ex(CLAS,SEC,"OFFER")
  po=get_value(s,"PARAM_IMAGE")+0
  s=get_param_ex(CLAS,SEC,"BID")
  pb=get_value(s,"PARAM_IMAGE")+0
  s=get_param_ex(CLAS,SEC,"LOTSIZE")
  q=get_value(s,"PARAM_IMAGE")+0
  z=set_value(z,"Name",n)
  z=set_value(z,"last",p)
  z=set_value(z,"bid",pb)
  z=set_value(z,"offer",po)
  z=set_value(z,"lotsize",q)
  IF count=0
   add_item(i,z)
  ELSE
   MODIFY_ITEM(i,z)
  END IF
  IF i==3
    IF pb>0
      dif=e/pb-1
      f=set_value(f,"lotsize",dif)
   END IF
  ELSE
    e=e*po
  END IF
  i=i+1
END FOR

IF count=0
  add_item(4,f)
ELSE
   MODIFY_ITEM(4,f)
END IF
 count=1
END_PROGRAM

PARAMETER Name;
PARAMETER_TITLE Name;
PARAMETER_DESCRIPTION here is Name;
PARAMETER_TYPE STRING(15);
END

PARAMETER last;
PARAMETER_TITLE last;
PARAMETER_DESCRIPTION good;
PARAMETER_TYPE STRING(10);
END

PARAMETER bid;
PARAMETER_TITLE bid;
PARAMETER_DESCRIPTION good;
PARAMETER_TYPE STRING(10);
END

PARAMETER offer;
PARAMETER_TITLE offer;
PARAMETER_DESCRIPTION good;
PARAMETER_TYPE STRING(10);
END

PARAMETER LOTSIZE;
PARAMETER_TITLE lotsize;
PARAMETER_DESCRIPTION good;
PARAMETER_TYPE STRING(10);
END

END_PORTFOLIO_EX


 
Кто сможет объяснить необъяснимое?
 
Что-то разработчики  молчат.
Ay!!!
Подключение к Quik, Как подключиться к quik для получения информации с графика и формирования заявок?
 
Цитата
Юрий написал:
Коллеги! А можно это все как-то в виде примера с кодом увидеть? Нужно получать в реалтайме данные о сделках и подробности по бумаге (шаг цены, стоимость, число знаков и т.д.) во внешней программе на C++ через некий lua скрипт и я никак этому не дам ума так как нет опыта :(
Сначала получите эти параметры в луа, а потом передадите их в свою функцию на CИ.
Примеры использования Api C for Lua  есть в документации по луа
https://lua.org.ru/manual_ru.html#lua_call
https://www.lua.org/manual/5.3/
или в ссылке выше.
Утечки памяти в quik 10.0.1.18
 
Цитата
Василий написал:
Цитата
nikolz написал:
В таблице запуска скриптов отображается память занимаемая скриптом.
Посмотрите как она изменяется.  
Попробуйте отключить скрипты.
Согласно той таблице, скрипты занимают несколько мегабайт.
А согласно таск менеджеру, квик занимает 3 гигабайта.
Да в нём и раньше утечки памяти были, но вроде фиксили. Вот опять.
Я пытался старую версию из бекапа восстановить, скопировав поверх текущих файлов, но не запустилось. Какая-то ошибка.
я три раза пытался ставить версию 9 но снес и работаю на 8.7
Но то что у Вас 3 ГБ  это не проблема версии.
посмотрите сколько у Вас выбрано инструментов и параметров в заказе данных.
При смене версий установки могут встать по умолчанию.
еще в настройках уберите восстанавливать пропущенные данные, если установлено.
Утечки памяти в quik 10.0.1.18
 
Цитата
Василий написал:
Цитата
nikolz написал:
Возможно, это не утечка.
В зависимости от настройки может сохранятся или нет история параметров и ТТП для построения индикаторов.
Если история параметров сохраняется, то и затраты памяти растут.
Но у меня же нет никакой активности, кроме скриптов lua.
В том числе никаких индикаторов. Вообще никаких таблиц и графиков не открыто.
Если бы я каждую секунду менял настройки, то можно было бы понять гигабайт истории параметров.
А так - навряд ли. Да и на предыдущей версии такого не было.
В таблице запуска скриптов отображается память занимаемая скриптом.
Посмотрите как она изменяется.  
Попробуйте отключить скрипты.
Скрипт не видит значение индикатора с определенной периодичностью.
 
Цитата
Юрий написал:
Методом научного тыка определил, что проблема кроется в этом блоке (297 строка кода):     Скрытый текст        
Код
   IF  ( 0   +  IS_CONNECTED()  =   1 )
seconline = SUBSTR(Get_Info_Param( "CONNECTIONTIME" ), 6 , 2 )
minonline = SUBSTR(Get_Info_Param( "CONNECTIONTIME" ), 3 , 2 )
houronline = SUBSTR(Get_Info_Param( "CONNECTIONTIME" ), 0 , 2 )
   if  (((houronline +  0 ) >  1 )  or  ((minonline +  0 ) >  1 )  or  ((seconline +  0 ) >  20 )) 
  work =  1 
   end   if 
 end   if    
Не нашел информации в каком формате предоставляются данные CONNECTIONTIME.
Знающие люди, подскажите пожалуйста!
внимательно читайте документацию:
STRING getInfoParam (STRING param_name)
Утечки памяти в quik 10.0.1.18
 
Цитата
Василий написал:
Здравствуйте,

У меня последняя версия quik (открытие) 10.0.1.18. При работе медленно растёт объём используемой памяти.
Только вчера перезапускал (примерно 23 часа назад), и уже Task Manager показывает, что quik занимает 1945 MB. За несколько минут число вырастает на несколько мегабайт.
Перезапустил, теперь quik потребляет всего 492 мегабайта.
Такого не было на последней версии на дату 24.12.2022. После этого не обновлял до 16.04.2023, всё было хорошо - quik мог работать неделю без сильного роста используемой памяти. Как обновил, а потом ещё раз 18.04.2023, так пошли утечки.
У меня постоянно запущены скрипты lua, кроме этого никакой активности.

Хотелось бы, чтобы устранили утечки памяти.
Спасибо.
Возможно, это не утечка.
В зависимости от настройки может сохранятся или нет история параметров и ТТП для построения индикаторов.
Если история параметров сохраняется, то и затраты памяти растут.
Кто сможет объяснить необъяснимое?
 
Даниил Волошин,
Добрый день,

Вам достаточно информации, что объяснить по данным Вашего демо сервера:
-----------------------------
1) повторение обезличенных сделок в onAllTrade
----------------------------------
2) запаздывание прихода обезличенных сделок до 60 секунд по ликвидному инструменту SBER.
Кто сможет объяснить необъяснимое?
 
в итоге имеем это:
229:156066>64821,89358,916,70,5,18,2,11,3,3,7,11,7,9,22,6,23,13,4,13,30,23,16,10,1,6,8,4,25,8,9,11,41,47,1,18,43,10,4,10,4,9,13,6,22,9,4,15,22,7,44,13,10,3,22,2,2,4,6,10,7,6,3,2,2,10,1,2,1,4,8,6,
Кто сможет объяснить необъяснимое?
 
отфильтровал повторяющиеся сделки.
----------------------
В итоге получаем:
Код
26361,SBER,num=4781728079,size=57343,HMS=26306.0,dt=55.0,n=0,m=56,clock=2.4609999999998
26361,SBER,num=4781728080,size=57344,HMS=26306.0,dt=55.0,n=0,m=56,clock=2.4609999999998
26361,SBER,num=4781728081,size=57345,HMS=26306.0,dt=55.0,n=0,m=56,clock=2.462
26361,SBER,num=4781728082,size=57346,HMS=26306.0,dt=55.0,n=0,m=56,clock=2.462
26361,SBER,num=4781728083,size=57347,HMS=26306.0,dt=55.0,n=0,m=56,clock=2.462
26361,SBER,num=4781728084,size=57348,HMS=26306.0,dt=55.0,n=0,m=56,clock=2.462
26361,SBER,num=4781728086,size=57350,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.462
26361,SBER,num=4781728087,size=57351,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.462
26361,SBER,num=4781728088,size=57352,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.462
26361,SBER,num=4781728089,size=57353,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.462
26361,SBER,num=4781728090,size=57354,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.462
26361,SBER,num=4781728091,size=57355,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.462
26361,SBER,num=4781728092,size=57356,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.462
26361,SBER,num=4781728093,size=57357,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.462
26361,SBER,num=4781728094,size=57358,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.462
26361,SBER,num=4781728095,size=57359,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.462
26361,SBER,num=4781728096,size=57360,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.462
26361,SBER,num=4781728097,size=57361,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.462
26361,SBER,num=4781728098,size=57362,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.462
26361,SBER,num=4781728099,size=57363,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.462
26361,SBER,num=4781728100,size=57364,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.462
26361,SBER,num=4781728101,size=57365,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.462
26361,SBER,num=4781728102,size=57366,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.462
26361,SBER,num=4781728103,size=57367,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.4630000000002
26361,SBER,num=4781728104,size=57368,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.4630000000002
26361,SBER,num=4781728105,size=57369,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.4630000000002
26361,SBER,num=4781728106,size=57370,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.4630000000002
26361,SBER,num=4781728107,size=57371,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.4630000000002
26361,SBER,num=4781728108,size=57372,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.4630000000002
26361,SBER,num=4781728109,size=57373,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.4630000000002
26361,SBER,num=4781728110,size=57374,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.4630000000002
26361,SBER,num=4781728111,size=57375,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.4630000000002
26361,SBER,num=4781728112,size=57376,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.4630000000002
26361,SBER,num=4781728113,size=57377,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.4630000000002
26361,SBER,num=4781728114,size=57378,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.4630000000002
26361,SBER,num=4781728115,size=57379,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.4630000000002
26361,SBER,num=4781728116,size=57380,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.4630000000002
26361,SBER,num=4781728117,size=57381,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.4630000000002
26361,SBER,num=4781728118,size=57382,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.4630000000002
26361,SBER,num=4781728119,size=57383,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.4630000000002
26361,SBER,num=4781728120,size=57384,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.4630000000002
26361,SBER,num=4781728121,size=57385,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.4630000000002
26361,SBER,num=4781728122,size=57386,HMS=26307.0,dt=54.0,n=0,m=55,clock=2.4639999999999
26361,SBER,num=4781728129,size=57388,HMS=26308.0,dt=53.0,n=0,m=54,clock=2.4639999999999
26361,SBER,num=4781728160,size=57390,HMS=26309.0,dt=52.0,n=0,m=53,clock=2.4639999999999
26361,SBER,num=4781728180,size=57392,HMS=26310.0,dt=51.0,n=0,m=52,clock=2.4639999999999
26361,SBER,num=4781728181,size=57393,HMS=26310.0,dt=51.0,n=0,m=52,clock=2.4639999999999
26361,SBER,num=4781728182,size=57394,HMS=26310.0,dt=51.0,n=0,m=52,clock=2.4639999999999
26361,SBER,num=4781728183,size=57395,HMS=26310.0,dt=51.0,n=0,m=52,clock=2.4639999999999
26361,SBER,num=4781728184,size=57396,HMS=26310.0,dt=51.0,n=0,m=52,clock=2.4639999999999
26361,SBER,num=4781728185,size=57397,HMS=26310.0,dt=51.0,n=0,m=52,clock=2.4639999999999
26361,SBER,num=4781728186,size=57398,HMS=26310.0,dt=51.0,n=0,m=52,clock=2.4639999999999
26361,SBER,num=4781728187,size=57399,HMS=26310.0,dt=51.0,n=0,m=52,clock=2.4639999999999
26361,SBER,num=4781728188,size=57400,HMS=26310.0,dt=51.0,n=0,m=52,clock=2.4639999999999
26361,SBER,num=4781728189,size=57401,HMS=26310.0,dt=51.0,n=0,m=52,clock=2.4639999999999
26361,SBER,num=4781728190,size=57402,HMS=26310.0,dt=51.0,n=0,m=52,clock=2.4639999999999
26361,SBER,num=4781728191,size=57403,HMS=26310.0,dt=51.0,n=0,m=52,clock=2.4639999999999
26361,SBER,num=4781728210,size=57406,HMS=26312.0,dt=49.0,n=0,m=50,clock=2.4639999999999
26361,SBER,num=4781728211,size=57407,HMS=26312.0,dt=49.0,n=0,m=50,clock=2.4639999999999
26361,SBER,num=4781728219,size=57408,HMS=26312.0,dt=49.0,n=0,m=50,clock=2.4639999999999
26361,SBER,num=4781728234,size=57410,HMS=26313.0,dt=48.0,n=0,m=49,clock=2.4639999999999
26361,SBER,num=4781728235,size=57411,HMS=26313.0,dt=48.0,n=0,m=49,clock=2.4639999999999
26361,SBER,num=4781728236,size=57412,HMS=26313.0,dt=48.0,n=0,m=49,clock=2.4650000000001
26361,SBER,num=4781728237,size=57413,HMS=26313.0,dt=48.0,n=0,m=49,clock=2.4650000000001
26361,SBER,num=4781728238,size=57414,HMS=26313.0,dt=48.0,n=0,m=49,clock=2.4650000000001
26361,SBER,num=4781728239,size=57415,HMS=26313.0,dt=48.0,n=0,m=49,clock=2.4650000000001
26361,SBER,num=4781728240,size=57416,HMS=26313.0,dt=48.0,n=0,m=49,clock=2.4650000000001
26361,SBER,num=4781728271,size=57419,HMS=26315.0,dt=46.0,n=0,m=47,clock=2.4650000000001
26361,SBER,num=4781728279,size=57421,HMS=26316.0,dt=45.0,n=0,m=46,clock=2.4650000000001
26361,SBER,num=4781728282,size=57422,HMS=26316.0,dt=45.0,n=0,m=46,clock=2.4650000000001
26361,SBER,num=4781728323,size=57424,HMS=26318.0,dt=43.0,n=0,m=44,clock=2.4650000000001
26361,SBER,num=4781728324,size=57425,HMS=26318.0,dt=43.0,n=0,m=44,clock=2.4650000000001
26361,SBER,num=4781728325,size=57426,HMS=26318.0,dt=43.0,n=0,m=44,clock=2.4650000000001
26361,SBER,num=4781728326,size=57427,HMS=26318.0,dt=43.0,n=0,m=44,clock=2.4650000000001
26361,SBER,num=4781728327,size=57428,HMS=26318.0,dt=43.0,n=0,m=44,clock=2.4650000000001
26361,SBER,num=4781728328,size=57429,HMS=26318.0,dt=43.0,n=0,m=44,clock=2.4650000000001
26361,SBER,num=4781728329,size=57430,HMS=26318.0,dt=43.0,n=0,m=44,clock=2.4650000000001
26361,SBER,num=4781728330,size=57431,HMS=26318.0,dt=43.0,n=0,m=44,clock=2.4650000000001
26361,SBER,num=4781728409,size=57433,HMS=26320.0,dt=41.0,n=0,m=42,clock=2.4650000000001
26361,SBER,num=4781728761,size=57440,HMS=26335.0,dt=26.0,n=0,m=27,clock=2.4659999999999
26361,SBER,num=4781728762,size=57441,HMS=26335.0,dt=26.0,n=0,m=27,clock=2.4659999999999
26361,SBER,num=4781728773,size=57443,HMS=26336.0,dt=25.0,n=0,m=26,clock=2.4659999999999
26361,SBER,num=4781728800,size=57445,HMS=26337.0,dt=24.0,n=0,m=25,clock=2.4659999999999
26361,SBER,num=4781728807,size=57447,HMS=26338.0,dt=23.0,n=0,m=24,clock=2.4659999999999
26361,SBER,num=4781728808,size=57448,HMS=26338.0,dt=23.0,n=0,m=24,clock=2.4659999999999
26361,SBER,num=4781728810,size=57449,HMS=26338.0,dt=23.0,n=0,m=24,clock=2.4659999999999
26361,SBER,num=4781728811,size=57450,HMS=26338.0,dt=23.0,n=0,m=24,clock=2.4659999999999
26361,SBER,num=4781728812,size=57451,HMS=26338.0,dt=23.0,n=0,m=24,clock=2.4659999999999
26361,SBER,num=4781728813,size=57452,HMS=26338.0,dt=23.0,n=0,m=24,clock=2.4659999999999
26361,SBER,num=4781728814,size=57453,HMS=26338.0,dt=23.0,n=0,m=24,clock=2.4659999999999
26361,SBER,num=4781728815,size=57454,HMS=26338.0,dt=23.0,n=0,m=24,clock=2.4659999999999
26361,SBER,num=4781728816,size=57455,HMS=26338.0,dt=23.0,n=0,m=24,clock=2.4659999999999
26361,SBER,num=4781728817,size=57456,HMS=26338.0,dt=23.0,n=0,m=24,clock=2.4659999999999
26361,SBER,num=4781728818,size=57457,HMS=26338.0,dt=23.0,n=0,m=24,clock=2.4659999999999
26361,SBER,num=4781728819,size=57458,HMS=26338.0,dt=23.0,n=0,m=24,clock=2.4659999999999
26361,SBER,num=4781728820,size=57459,HMS=26338.0,dt=23.0,n=0,m=24,clock=2.4659999999999
26361,SBER,num=4781728821,size=57460,HMS=26338.0,dt=23.0,n=0,m=24,clock=2.4659999999999
26361,SBER,num=4781728825,size=57461,HMS=26338.0,dt=23.0,n=0,m=24,clock=2.4659999999999
26361,SBER,num=4781728826,size=57462,HMS=26338.0,dt=23.0,n=0,m=24,clock=2.4659999999999
26361,SBER,num=4781728829,size=57464,HMS=26339.0,dt=22.0,n=0,m=23,clock=2.4659999999999
26361,SBER,num=4781728830,size=57465,HMS=26339.0,dt=22.0,n=0,m=23,clock=2.4670000000001
26361,SBER,num=4781728831,size=57466,HMS=26339.0,dt=22.0,n=0,m=23,clock=2.4670000000001
26361,SBER,num=4781728832,size=57467,HMS=26339.0,dt=22.0,n=0,m=23,clock=2.4670000000001
26361,SBER,num=4781728833,size=57468,HMS=26339.0,dt=22.0,n=0,m=23,clock=2.4670000000001
26361,SBER,num=4781728834,size=57469,HMS=26339.0,dt=22.0,n=0,m=23,clock=2.4670000000001
26361,SBER,num=4781728835,size=57470,HMS=26339.0,dt=22.0,n=0,m=23,clock=2.4670000000001
26361,SBER,num=4781728836,size=57471,HMS=26339.0,dt=22.0,n=0,m=23,clock=2.4670000000001
26361,SBER,num=4781728837,size=57472,HMS=26339.0,dt=22.0,n=0,m=23,clock=2.4670000000001
26361,SBER,num=4781728838,size=57473,HMS=26339.0,dt=22.0,n=0,m=23,clock=2.4670000000001
26361,SBER,num=4781728839,size=57474,HMS=26339.0,dt=22.0,n=0,m=23,clock=2.4670000000001
26361,SBER,num=4781728840,size=57475,HMS=26339.0,dt=22.0,n=0,m=23,clock=2.4670000000001
26361,SBER,num=4781728843,size=57476,HMS=26339.0,dt=22.0,n=0,m=23,clock=2.4670000000001
26361,SBER,num=4781728844,size=57477,HMS=26339.0,dt=22.0,n=0,m=23,clock=2.4670000000001
26361,SBER,num=4781728845,size=57478,HMS=26339.0,dt=22.0,n=0,m=23,clock=2.4670000000001
26361,SBER,num=4781728846,size=57479,HMS=26339.0,dt=22.0,n=0,m=23,clock=2.4670000000001
26361,SBER,num=4781728847,size=57480,HMS=26339.0,dt=22.0,n=0,m=23,clock=2.4670000000001
26361,SBER,num=4781728848,size=57481,HMS=26339.0,dt=22.0,n=0,m=23,clock=2.4670000000001
26361,SBER,num=4781728849,size=57482,HMS=26339.0,dt=22.0,n=0,m=23,clock=2.4670000000001
26361,SBER,num=4781728850,size=57483,HMS=26339.0,dt=22.0,n=0,m=23,clock=2.4670000000001
26361,SBER,num=4781728851,size=57484,HMS=26339.0,dt=22.0,n=0,m=23,clock=2.4670000000001
26361,SBER,num=4781728852,size=57485,HMS=26339.0,dt=22.0,n=0,m=23,clock=2.4670000000001
26361,SBER,num=4781728853,size=57486,HMS=26339.0,dt=22.0,n=0,m=23,clock=2.4670000000001
26361,SBER,num=4781728855,size=57488,HMS=26340.0,dt=21.0,n=0,m=22,clock=2.4679999999998
26361,SBER,num=4781728856,size=57489,HMS=26340.0,dt=21.0,n=0,m=22,clock=2.4679999999998
26361,SBER,num=4781728857,size=57490,HMS=26340.0,dt=21.0,n=0,m=22,clock=2.4679999999998
26361,SBER,num=4781728858,size=57491,HMS=26340.0,dt=21.0,n=0,m=22,clock=2.4679999999998
26361,SBER,num=4781728859,size=57492,HMS=26340.0,dt=21.0,n=0,m=22,clock=2.4679999999998
26361,SBER,num=4781728860,size=57493,HMS=26340.0,dt=21.0,n=0,m=22,clock=2.4679999999998
26361,SBER,num=4781728861,size=57494,HMS=26340.0,dt=21.0,n=0,m=22,clock=2.4679999999998
26361,SBER,num=4781728862,size=57495,HMS=26340.0,dt=21.0,n=0,m=22,clock=2.4679999999998
26361,SBER,num=4781728866,size=57496,HMS=26340.0,dt=21.0,n=0,m=22,clock=2.4679999999998
26361,SBER,num=4781728885,size=57498,HMS=26341.0,dt=20.0,n=0,m=21,clock=2.4679999999998
26361,SBER,num=4781728886,size=57499,HMS=26341.0,dt=20.0,n=0,m=21,clock=2.4679999999998
26361,SBER,num=4781728887,size=57500,HMS=26341.0,dt=20.0,n=0,m=21,clock=2.4679999999998
26361,SBER,num=4781728888,size=57501,HMS=26341.0,dt=20.0,n=0,m=21,clock=2.4679999999998
26361,SBER,num=4781728889,size=57502,HMS=26341.0,dt=20.0,n=0,m=21,clock=2.4679999999998
26361,SBER,num=4781728894,size=57503,HMS=26341.0,dt=20.0,n=0,m=21,clock=2.4679999999998
26361,SBER,num=4781728898,size=57505,HMS=26342.0,dt=19.0,n=0,m=20,clock=2.4679999999998
26361,SBER,num=4781728899,size=57506,HMS=26342.0,dt=19.0,n=0,m=20,clock=2.4679999999998
26361,SBER,num=4781728900,size=57507,HMS=26342.0,dt=19.0,n=0,m=20,clock=2.4679999999998
26361,SBER,num=4781728935,size=57510,HMS=26344.0,dt=17.0,n=0,m=18,clock=2.4679999999998
26361,SBER,num=4781728937,size=57511,HMS=26344.0,dt=17.0,n=0,m=18,clock=2.4679999999998
26361,SBER,num=4781728938,size=57512,HMS=26344.0,dt=17.0,n=0,m=18,clock=2.4679999999998
26361,SBER,num=4781728939,size=57513,HMS=26344.0,dt=17.0,n=0,m=18,clock=2.4690000000001
26361,SBER,num=4781728940,size=57514,HMS=26344.0,dt=17.0,n=0,m=18,clock=2.4690000000001
26361,SBER,num=4781728942,size=57515,HMS=26344.0,dt=17.0,n=0,m=18,clock=2.4690000000001
26361,SBER,num=4781728943,size=57516,HMS=26344.0,dt=17.0,n=0,m=18,clock=2.4690000000001
26361,SBER,num=4781728944,size=57517,HMS=26344.0,dt=17.0,n=0,m=18,clock=2.4690000000001
26361,SBER,num=4781728945,size=57518,HMS=26344.0,dt=17.0,n=0,m=18,clock=2.4690000000001
26361,SBER,num=4781728946,size=57519,HMS=26344.0,dt=17.0,n=0,m=18,clock=2.4690000000001
26361,SBER,num=4781728947,size=57520,HMS=26344.0,dt=17.0,n=0,m=18,clock=2.4690000000001
26361,SBER,num=4781728948,size=57521,HMS=26344.0,dt=17.0,n=0,m=18,clock=2.4690000000001
26361,SBER,num=4781728949,size=57522,HMS=26344.0,dt=17.0,n=0,m=18,clock=2.4690000000001
26361,SBER,num=4781728952,size=57524,HMS=26345.0,dt=16.0,n=0,m=17,clock=2.4690000000001
26361,SBER,num=4781728953,size=57525,HMS=26345.0,dt=16.0,n=0,m=17,clock=2.4690000000001
26361,SBER,num=4781728954,size=57526,HMS=26345.0,dt=16.0,n=0,m=17,clock=2.4690000000001
26361,SBER,num=4781728955,size=57527,HMS=26345.0,dt=16.0,n=0,m=17,clock=2.471
26361,SBER,num=4781728956,size=57528,HMS=26345.0,dt=16.0,n=0,m=17,clock=2.471
26361,SBER,num=4781728957,size=57529,HMS=26345.0,dt=16.0,n=0,m=17,clock=2.471
26361,SBER,num=4781728958,size=57530,HMS=26345.0,dt=16.0,n=0,m=17,clock=2.471
26361,SBER,num=4781728959,size=57531,HMS=26345.0,dt=16.0,n=0,m=17,clock=2.471
26361,SBER,num=4781728960,size=57532,HMS=26345.0,dt=16.0,n=0,m=17,clock=2.471
26361,SBER,num=4781728961,size=57533,HMS=26345.0,dt=16.0,n=0,m=17,clock=2.471
26361,SBER,num=4781728962,size=57534,HMS=26345.0,dt=16.0,n=0,m=17,clock=2.471
26361,SBER,num=4781728963,size=57535,HMS=26345.0,dt=16.0,n=0,m=17,clock=2.471
26361,SBER,num=4781728964,size=57536,HMS=26345.0,dt=16.0,n=0,m=17,clock=2.471
26361,SBER,num=4781728965,size=57537,HMS=26345.0,dt=16.0,n=0,m=17,clock=2.471
26361,SBER,num=4781728966,size=57538,HMS=26345.0,dt=16.0,n=0,m=17,clock=2.471
26361,SBER,num=4781728967,size=57539,HMS=26345.0,dt=16.0,n=0,m=17,clock=2.471
26361,SBER,num=4781728968,size=57540,HMS=26345.0,dt=16.0,n=0,m=17,clock=2.471
26361,SBER,num=4781728969,size=57541,HMS=26345.0,dt=16.0,n=0,m=17,clock=2.471
26361,SBER,num=4781728970,size=57542,HMS=26345.0,dt=16.0,n=0,m=17,clock=2.471
26361,SBER,num=4781728972,size=57543,HMS=26345.0,dt=16.0,n=0,m=17,clock=2.471
26361,SBER,num=4781728980,size=57545,HMS=26346.0,dt=15.0,n=0,m=16,clock=2.471
26361,SBER,num=4781729002,size=57546,HMS=26346.0,dt=15.0,n=0,m=16,clock=2.471
26361,SBER,num=4781729009,size=57547,HMS=26346.0,dt=15.0,n=0,m=16,clock=2.471
26361,SBER,num=4781729052,size=57550,HMS=26348.0,dt=13.0,n=0,m=14,clock=2.471
26361,SBER,num=4781729053,size=57551,HMS=26348.0,dt=13.0,n=0,m=14,clock=2.471
26361,SBER,num=4781729054,size=57552,HMS=26348.0,dt=13.0,n=0,m=14,clock=2.4719999999998
26361,SBER,num=4781729055,size=57553,HMS=26348.0,dt=13.0,n=0,m=14,clock=2.4719999999998
26361,SBER,num=4781729056,size=57554,HMS=26348.0,dt=13.0,n=0,m=14,clock=2.4719999999998
26361,SBER,num=4781729057,size=57555,HMS=26348.0,dt=13.0,n=0,m=14,clock=2.4719999999998
26361,SBER,num=4781729058,size=57556,HMS=26348.0,dt=13.0,n=0,m=14,clock=2.4719999999998
26361,SBER,num=4781729059,size=57557,HMS=26348.0,dt=13.0,n=0,m=14,clock=2.4719999999998
26361,SBER,num=4781729060,size=57558,HMS=26348.0,dt=13.0,n=0,m=14,clock=2.4719999999998
26361,SBER,num=4781729119,size=57561,HMS=26351.0,dt=10.0,n=0,m=11,clock=2.4719999999998
26361,SBER,num=4781729151,size=57563,HMS=26352.0,dt=9.0,n=0,m=10,clock=2.4719999999998
26361,SBER,num=4781729152,size=57564,HMS=26352.0,dt=9.0,n=0,m=10,clock=2.4719999999998
26361,SBER,num=4781729170,size=57566,HMS=26353.0,dt=8.0,n=0,m=9,clock=2.4719999999998
26361,SBER,num=4781729171,size=57567,HMS=26353.0,dt=8.0,n=0,m=9,clock=2.4719999999998
26361,SBER,num=4781729172,size=57568,HMS=26353.0,dt=8.0,n=0,m=9,clock=2.4719999999998
26361,SBER,num=4781729192,size=57570,HMS=26355.0,dt=6.0,n=0,m=7,clock=2.4719999999998
26361,SBER,num=4781729215,size=57572,HMS=26356.0,dt=5.0,n=0,m=6,clock=2.4719999999998
26361,SBER,num=4781729216,size=57573,HMS=26356.0,dt=5.0,n=0,m=6,clock=2.4719999999998
26361,SBER,num=4781729218,size=57574,HMS=26356.0,dt=5.0,n=0,m=6,clock=2.4719999999998
26361,SBER,num=4781729219,size=57575,HMS=26356.0,dt=5.0,n=0,m=6,clock=2.4719999999998
26361,SBER,num=4781729220,size=57576,HMS=26356.0,dt=5.0,n=0,m=6,clock=2.473
26361,SBER,num=4781729221,size=57577,HMS=26356.0,dt=5.0,n=0,m=6,clock=2.473
26361,SBER,num=4781729222,size=57578,HMS=26356.0,dt=5.0,n=0,m=6,clock=2.473
26361,SBER,num=4781729223,size=57579,HMS=26356.0,dt=5.0,n=0,m=6,clock=2.473
26361,SBER,num=4781729224,size=57580,HMS=26356.0,dt=5.0,n=0,m=6,clock=2.473
26361,SBER,num=4781729225,size=57581,HMS=26356.0,dt=5.0,n=0,m=6,clock=2.473
26361,SBER,num=4781729226,size=57582,HMS=26356.0,dt=5.0,n=0,m=6,clock=2.473
26361,SBER,num=4781729227,size=57583,HMS=26356.0,dt=5.0,n=0,m=6,clock=2.473
26361,SBER,num=4781729233,size=57585,HMS=26357.0,dt=4.0,n=0,m=5,clock=2.473
26361,SBER,num=4781729234,size=57586,HMS=26357.0,dt=4.0,n=0,m=5,clock=2.473
26361,SBER,num=4781729237,size=57587,HMS=26357.0,dt=4.0,n=0,m=5,clock=2.473
26361,SBER,num=4781729244,size=57588,HMS=26357.0,dt=4.0,n=0,m=5,clock=2.473
26361,SBER,num=4781729253,size=57590,HMS=26358.0,dt=3.0,n=0,m=4,clock=2.473
26361,SBER,num=4781729254,size=57591,HMS=26358.0,dt=3.0,n=0,m=4,clock=2.473
26361,SBER,num=4781729255,size=57592,HMS=26358.0,dt=3.0,n=0,m=4,clock=2.473
26361,SBER,num=4781729256,size=57593,HMS=26358.0,dt=3.0,n=0,m=4,clock=2.473
26361,SBER,num=4781729257,size=57594,HMS=26358.0,dt=3.0,n=0,m=4,clock=2.473
26361,SBER,num=4781729258,size=57595,HMS=26358.0,dt=3.0,n=0,m=4,clock=2.473
26361,SBER,num=4781729259,size=57596,HMS=26358.0,dt=3.0,n=0,m=4,clock=2.473
26361,SBER,num=4781729260,size=57597,HMS=26358.0,dt=3.0,n=0,m=4,clock=2.473
26361,SBER,num=4781729261,size=57598,HMS=26358.0,dt=3.0,n=0,m=4,clock=2.4740000000002
26361,SBER,num=4781729262,size=57599,HMS=26358.0,dt=3.0,n=0,m=4,clock=2.4740000000002
26361,SBER,num=4781729263,size=57600,HMS=26358.0,dt=3.0,n=0,m=4,clock=2.4740000000002
26361,SBER,num=4781729264,size=57601,HMS=26358.0,dt=3.0,n=0,m=4,clock=2.4740000000002
26361,SBER,num=4781729265,size=57602,HMS=26358.0,dt=3.0,n=0,m=4,clock=2.4740000000002
26361,SBER,num=4781729266,size=57603,HMS=26358.0,dt=3.0,n=0,m=4,clock=2.4740000000002
26361,SBER,num=4781729267,size=57604,HMS=26358.0,dt=3.0,n=0,m=4,clock=2.4740000000002
анализ результата:
----------------------
1-я сделка
26361,SBER,num=4781728079,size=57343,HMS=26306.0,dt=55.0,n=0,m=56,clock=2.4609999999998
------------------------------
последняя сделка
26361,SBER,num=4781729267,size=57604,HMS=26358.0,dt=3.0,n=0,m=4,clock=2.4740000000002
---------------------
Первое число 26361 -  это время компьютера в секундах. Оно не изменилось
-------------------------
Последнее число - это os.clock в секундах изменяется от 2.461 до 2.474  т е на 13 миллисекунд.
----------------------
HMS - время сделок в секундах изменилось от  26306   до 26358  т е на 52 секунды
----------------------
Таким образом , запаздывание прихода сделок самого ликвидного инструмента составило 52 секунду.
-----------------------------------------
Причем, сделки почти за минуту получили за  13 миллисекунд
------------------------------
Все верно?
-----------------------------
Можете объяснить?
Кто сможет объяснить необъяснимое?
 
Цитата
Даниил Волошин написал:
Нужен также номер сделки, по которому можно её отследить на всех этапах её следования.
Обнаружил, что
в колбек onAllTrade  сделки прилетают повторно!!!!
-------------------
Написал для этого такой тест:
Код
local ds={}
local count=0;

function OnParam(c,s)
   local z=ds[c..s] if z==nil then d,err=CreateDataSource (c,s,INTERVAL_TICK); if d then  d:SetEmptyCallback(); ds[c..s]={d,0,0}; end end
end

function OnAllTrade(t)
   count=count+1;
   local c,s=t.class_code,t.sec_code;  local z=ds[c..s]; local num=t.trade_num;
   if z then
      if z[2]==num then
      Log:write(os.date()..","..tostring(s)..",num="..tostring(num)..","..tostring(count)..",повторение "..tostring(z[3]) .."\n"); Log:flush();
      else
         Log:write(os.date()..","..tostring(s)..",num="..tostring(num)..","..tostring(count).."\n"); Log:flush();
      end
      z[2]=num; z[3]=count;
   end
end

function OnInit(pfile)  local path = getScriptPath(); Log=io.open(path.."/test.log","w") end
function main()  while true do     sleep(1000); end  end
В результате имеем:
Код
ri Apr 21 18:18:08 2023,GDM3,num=1936585274704269063,12
Fri Apr 21 18:18:08 2023,GDM3,num=1936585274704269064,13
Fri Apr 21 18:18:08 2023,GDM3,num=1936585274704269065,14
Fri Apr 21 18:18:08 2023,GDM3,num=1936585274704269066,15
Fri Apr 21 18:18:08 2023,GDM3,num=1936585274704269067,16
Fri Apr 21 18:18:16 2023,GDM3,num=1936585274704269067,17,повторение 16
Fri Apr 21 18:18:16 2023,GLDRUB_TOM,num=112298,18
Fri Apr 21 18:18:17 2023,USD000UTSTOM,num=112272,19
Fri Apr 21 18:18:17 2023,USD000UTSTOM,num=112273,20
Fri Apr 21 18:18:17 2023,USD000UTSTOM,num=112274,21
Fri Apr 21 18:18:17 2023,USD000UTSTOM,num=112275,22
Fri Apr 21 18:18:17 2023,USD000UTSTOM,num=112276,23
Fri Apr 21 18:18:17 2023,USD000UTSTOM,num=112277,24
Fri Apr 21 18:18:17 2023,GDM3,num=1936585274704269067,25,повторение 17
Fri Apr 21 18:18:17 2023,USD000UTSTOM,num=112294,26
Fri Apr 21 18:18:17 2023,USD000UTSTOM,num=112295,27
Fri Apr 21 18:18:17 2023,USD000UTSTOM,num=112296,28
Fri Apr 21 18:18:17 2023,USD000UTSTOM,num=112297,29
Fri Apr 21 18:18:17 2023,GLDRUB_TOM,num=112298,30,повторение 18
Fri Apr 21 18:18:17 2023,USD000UTSTOM,num=112301,31
Fri Apr 21 18:18:17 2023,USD000UTSTOM,num=112302,32
Fri Apr 21 18:18:19 2023,GDM3,num=1936585274704269067,33,повторение 25
Fri Apr 21 18:18:19 2023,GLDRUB_TOM,num=112298,34,повторение 30
Fri Apr 21 18:18:19 2023,USD000UTSTOM,num=112302,35,повторение 32
Fri Apr 21 18:18:20 2023,CNYRUB_TOM,num=112270,36
Fri Apr 21 18:18:20 2023,CNYRUB_TOM,num=112271,37
Fri Apr 21 18:18:20 2023,CNYRUB_TOM,num=112292,38
Fri Apr 21 18:18:20 2023,GDM3,num=1936585274704269067,39,повторение 33
Fri Apr 21 18:18:20 2023,GLDRUB_TOM,num=112298,40,повторение 34
Fri Apr 21 18:18:20 2023,CNYRUB_TOM,num=112299,41
Fri Apr 21 18:18:20 2023,CNYRUB_TOM,num=112300,42
Fri Apr 21 18:18:20 2023,USD000UTSTOM,num=112302,43,повторение 35
Fri Apr 21 18:18:21 2023,GDM3,num=1936585274704269068,44
Fri Apr 21 18:18:21 2023,USD000000TOD,num=112282,45
Fri Apr 21 18:18:21 2023,USD000000TOD,num=112291,46
Fri Apr 21 18:18:21 2023,USD000000TOD,num=112293,47
Fri Apr 21 18:18:21 2023,GLDRUB_TOM,num=112298,48,повторение 40
Fri Apr 21 18:18:21 2023,CNYRUB_TOM,num=112300,49,повторение 42
Fri Apr 21 18:18:21 2023,USD000UTSTOM,num=112302,50,повторение 43
Fri Apr 21 18:18:21 2023,GDM3,num=1936585274704269068,51,повторение 44
Fri Apr 21 18:18:24 2023,USD000000TOD,num=112293,52,повторение 47
Fri Apr 21 18:18:24 2023,GLDRUB_TOM,num=112298,53,повторение 48
Fri Apr 21 18:18:24 2023,CNYRUB_TOM,num=112300,54,повторение 49
Fri Apr 21 18:18:24 2023,USD000UTSTOM,num=112302,55,повторение 50
Fri Apr 21 18:18:24 2023,GDM3,num=1936585274704269068,56,повторение 51
Fri Apr 21 18:18:24 2023,GDM3,num=1936585274704269069,57
Fri Apr 21 18:18:24 2023,CNYRUB_TOM,num=112306,58
Fri Apr 21 18:18:25 2023,GDM3,num=1936585274704269070,59
Fri Apr 21 18:18:25 2023,USD000000TOD,num=112293,60,повторение 52
Fri Apr 21 18:18:25 2023,GLDRUB_TOM,num=112298,61,повторение 53
Fri Apr 21 18:18:25 2023,USD000UTSTOM,num=112302,62,повторение 55
Fri Apr 21 18:18:25 2023,CNYRUB_TOM,num=112306,63,повторение 58
Fri Apr 21 18:18:25 2023,GDM3,num=1936585274704269070,64,повторение 59
Fri Apr 21 18:18:25 2023,USD000000TOD,num=112293,65,повторение 60
Fri Apr 21 18:18:25 2023,GLDRUB_TOM,num=112298,66,повторение 61
Fri Apr 21 18:18:25 2023,LIFE,num=4780929424,67
Fri Apr 21 18:18:25 2023,USD000UTSTOM,num=112302,68,повторение 62
Fri Apr 21 18:18:25 2023,CNYRUB_TOM,num=112306,69,повторение 63
Fri Apr 21 18:18:25 2023,GDM3,num=1936585274704269070,70,повторение 64
Fri Apr 21 18:18:25 2023,EUR_RUB__TOM,num=112307,71
Fri Apr 21 18:18:25 2023,EUR_RUB__TOM,num=112308,72
Fri Apr 21 18:18:25 2023,EUR_RUB__TOM,num=112309,73
Fri Apr 21 18:18:25 2023,EUR_RUB__TOM,num=112310,74
Fri Apr 21 18:18:30 2023,AGRO,num=4780929494,75
Fri Apr 21 18:18:30 2023,EUR_RUB__TOM,num=112311,76
Fri Apr 21 18:18:30 2023,EUR_RUB__TOM,num=112312,77
Fri Apr 21 18:18:30 2023,MAGN,num=4780929259,78
Fri Apr 21 18:18:30 2023,MAGN,num=4780929260,79
Fri Apr 21 18:18:30 2023,MAGN,num=4780929284,80
Fri Apr 21 18:18:30 2023,MAGN,num=4780929285,81
Fri Apr 21 18:18:30 2023,MAGN,num=4780929286,82
Fri Apr 21 18:18:30 2023,MAGN,num=4780929287,83
Fri Apr 21 18:18:30 2023,MAGN,num=4780929366,84
Fri Apr 21 18:18:30 2023,USD000000TOD,num=112293,85,повторение 65
Fri Apr 21 18:18:30 2023,MAGN,num=4780929374,86
Fri Apr 21 18:18:30 2023,GLDRUB_TOM,num=112298,87,повторение 66
Fri Apr 21 18:18:30 2023,LIFE,num=4780929424,88,повторение 67
Fri Apr 21 18:18:30 2023,USD000UTSTOM,num=112302,89,повторение 68
Fri Apr 21 18:18:30 2023,MAGN,num=4780929458,90
Fri Apr 21 18:18:30 2023,MAGN,num=4780929459,91
Fri Apr 21 18:18:30 2023,MAGN,num=4780929460,92
Fri Apr 21 18:18:30 2023,MAGN,num=4780929461,93
Fri Apr 21 18:18:30 2023,MAGN,num=4780929462,94
Fri Apr 21 18:18:30 2023,MAGN,num=4780929463,95
Fri Apr 21 18:18:30 2023,MAGN,num=4780929464,96
Fri Apr 21 18:18:30 2023,MAGN,num=4780929465,97
Fri Apr 21 18:18:30 2023,MAGN,num=4780929466,98
Fri Apr 21 18:18:30 2023,MAGN,num=4780929467,99
Fri Apr 21 18:18:30 2023,MAGN,num=4780929468,100
Fri Apr 21 18:18:30 2023,MAGN,num=4780929469,101
Fri Apr 21 18:18:30 2023,MAGN,num=4780929470,102
Fri Apr 21 18:18:30 2023,MAGN,num=4780929471,103
Fri Apr 21 18:18:30 2023,MAGN,num=4780929472,104
Fri Apr 21 18:18:30 2023,MAGN,num=4780929473,105
Fri Apr 21 18:18:30 2023,MAGN,num=4780929474,106
Fri Apr 21 18:18:30 2023,MAGN,num=4780929475,107
Fri Apr 21 18:18:30 2023,CNYRUB_TOM,num=112306,108,повторение 69
Fri Apr 21 18:18:30 2023,GDM3,num=1936585274704269070,109,повторение 70
Fri Apr 21 18:18:30 2023,AGRO,num=4780929494,110,повторение 75
Fri Apr 21 18:18:30 2023,EUR_RUB__TOM,num=112312,111,повторение 77
Fri Apr 21 18:18:30 2023,EUR_RUB__TOM,num=112313,112
Fri Apr 21 18:18:30 2023,EUR_RUB__TOM,num=112314,113
Fri Apr 21 18:18:30 2023,EUR_RUB__TOM,num=112315,114
Fri Apr 21 18:18:30 2023,EUR_RUB__TOM,num=112316,115
Fri Apr 21 18:18:30 2023,EUR_RUB__TOM,num=112317,116
Fri Apr 21 18:18:30 2023,EUR_RUB__TOM,num=112318,117
Fri Apr 21 18:18:30 2023,MTLR,num=4780929257,118
Fri Apr 21 18:18:30 2023,MTLR,num=4780929263,119
Fri Apr 21 18:18:30 2023,MTLR,num=4780929265,120
Fri Apr 21 18:18:30 2023,MTLR,num=4780929268,121
Fri Apr 21 18:18:30 2023,MTLR,num=4780929270,122
Fri Apr 21 18:18:30 2023,MTLR,num=4780929276,123
Fri Apr 21 18:18:30 2023,MTLR,num=4780929294,124
Fri Apr 21 18:18:30 2023,MTLR,num=4780929295,125
Fri Apr 21 18:18:30 2023,MTLR,num=4780929296,126
Fri Apr 21 18:18:30 2023,MTLR,num=4780929297,127
Fri Apr 21 18:18:30 2023,MTLR,num=4780929298,128
Fri Apr 21 18:18:30 2023,MTLR,num=4780929299,129
Fri Apr 21 18:18:30 2023,MTLR,num=4780929300,130
Fri Apr 21 18:18:30 2023,MTLR,num=4780929301,131
Fri Apr 21 18:18:30 2023,MTLR,num=4780929302,132
Fri Apr 21 18:18:30 2023,MTLR,num=4780929303,133
Fri Apr 21 18:18:30 2023,MTLR,num=4780929304,134
Fri Apr 21 18:18:30 2023,MTLR,num=4780929305,135
Fri Apr 21 18:18:30 2023,MTLR,num=4780929306,136
Fri Apr 21 18:18:30 2023,MTLR,num=4780929307,137
Fri Apr 21 18:18:30 2023,MTLR,num=4780929308,138
Fri Apr 21 18:18:30 2023,MTLR,num=4780929309,139
Fri Apr 21 18:18:30 2023,MTLR,num=4780929310,140
Fri Apr 21 18:18:30 2023,MTLR,num=4780929311,141
Fri Apr 21 18:18:30 2023,MTLR,num=4780929312,142
Fri Apr 21 18:18:30 2023,MTLR,num=4780929313,143
Fri Apr 21 18:18:30 2023,MTLR,num=4780929314,144
Fri Apr 21 18:18:30 2023,MTLR,num=4780929315,145
Fri Apr 21 18:18:30 2023,MTLR,num=4780929316,146
Fri Apr 21 18:18:30 2023,MTLR,num=4780929317,147
Fri Apr 21 18:18:30 2023,MTLR,num=4780929325,148
Fri Apr 21 18:18:30 2023,MTLR,num=4780929326,149
Fri Apr 21 18:18:30 2023,MTLR,num=4780929347,150
Fri Apr 21 18:18:30 2023,MTLR,num=4780929361,151
Fri Apr 21 18:18:30 2023,MTLR,num=4780929367,152
Fri Apr 21 18:18:30 2023,USD000000TOD,num=112293,153,повторение 85
Fri Apr 21 18:18:30 2023,MTLR,num=4780929385,154
Fri Apr 21 18:18:30 2023,MTLR,num=4780929390,155
Fri Apr 21 18:18:30 2023,GLDRUB_TOM,num=112298,156,повторение 87
Fri Apr 21 18:18:30 2023,LIFE,num=4780929424,157,повторение 88
Fri Apr 21 18:18:30 2023,MTLR,num=4780929425,158
Fri Apr 21 18:18:30 2023,MTLR,num=4780929431,159
Fri Apr 21 18:18:30 2023,USD000UTSTOM,num=112302,160,повторение 89
Fri Apr 21 18:18:30 2023,MTLR,num=4780929435,161
Fri Apr 21 18:18:30 2023,MAGN,num=4780929475,162,повторение 107
Fri Apr 21 18:18:30 2023,MTLR,num=4780929476,163
Fri Apr 21 18:18:30 2023,CNYRUB_TOM,num=112306,164,повторение 108
Fri Apr 21 18:18:30 2023,GDM3,num=1936585274704269070,165,повторение 109
Fri Apr 21 18:18:30 2023,AGRO,num=4780929494,166,повторение 110
Fri Apr 21 18:18:30 2023,EUR_RUB__TOM,num=112318,167,повторение 117
Fri Apr 21 18:18:30 2023,EUR_RUB__TOM,num=112319,168
Fri Apr 21 18:18:30 2023,EUR_RUB__TOM,num=112320,169
Fri Apr 21 18:18:30 2023,EUR_RUB__TOM,num=112321,170
Fri Apr 21 18:18:30 2023,GDM3,num=1936585274704269071,171
Fri Apr 21 18:18:30 2023,GDM3,num=1936585274704269072,172
Fri Apr 21 18:18:30 2023,EUR_RUB__TOM,num=112322,173
Fri Apr 21 18:18:30 2023,EUR_RUB__TOM,num=112323,174
Fri Apr 21 18:18:30 2023,EUR_RUB__TOM,num=112324,175
Fri Apr 21 18:18:30 2023,EUR_RUB__TOM,num=112325,176
Fri Apr 21 18:18:31 2023,GDM3,num=1936585274704269073,177
Fri Apr 21 18:18:32 2023,MTLR,num=4780929520,178
Fri Apr 21 18:18:32 2023,MTLR,num=4780929522,179
Fri Apr 21 18:18:32 2023,USD000000TOD,num=112293,180,повторение 153
Fri Apr 21 18:18:32 2023,PMSB,num=4780929375,181
Fri Apr 21 18:18:32 2023,PMSB,num=4780929376,182
Fri Apr 21 18:18:32 2023,PMSB,num=4780929377,183
Fri Apr 21 18:18:32 2023,PMSB,num=4780929378,184
Fri Apr 21 18:18:32 2023,PMSB,num=4780929379,185
Fri Apr 21 18:18:32 2023,GLDRUB_TOM,num=112298,186,повторение 156
Fri Apr 21 18:18:32 2023,LIFE,num=4780929424,187,повторение 157
Fri Apr 21 18:18:32 2023,USD000UTSTOM,num=112302,188,повторение 160
Fri Apr 21 18:18:32 2023,MAGN,num=4780929475,189,повторение 162
Fri Apr 21 18:18:32 2023,CNYRUB_TOM,num=112306,190,повторение 164
Fri Apr 21 18:18:32 2023,AGRO,num=4780929494,191,повторение 166
Fri Apr 21 18:18:32 2023,EUR_RUB__TOM,num=112325,192,повторение 176
Fri Apr 21 18:18:32 2023,GDM3,num=1936585274704269073,193,повторение 177
Fri Apr 21 18:18:32 2023,MTLR,num=4780929522,194,повторение 179
Fri Apr 21 18:18:32 2023,USD000UTSTOM,num=112326,195
Fri Apr 21 18:18:32 2023,USD000UTSTOM,num=112327,196
Fri Apr 21 18:18:32 2023,EUR_RUB__TOM,num=112328,197
Fri Apr 21 18:18:32 2023,EUR_RUB__TOM,num=112329,198
Fri Apr 21 18:18:32 2023,EUR_RUB__TOM,num=112330,199
Fri Apr 21 18:18:32 2023,EUR_RUB__TOM,num=112331,200
Fri Apr 21 18:18:32 2023,EUR_RUB__TOM,num=112332,201
Fri Apr 21 18:18:32 2023,EUR_RUB__TOM,num=112333,202
Fri Apr 21 18:18:32 2023,CNYRUB_TOM,num=112334,203
Fri Apr 21 18:18:32 2023,CNYRUB_TOM,num=112335,204
Fri Apr 21 18:18:32 2023,SBER,num=4780929254,205
Fri Apr 21 18:18:32 2023,SBER,num=4780929255,206
Fri Apr 21 18:18:32 2023,USD000000TOD,num=112293,207,повторение 180
Fri Apr 21 18:18:32 2023,PMSB,num=4780929379,208,повторение 185
Fri Apr 21 18:18:32 2023,SBER,num=4780929386,209
Fri Apr 21 18:18:32 2023,GLDRUB_TOM,num=112298,210,повторение 186
Fri Apr 21 18:18:32 2023,LIFE,num=4780929424,211,повторение 187
Fri Apr 21 18:18:32 2023,SBER,num=4780929432,212
Fri Apr 21 18:18:32 2023,SBER,num=4780929453,213
Fri Apr 21 18:18:32 2023,SBER,num=4780929454,214
Fri Apr 21 18:18:32 2023,SBER,num=4780929455,215
Fri Apr 21 18:18:32 2023,SBER,num=4780929456,216
Fri Apr 21 18:18:32 2023,SBER,num=4780929457,217
Fri Apr 21 18:18:32 2023,MAGN,num=4780929475,218,повторение 189
Fri Apr 21 18:18:32 2023,AGRO,num=4780929494,219,повторение 191
Fri Apr 21 18:18:32 2023,GDM3,num=1936585274704269073,220,повторение 193
Fri Apr 21 18:18:32 2023,MTLR,num=4780929522,221,повторение 194
Fri Apr 21 18:18:32 2023,USD000UTSTOM,num=112327,222,повторение 196
Fri Apr 21 18:18:32 2023,EUR_RUB__TOM,num=112333,223,повторение 202
Fri Apr 21 18:18:32 2023,CNYRUB_TOM,num=112335,224,повторение 204
Fri Apr 21 18:18:32 2023,GDM3,num=1936585274704269074,225
Fri Apr 21 18:18:32 2023,EUR_RUB__TOM,num=112336,226
Fri Apr 21 18:18:32 2023,GDM3,num=1936585274704269075,227
Fri Apr 21 18:18:32 2023,GDM3,num=1936585274704269076,228
Fri Apr 21 18:18:32 2023,USD000000TOD,num=112293,229,повторение 207
Fri Apr 21 18:18:32 2023,PMSB,num=4780929379,230,повторение 208
Fri Apr 21 18:18:32 2023,GLDRUB_TOM,num=112298,231,повторение 210
Fri Apr 21 18:18:32 2023,SMLT,num=4780929417,232
Fri Apr 21 18:18:32 2023,SMLT,num=4780929418,233
Fri Apr 21 18:18:32 2023,SMLT,num=4780929419,234
Fri Apr 21 18:18:32 2023,SMLT,num=4780929420,235
Fri Apr 21 18:18:32 2023,SMLT,num=4780929421,236
Fri Apr 21 18:18:32 2023,SMLT,num=4780929422,237
Fri Apr 21 18:18:32 2023,SMLT,num=4780929423,238
Fri Apr 21 18:18:32 2023,LIFE,num=4780929424,239,повторение 211
Fri Apr 21 18:18:32 2023,SBER,num=4780929457,240,повторение 217
Fri Apr 21 18:18:32 2023,MAGN,num=4780929475,241,повторение 218
Fri Apr 21 18:18:32 2023,AGRO,num=4780929494,242,повторение 219
Fri Apr 21 18:18:32 2023,MTLR,num=4780929522,243,повторение 221
Fri Apr 21 18:18:32 2023,USD000UTSTOM,num=112327,244,повторение 222
Fri Apr 21 18:18:32 2023,CNYRUB_TOM,num=112335,245,повторение 224
Fri Apr 21 18:18:32 2023,EUR_RUB__TOM,num=112336,246,повторение 226
Fri Apr 21 18:18:32 2023,GDM3,num=1936585274704269076,247,повторение 228
Fri Apr 21 18:18:35 2023,SBER,num=4780929544,248
Fri Apr 21 18:18:35 2023,SBER,num=4780929545,249
Fri Apr 21 18:18:35 2023,SBER,num=4780929546,250
Fri Apr 21 18:18:35 2023,MTLR,num=4780929548,251
Fri Apr 21 18:18:35 2023,MTLR,num=4780929551,252
Можете объяснить?
Кто сможет объяснить необъяснимое?
 
Цитата
Даниил Волошин написал:
Цитата
nikolz написал:
это тест на демо сервере

Для того, чтобы можно было провести анализ, нам необходимо знать номер сделки, которая пришла с запозданием, время её исполнения и время её появления на Вашем терминале. Потому просим Вас привести примеры в указанном формате, это позволит нам начать разбор Вашей ситуации.
сделал тест с автоподстройкой времени
выкладываю скрипт теста
Код
local tmp={}
local ds={}
local ns=0;
local shH=1 --сдвиг часового пояса
local shS=0 -- сдвиг секунд
local count,count1=0,0; local sts={} ;-- for i=1,100 do sts[i]=0;    end


function main()
   while true do
--       nkevent.wait(event); --ждем события
      while #tmp>1 do
         local t=tmp[1]; table.sremove(tmp,1);
         if count>=1000 then  count=0;
            local s=""; for i=1,100 do if sts[i] then s=s..tostring(sts[i])..","; end end
            Log:write(tostring(ns)..":"..tostring(count1)..">"..s.."\n"); Log:flush();
         end
      end
      sleep(1);
   end
end

function OnParam(c,s)
   local z=ds[c..s]
   if z==nil then
      d,err=CreateDataSource (c,s,INTERVAL_TICK);
      if d then  d:SetEmptyCallback(); ns=ns+1; ds[c..s]={d,0,0}; end
   else
       table.sinsert(tmp,{1,c,s}); --nkevent.Set(event);
   end
end

function OnAllTrade(t)
   local c,s=t.class_code,t.sec_code;  local z=ds[c..s];
   if z then   local d=z[1]; local n=z[2]; local f=z[3];
      local Ti=t.datetime; local HMS=(60*(60*Ti.hour+Ti.min)+Ti.sec)+0.001*Ti.ms;
      local D=os.date("*t"); local hms=60*(60*(D.hour-shH)+D.min)+D.sec-shS;
      local dt= hms-HMS+n;
      local size=d:Size();
      local T1=d:T(size);   local HMS1=(60*(60*T1.hour+T1.min)+T1.sec)+0.001*T1.ms;
   --   if 0>dt then dt=0 end
      if f==0 then
         if 0>=dt then f=1 z[3]=f end
      end
      if f~=0 and HMS==HMS1 then
--         if 60>dt then
         if 0>dt then
            if -1>=dt then
               local n1=math.floor(0-dt) dt=dt+n1 n=n+n1;
               if n>100 then n=0; z[3]=0; dt=0; end
               z[2]=n
            end
         end
--         Log:write(tostring(hms)..","..tostring(s)..",size="..tostring(size)..",HMS="..tostring(HMS)..",dt="..tostring(dt)..",n="..tostring(n).."\n"); Log:flush();
         if f~=0 then
            local dt1=dt;            if 0>dt then dt=0 end            count=count+1;            count1=count1+1;
            local m=math.floor(dt)+1;
            if m==nil or sts[m]==nil then
               Log:write(tostring(hms)..","..tostring(s)..",size="..tostring(size)..",HMS="..tostring(HMS)..",HMS1="..tostring(HMS1)..",dt="..tostring(dt1)..",n="..tostring(n)..",m="..tostring(m).."\n"); Log:flush();
            end
      --      if m and 99>m then
               if sts[m] then sts[m]=sts[m]+1; else sts[m]=1    end
      --      end
         end
      end
   end
end

function OnInit(pfile)
local path = getScriptPath(); Log=io.open(path.."/test.log","w") --лог файл
end
Так как Вам лень запускать его на вашем демо сервере, то выкладываю последние результаты
На печать выводится сделка, которая первая с данной задержкой. Время компьютера, код инструмента, size, время этой сделки, время сделки но номеру size, разница времен, автосмещение, индекс ячейки (запаздывание sec+1)
Код
37240,USD000000TOD,size=1443,HMS=37240.023,HMS1=37240.023,dt=-0.023000000001048,n=0,m=1
37242,EUR_RUB__TOD,size=870,HMS=37240.06,HMS1=37240.06,dt=1.9400000000023,n=0,m=2
37244,EUR_RUB__TOD,size=870,HMS=37240.06,HMS1=37240.06,dt=3.9400000000023,n=0,m=4
37244,GMKN,size=3469,HMS=37242.0,HMS1=37242.0,dt=2.0,n=0,m=3
37246,EUR_RUB__TOD,size=870,HMS=37240.06,HMS1=37240.06,dt=5.9400000000023,n=0,m=6
37247,EUR_RUB__TOD,size=870,HMS=37240.06,HMS1=37240.06,dt=6.9400000000023,n=0,m=7
37247,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=4.9360000000015,n=0,m=5
37249,EUR_RUB__TOD,size=870,HMS=37240.06,HMS1=37240.06,dt=8.9400000000023,n=0,m=9
37250,EUR_RUB__TOD,size=870,HMS=37240.06,HMS1=37240.06,dt=9.9400000000023,n=0,m=10
37250,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=7.9360000000015,n=0,m=8
37251,EUR_RUB__TOD,size=870,HMS=37240.06,HMS1=37240.06,dt=10.940000000002,n=0,m=11
37252,EUR_RUB__TOD,size=870,HMS=37240.06,HMS1=37240.06,dt=11.940000000002,n=0,m=12
37254,EUR_RUB__TOD,size=870,HMS=37240.06,HMS1=37240.06,dt=13.940000000002,n=0,m=14
37257,EUR_RUB__TOD,size=870,HMS=37240.06,HMS1=37240.06,dt=16.940000000002,n=0,m=17
37257,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=14.936000000002,n=0,m=15
37257,MMM3,size=2203,HMS=37244.386,HMS1=37244.386,dt=12.614000000001,n=0,m=13
37258,EUR_RUB__TOD,size=870,HMS=37240.06,HMS1=37240.06,dt=17.940000000002,n=0,m=18
37258,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=15.936000000002,n=0,m=16
37259,EUR_RUB__TOD,size=870,HMS=37240.06,HMS1=37240.06,dt=18.940000000002,n=0,m=19
37262,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=19.936000000002,n=0,m=20
37264,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=21.936000000002,n=0,m=22
37265,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=22.936000000002,n=0,m=23
37265,RNFT,size=4723,HMS=37245.0,HMS1=37245.0,dt=20.0,n=0,m=21
37267,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=24.936000000002,n=0,m=25
121:1073>288,285,102,64,42,44,30,32,25,26,23,19,17,12,14,5,10,7,6,9,3,5,3,2,
37268,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=25.936000000002,n=0,m=26
37269,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=26.936000000002,n=0,m=27
37269,EDM3,size=1572,HMS=37245.431,HMS1=37245.431,dt=23.569000000003,n=0,m=24
37270,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=27.936000000002,n=0,m=28
37271,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=28.936000000002,n=0,m=29
37274,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=31.936000000002,n=0,m=32
37276,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=33.936000000002,n=0,m=34
37276,EDM3,size=1572,HMS=37245.431,HMS1=37245.431,dt=30.569000000003,n=0,m=31
37278,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=35.936000000002,n=0,m=36
37278,EDM3,size=1572,HMS=37245.431,HMS1=37245.431,dt=32.569000000003,n=0,m=33
37280,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=37.936000000002,n=0,m=38
37280,EDM3,size=1572,HMS=37245.431,HMS1=37245.431,dt=34.569000000003,n=0,m=35
37323,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=80.936000000002,n=0,m=81
37323,EDM3,size=1572,HMS=37245.431,HMS1=37245.431,dt=77.569000000003,n=0,m=78
37323,GKM3,size=361,HMS=37247.687,HMS1=37247.687,dt=75.313000000002,n=0,m=76
37323,CNY000000TOD,size=1270,HMS=37252.093,HMS1=37252.093,dt=70.906999999999,n=0,m=71
37323,TTLK,size=7749,HMS=37255.0,HMS1=37255.0,dt=68.0,n=0,m=69
37323,EUR000TODTOM,size=79,HMS=37256.055,HMS1=37256.055,dt=66.945,n=0,m=67
37323,VBM3,size=3501,HMS=37259.022,HMS1=37259.022,dt=63.978000000003,n=0,m=64
37323,LIFE,size=13007,HMS=37258.0,HMS1=37258.0,dt=65.0,n=0,m=66
37323,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=61.0,n=0,m=62
37323,BANEP,size=3755,HMS=37263.0,HMS1=37263.0,dt=60.0,n=0,m=61
37323,ETLN,size=1252,HMS=37264.0,HMS1=37264.0,dt=59.0,n=0,m=60
37323,NVTK,size=9542,HMS=37268.0,HMS1=37268.0,dt=55.0,n=0,m=56
37323,SNGSP,size=3839,HMS=37269.0,HMS1=37269.0,dt=54.0,n=0,m=55
37323,LSNGP,size=497,HMS=37270.0,HMS1=37270.0,dt=53.0,n=0,m=54
37323,CNYRUB_TOM,size=3361,HMS=37271.407,HMS1=37271.407,dt=51.593000000001,n=0,m=52
37323,AFLT,size=39793,HMS=37273.0,HMS1=37273.0,dt=50.0,n=0,m=51
37323,FLOT,size=4594,HMS=37274.0,HMS1=37274.0,dt=49.0,n=0,m=50
37323,SNM3,size=474,HMS=37275.056,HMS1=37275.056,dt=47.944000000003,n=0,m=48
37323,RIM3,size=7757,HMS=37276.013,HMS1=37276.013,dt=46.987000000001,n=0,m=47
37323,BRK3,size=20024,HMS=37277.399,HMS1=37277.399,dt=45.601000000002,n=0,m=46
37323,GDM3,size=8934,HMS=37279.215,HMS1=37279.215,dt=43.785000000003,n=0,m=44
37323,EUR_RUB__TOD,size=878,HMS=37280.042,HMS1=37280.042,dt=42.957999999999,n=0,m=43
37323,CHMF,size=12573,HMS=37279.0,HMS1=37279.0,dt=44.0,n=0,m=45
37323,USD000UTSTOM,size=2272,HMS=37281.068,HMS1=37281.068,dt=41.932000000001,n=0,m=42
37323,SRM3,size=14214,HMS=37282.131,HMS1=37282.131,dt=40.868999999999,n=0,m=41
37323,SVM3,size=3561,HMS=37283.275,HMS1=37283.275,dt=39.724999999999,n=0,m=40
37323,SRM3,size=14215,HMS=37284.441,HMS1=37284.441,dt=38.559000000001,n=0,m=39
37323,SRM3,size=14233,HMS=37286.587,HMS1=37286.587,dt=36.413,n=0,m=37
37323,EUR_RUB__TOD,size=879,HMS=37293.781,HMS1=37293.781,dt=29.218999999997,n=0,m=30
274:2577>543,410,175,148,93,77,88,84,63,47,43,29,39,32,26,9,36,34,53,11,37,25,26,37,13,12,13,15,14,11,22,30,50,65,2,3,23,15,27,7,13,11,7,8,1,5,4,2,5,2,3,7,2,3,3,2,2,1,1,2,1,1,1,1,2,
37325,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=82.936000000002,n=0,m=83
37325,BANEP,size=3755,HMS=37263.0,HMS1=37263.0,dt=62.0,n=0,m=63
37325,AFLT,size=39793,HMS=37273.0,HMS1=37273.0,dt=52.0,n=0,m=53
37326,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=83.936000000002,n=0,m=84
37326,EUR000TODTOM,size=79,HMS=37256.055,HMS1=37256.055,dt=69.945,n=0,m=70
37326,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=64.0,n=0,m=65
37326,LSNGP,size=497,HMS=37270.0,HMS1=37270.0,dt=56.0,n=0,m=57
37327,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=84.936000000002,n=0,m=85
37327,LSNGP,size=497,HMS=37270.0,HMS1=37270.0,dt=57.0,n=0,m=58
37330,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=87.936000000002,n=0,m=88
37330,EUR000TODTOM,size=79,HMS=37256.055,HMS1=37256.055,dt=73.945,n=0,m=74
37330,BANEP,size=3755,HMS=37263.0,HMS1=37263.0,dt=67.0,n=0,m=68
37330,SFTL,size=2263,HMS=37282.0,HMS1=37282.0,dt=48.0,n=0,m=49
37333,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=90.936000000002,n=0,m=91
37333,EUR000TODTOM,size=79,HMS=37256.055,HMS1=37256.055,dt=76.945,n=0,m=77
37333,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=71.0,n=0,m=72
37334,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=91.936000000002,n=0,m=92
37334,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=72.0,n=0,m=73
282:3589>645,629,262,207,123,123,133,104,93,70,60,41,70,48,33,19,55,42,55,22,47,26,33,46,14,18,20,19,17,14,23,30,54,70,2,8,32,20,28,9,17,15,7,19,5,8,8,10,3,6,8,6,2,16,4,5,2,4,6,11,7,2,8,4,2,5,2,4,1,4,3,1,2,1,2,2,5,1,1,1,2,2,1,
37340,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=97.936000000002,n=0,m=98
37340,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=78.0,n=0,m=79
37340,SFTL,size=2263,HMS=37282.0,HMS1=37282.0,dt=58.0,n=0,m=59
37346,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=103.936,n=0,m=104
37346,EUR000TODTOM,size=79,HMS=37256.055,HMS1=37256.055,dt=89.945,n=0,m=90
37350,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=107.936,n=0,m=108
37350,EUR000TODTOM,size=79,HMS=37256.055,HMS1=37256.055,dt=93.945,n=0,m=94
37350,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=88.0,n=0,m=89
37352,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=109.936,n=0,m=110
37352,EUR000TODTOM,size=79,HMS=37256.055,HMS1=37256.055,dt=95.945,n=0,m=96
37354,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=111.936,n=0,m=112
37354,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=92.0,n=0,m=93
37362,EuM3,size=772,HMS=37242.064,HMS1=37242.064,dt=119.936,n=0,m=120
37362,EUR000TODTOM,size=79,HMS=37256.055,HMS1=37256.055,dt=105.945,n=0,m=106
37362,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=100.0,n=0,m=101
291:4594>830,847,326,285,173,148,158,127,112,87,66,52,88,63,45,28,72,52,70,27,56,31,44,55,19,23,23,23,24,19,29,30,57,75,3,13,34,23,29,17,20,19,9,25,7,10,8,11,3,7,8,8,2,19,5,7,2,5,1,7,13,7,2,10,7,3,6,3,7,1,7,3,2,2,2,5,3,1,10,3,2,4,2,2,1,3,1,3,2,1,2,
37366,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=104.0,n=0,m=105
37366,LSNGP,size=497,HMS=37270.0,HMS1=37270.0,dt=96.0,n=0,m=97
37366,GMKN,size=3474,HMS=37287.0,HMS1=37287.0,dt=79.0,n=0,m=80
37375,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=113.0,n=0,m=114
37381,SFTL,size=2263,HMS=37282.0,HMS1=37282.0,dt=99.0,n=0,m=100
37382,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=120.0,n=0,m=121
37382,LSNGP,size=497,HMS=37270.0,HMS1=37270.0,dt=112.0,n=0,m=113
297:5616>1163,1067,360,317,227,164,183,147,126,95,74,60,102,75,52,43,84,63,80,35,66,40,55,59,22,31,28,31,27,28,33,33,62,76,6,16,43,27,32,18,21,21,11,28,8,10,10,14,7,9,10,9,3,21,5,8,2,6,2,7,13,7,2,11,10,5,6,3,7,1,7,3,2,2,2,5,3,1,1,11,3,2,5,2,2,1,3,1,3,3,1,2,2,1,
37405,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=143.0,n=0,m=144
37405,LSNGP,size=497,HMS=37270.0,HMS1=37270.0,dt=135.0,n=0,m=136
37414,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=152.0,n=0,m=153
37414,LSNGP,size=497,HMS=37270.0,HMS1=37270.0,dt=144.0,n=0,m=145
37414,BRM3,size=1533,HMS=37328.821,HMS1=37328.821,dt=85.178999999996,n=0,m=86
299:6616>1610,1349,395,355,250,174,188,155,131,99,81,66,111,79,56,46,87,66,82,39,70,44,59,62,24,35,31,35,28,30,36,37,64,76,9,19,44,27,34,21,24,22,11,30,10,14,11,15,8,10,11,10,5,22,6,10,2,7,3,9,15,7,3,11,11,5,6,3,8,2,7,4,2,2,2,6,3,1,1,12,3,2,5,1,3,3,1,3,1,3,3,1,3,3,1,
37441,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=179.0,n=0,m=180
37441,LSNGP,size=497,HMS=37270.0,HMS1=37270.0,dt=171.0,n=0,m=172
37441,EDM3,size=1573,HMS=37317.851,HMS1=37317.851,dt=123.149,n=0,m=124
37441,TATN,size=4176,HMS=37360.0,HMS1=37360.0,dt=81.0,n=0,m=82
37441,SELG,size=1246,HMS=37367.0,HMS1=37367.0,dt=74.0,n=0,m=75
37443,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=181.0,n=0,m=182
37443,LSNGP,size=497,HMS=37270.0,HMS1=37270.0,dt=173.0,n=0,m=174
37443,EDM3,size=1573,HMS=37317.851,HMS1=37317.851,dt=125.149,n=0,m=126
37443,RTKM,size=984,HMS=37345.0,HMS1=37345.0,dt=98.0,n=0,m=99
37447,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=185.0,n=0,m=186
37447,LSNGP,size=497,HMS=37270.0,HMS1=37270.0,dt=177.0,n=0,m=178
37447,EDM3,size=1573,HMS=37317.851,HMS1=37317.851,dt=129.149,n=0,m=130
37447,RTKM,size=984,HMS=37345.0,HMS1=37345.0,dt=102.0,n=0,m=103
37447,AMEZ,size=770,HMS=37346.0,HMS1=37346.0,dt=101.0,n=0,m=102
37455,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=193.0,n=0,m=194
37455,EDM3,size=1573,HMS=37317.851,HMS1=37317.851,dt=137.149,n=0,m=138
37455,RNM3,size=249,HMS=37333.552,HMS1=37333.552,dt=121.448,n=0,m=122
37455,RTKM,size=984,HMS=37345.0,HMS1=37345.0,dt=110.0,n=0,m=111
304:7625>1955,1591,430,377,267,190,199,172,141,105,92,74,121,88,59,55,96,77,90,51,74,49,67,68,28,42,33,38,33,34,40,47,65,81,12,21,46,30,35,24,24,25,12,35,11,18,13,19,9,12,11,13,7,25,8,12,3,10,4,11,16,8,4,13,12,6,8,4,11,3,7,6,2,4,1,2,7,5,1,4,13,4,4,4,6,4,5,4,3,3,3,3,6,3,5,4,1,1,
37457,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=195.0,n=0,m=196
37457,LSNGP,size=497,HMS=37270.0,HMS1=37270.0,dt=187.0,n=0,m=188
37457,EDM3,size=1573,HMS=37317.851,HMS1=37317.851,dt=139.149,n=0,m=140
37463,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=201.0,n=0,m=202
37463,EDM3,size=1573,HMS=37317.851,HMS1=37317.851,dt=145.149,n=0,m=146
37463,RTKM,size=984,HMS=37345.0,HMS1=37345.0,dt=118.0,n=0,m=119
37463,AMEZ,size=770,HMS=37346.0,HMS1=37346.0,dt=117.0,n=0,m=118
37469,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=207.0,n=0,m=208
37469,LSNGP,size=497,HMS=37270.0,HMS1=37270.0,dt=199.0,n=0,m=200
37469,EDM3,size=1573,HMS=37317.851,HMS1=37317.851,dt=151.149,n=0,m=152
37469,RTKM,size=984,HMS=37345.0,HMS1=37345.0,dt=124.0,n=0,m=125
37469,BANE,size=1071,HMS=37354.0,HMS1=37354.0,dt=115.0,n=0,m=116
37474,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=212.0,n=0,m=213
37474,LSNGP,size=497,HMS=37270.0,HMS1=37270.0,dt=204.0,n=0,m=205
37474,EDM3,size=1573,HMS=37317.851,HMS1=37317.851,dt=156.149,n=0,m=157
37474,RNM3,size=249,HMS=37333.552,HMS1=37333.552,dt=140.448,n=0,m=141
37475,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=213.0,n=0,m=214
37475,LSNGP,size=497,HMS=37270.0,HMS1=37270.0,dt=205.0,n=0,m=206
37475,EDM3,size=1573,HMS=37317.851,HMS1=37317.851,dt=157.149,n=0,m=158
37475,RNM3,size=249,HMS=37333.552,HMS1=37333.552,dt=141.448,n=0,m=142
37475,RTKM,size=984,HMS=37345.0,HMS1=37345.0,dt=130.0,n=0,m=131
37475,ALRS,size=5295,HMS=37389.0,HMS1=37389.0,dt=86.0,n=0,m=87
309:8632>2135,1860,459,403,294,214,213,185,158,116,106,89,133,96,65,70,101,90,98,57,81,57,71,79,38,50,40,49,35,42,50,48,75,92,15,30,49,31,44,33,26,29,16,35,17,25,13,21,11,14,19,18,8,29,10,13,5,12,4,14,17,10,6,15,13,9,9,6,12,4,9,7,2,7,2,3,8,5,1,6,14,4,4,5,7,7,1,6,4,4,3,3,3,8,6,5,5,2,3,
37498,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=236.0,n=0,m=237
37498,LSNGP,size=497,HMS=37270.0,HMS1=37270.0,dt=228.0,n=0,m=229
37498,RNM3,size=249,HMS=37333.552,HMS1=37333.552,dt=164.448,n=0,m=165
37498,NKSH,size=38,HMS=37362.0,HMS1=37362.0,dt=136.0,n=0,m=137
37498,FIVE,size=2084,HMS=37364.0,HMS1=37364.0,dt=134.0,n=0,m=135
37498,SNM3,size=479,HMS=37369.989,HMS1=37369.989,dt=128.011,n=0,m=129
37498,SLVRUB_TOM,size=104,HMS=37403.345,HMS1=37403.345,dt=94.654999999999,n=0,m=95
37500,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=238.0,n=0,m=239
37500,LSNGP,size=497,HMS=37270.0,HMS1=37270.0,dt=230.0,n=0,m=231
37500,RNM3,size=249,HMS=37333.552,HMS1=37333.552,dt=166.448,n=0,m=167
37500,BANE,size=1071,HMS=37354.0,HMS1=37354.0,dt=146.0,n=0,m=147
37500,NKSH,size=38,HMS=37362.0,HMS1=37362.0,dt=138.0,n=0,m=139
37500,SAREP,size=1763,HMS=37374.0,HMS1=37374.0,dt=126.0,n=0,m=127
37511,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=249.0,n=0,m=250
37511,LSNGP,size=497,HMS=37270.0,HMS1=37270.0,dt=241.0,n=0,m=242
37511,NKSH,size=38,HMS=37362.0,HMS1=37362.0,dt=149.0,n=0,m=150
312:9687>2549,2133,479,415,312,223,220,201,175,125,124,109,139,100,65,72,106,96,103,62,81,65,84,88,44,53,42,50,39,45,53,53,76,97,18,33,54,33,46,33,28,31,19,36,21,25,14,23,15,15,22,20,10,30,11,16,6,14,7,16,19,11,7,15,14,10,11,6,14,4,11,8,2,9,5,5,11,7,1,8,14,6,4,5,7,8,3,10,5,5,4,4,3,8,1,6,6,5,3,3,
37513,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=251.0,n=0,m=252
37513,LSNGP,size=497,HMS=37270.0,HMS1=37270.0,dt=243.0,n=0,m=244
37513,BANE,size=1071,HMS=37354.0,HMS1=37354.0,dt=159.0,n=0,m=160
37514,UTAR,size=143,HMS=37262.0,HMS1=37262.0,dt=252.0,n=0,m=253
37514,LSNGP,size=497,HMS=37270.0,HMS1=37270.0,dt=244.0,n=0,m=245
37514,RNM3,size=249,HMS=37333.552,HMS1=37333.552,dt=180.448,n=0,m=181
37514,BANE,size=1071,HMS=37354.0,HMS1=37354.0,dt=160.0,n=0,m=161
Напишите, если надо еще что-то.
Кто сможет объяснить необъяснимое?
 
это тест на демо сервере
Кто сможет объяснить необъяснимое?
 
думал что ошибка в тесте, написал новый , но лучше не стало.
в тесте надо установить смещение часового пояса и секунд
Код
local tmp={}
local ds={}
local ns=0;
local shH=1 --сдвиг часового пояса
local shS=10 -- сдвиг секунд
local count,count1=0,0; local sts={}  for i=1,200 do sts[i]=0;    end

function main()
   while true do
      while #tmp>0 do
         local t=tmp[1]; table.sremove(tmp,1);
         if count>=1000 then  count=0;
            local s=""; for i=1,60 do    s=s..tostring(sts[i])..",";end
            Log:write(tostring(ns)..":"..tostring(count1)..">"..s.."\n"); Log:flush();
         end
      end
      sleep(1);
   end
end

function OnParam(c,s)
   local d=ds[c..s]
   if d==nil then
      d,err=CreateDataSource (c,s,INTERVAL_TICK);
      if d then  d:SetEmptyCallback(); ns=ns+1; ds[c..s]=d; end
   else
      table.sinsert(tmp,{1,c,s}); 
   end
end

function OnAllTrade(t)
   local c,s=t.class_code,t.sec_code;  local d=ds[c..s];
   if d then
      local Ti=t.datetime; local HMS=(60*(60*Ti.hour+Ti.min)+Ti.sec);--+0.001*Ti.ms;
      local D=os.date("*t"); local hms=60*(60*(D.hour-shH)+D.min)+D.sec-shS;
      local dt= hms-HMS;  local size=d:Size(); local T1=d:T(size);
      local HMS1=(60*(60*T1.hour+T1.min)+T1.sec);--+0.001*T1.ms;
      if HMS==HMS1 then
         if 0>dt then dt=0 end
         if 60>dt then
         count=count+1; count1=count1+1; local m=math.floor(dt)+1; sts[m]=sts[m]+1;
         end
      end
   end
end

function OnInit(pfile)
local path = getScriptPath(); Log=io.open(path.."/test.log","w") --лог файл
end
результат:
191:18184>6506,233,262,256,295,313,351,383,396,461,451,401,312,331,321,262,297,248,301,227,231,274,231,222,225,254,229,244,245,183,171,170,194,142,136,182,161,166,128,142,122,168,120,117,84,92,65,75,79,48,75,64,70,84,80,62,53,71,52,66,
Кто сможет объяснить необъяснимое?
 
выкладываю скрипт теста:
Код
local tmp={}
local ds={}
local ns=0;

local count,count1=0,0; local sts={}  for i=1,200 do sts[i]=0;    end

function main()
   while true do
--       nkevent.wait(event); --ждем события
      while #tmp>0 do
         local t=tmp[1]; table.sremove(tmp,1);
         if count>=100 then  count=0;
            local s=""; for i=1,60 do    s=s..tostring(sts[i])..",";end
            Log:write(tostring(ns)..":"..tostring(count1)..">"..s.."\n"); Log:flush();
         end
      end
      sleep(100);
   end
end

function OnParam(c,s)
   local d=ds[c..s]
   if d==nil then
      d,err=CreateDataSource (c,s,INTERVAL_TICK);
      if d then ds[c..s]=d; d:SetEmptyCallback(); ns=ns+1; end
   else
      table.sinsert(tmp,{1,c,s});
   end
end

function OnAllTrade(t)
   local Ti=t.datetime; local HMS=(100*(100*Ti.hour+Ti.min)+Ti.sec)+0.001*Ti.ms;
   local hms=string.sub(os.date(),12,19);      hms=string.gsub(hms,':','')-10000;
   local dt=hms-HMS; if 0>dt then dt=0 end
   if 60>dt then
      count=count+1;   count1=count1+1; local m=math.floor(dt)+1; sts[m]=sts[m]+1;
   end
end

function OnInit(pfile)
path = getScriptPath(); Log=io.open(path.."/test.log","w") --лог файл
end
результат помещается в лог файл test.log, который создается в каталоге , где размещается этот скрипт.
в лог файл через каждые 100 обезличенных сделок записывается следующая строка:
Код
77:3554>79,90,89,115,116,62,79,123,134,216,266,266,270,161,157,138,97,72,104,124,103,78,105,84,64,84,50,42,43,27,36,28,18,18,6,5,3,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
77 - число инструментов
3554 - число обезличенных сделок
далее количество сделок в интервале  запаздывания с шагом 1 секунда
79  - в интервале    запаздывания  до 1 секунды
90 - в интервале   запаздывания  от 1 до 2 секунд
89 -в интервале    запаздывания  от 2 до 3 секунд
Страницы: Пред. 1 ... 18 19 20 21 22 23 24 25 26 27 28 ... 79 След.
Наверх