Тест ускорения скриптов

Страницы: 1
RSS
Тест ускорения скриптов
 
Ранее привел результаты теста обмена данными через файлы.
https://forum.quik.ru/messages/forum10/message81107/topic9441/#message81107
Основной вывод :
------------------------------
SLEEP в MAIN  приводит к задержке работы скриптов минимум
на  квант Windows. Его величина по умолчанию равна 16 ms.
-------------------------------
Прикольно то, что до Windows10 2004 года этот квант можно было сравнительно просто уменьшить до 0.5ms.
Теперь это сделать просто не получится.
--------------------------------
Для решения проблемы сделал другую функцию sleep, которая уменьшает этот интервал до 2 ms.
----------------------
Результаты теста:
Тест с функцией sleep(1) из библиотеки QLUA  Задержка 15985 мкс округляем 16 ms
Код
SBER,14923,2615122535.2:2615107611.7:{sell=307.75,buy=307.91,clas=QJSIM,fun=Param,last=307.91}
SBER,14855,2616143429.0:2616128573.2:{sell=307.90,buy=307.97,clas=QJSIM,fun=Param,last=307.97}
SBER,15854,2617162439.6:2617146585.0:{sell=307.90,buy=307.98,clas=QJSIM,fun=Param,last=307.98}
SBER,15922,2618184470.3:2618168548.0:{sell=307.90,buy=307.98,clas=QJSIM,fun=Param,last=307.9}
VTBR,15897,2625276507.6:2625260610.2:{sell=77.81,buy=77.82,clas=QJSIM,fun=Param,last=77.82}
GAZP,14832,2628324507.2:2628309674.9:{sell=128.61,buy=128.63,clas=QJSIM,fun=Param,last=128.61}
AFKS,15153,2628324659.2:2628309505.6:{sell=13.325,buy=13.349,clas=QJSIM,fun=Param,last=13.325}
RUAL,15143,2628324742.1:2628309599.0:{sell=41.050,buy=41.055,clas=QJSIM,fun=Param,last=41.05}
VTBR,15961,2629393498.9:2629377537.1:{sell=77.81,buy=77.82,clas=QJSIM,fun=Param,last=77.81}
AFKS,15997,2630432458.6:2630416461.3:{sell=13.318,buy=13.349,clas=QJSIM,fun=Param,last=13.318}
VTBR,15987,2630432563.9:2630416576.0:{sell=77.81,buy=77.82,clas=QJSIM,fun=Param,last=77.82}
MAGN,16069,2633485572.0:2633469502.1:{sell=30.730,buy=30.750,clas=QJSIM,fun=Param,last=30.73}
SNGS,15997,2636567534.9:2636551537.3:{sell=22.360,buy=22.365,clas=QJSIM,fun=Param,last=22.36}
MAGN,15985,2636567666.4:2636551681.0:{sell=30.730,buy=30.735,clas=QJSIM,fun=Param,last=30.735}

Тест с функцией sleep(1) из библиотеки nkQt.  Задержка 1939 мкс округляем 2 ms
Код
VTBR,995,2003181508.4:2003180513.4:{clas=QJSIM,buy=78.00,last=78.0,sell=77.98,fun=Param}
VTBR,1944,2004190515.0:2004188570.8:{clas=QJSIM,buy=77.99,last=77.99,sell=77.98,fun=Param}
VTBR,1993,2015413431.9:2015411438.4:{clas=QJSIM,buy=78.01,last=78.01,sell=77.98,fun=Param}
RUAL,1962,2017473422.7:2017471460.4:{clas=QJSIM,buy=41.055,last=41.055,sell=41.040,fun=Param}
RUAL,1885,2018447403.9:2018445518.0:{clas=QJSIM,buy=41.050,last=41.05,sell=41.040,fun=Param}
SBER,884,2019485502.1:2019484617.9:{clas=QJSIM,buy=308.13,last=308.09,sell=308.02,fun=Param}
RUAL,1961,2021516411.4:2021514449.6:{clas=QJSIM,buy=41.050,last=41.04,sell=41.040,fun=Param}
GAZP,1068,2026610497.9:2026609429.0:{clas=QJSIM,buy=128.68,last=128.68,sell=128.66,fun=Param}
GAZP,39,2028624499.9:2028624460.6:{clas=QJSIM,buy=128.68,last=128.67,sell=128.66,fun=Param}
VTBR,271,2031854788.0:2031854516.3:{clas=QJSIM,buy=78.00,last=78.0,sell=77.98,fun=Param}
RUAL,1974,2034058458.2:2034056483.4:{clas=QJSIM,buy=41.045,last=41.045,sell=41.040,fun=Param}
RUAL,1911,2039442407.5:2039440495.6:{clas=QJSIM,buy=41.050,last=41.05,sell=41.045,fun=Param}
GMKN,1986,2042668694.0:2042666707.6:{clas=QJSIM,buy=168.08,last=168.06,sell=168.00,fun=Param}
RUAL,1888,2043786654.7:2043784766.5:{clas=QJSIM,buy=41.050,last=41.045,sell=41.045,fun=Param}
VTBR,2030,2043786721.1:2043784690.7:{clas=QJSIM,buy=78.00,last=77.99,sell=77.99,fun=Param}
GMKN,1939,2043786768.3:2043784829.1:{clas=QJSIM,buy=168.02,last=168.02,sell=168.00,fun=Param}
Таким образом удалось уменьшить задержку в скриптах в 8 раз.
 
нагрузка процессора не изменилась.
 
Тест обмена данными через файлы
терминал QUIK и приложение на Luajit.
Результат ну очень... очень....
Смотрите сами:  6us - это время в мкс (0.001 ms) передачи данных от терминала к приложению
Код
VTBR,6us, 33883231604.2:{sell=81.795,last=81.8,clas=QJSIM,buy=81.800,fun=Param}
ALRS,13us, 33884241621.9:{sell=41.60,last=41.6,clas=QJSIM,buy=41.63,fun=Param}
ALRS,14us, 33886284514.8:{sell=41.60,last=41.64,clas=QJSIM,buy=41.64,fun=Param}
VTBR,13us, 33886286381.4:{sell=81.790,last=81.79,clas=QJSIM,buy=81.800,fun=Param}
VTBR,13us, 33887291071.6:{sell=81.790,last=81.8,clas=QJSIM,buy=81.800,fun=Param}
VTBR,12us, 33888299695.2:{sell=81.790,last=81.79,clas=QJSIM,buy=81.800,fun=Param}
VTBR,5us, 33891508786.0:{sell=81.795,last=81.8,clas=QJSIM,buy=81.800,fun=Param}
VTBR,4us, 33892712584.6:{sell=81.795,last=81.795,clas=QJSIM,buy=81.800,fun=Param}
MAGN,6us, 33892710696.6:{sell=31.235,last=31.235,clas=QJSIM,buy=31.260,fun=Param}
VTBR,12us, 33893937854.4:{sell=81.795,last=81.8,clas=QJSIM,buy=81.800,fun=Param}
GAZP,12us, 33895059453.3:{sell=127.99,last=128.0,clas=QJSIM,buy=128.00,fun=Param}
VTBR,12us, 33896235900.9:{sell=81.795,last=81.795,clas=QJSIM,buy=81.800,fun=Param}
AFKS,13us, 33898580156.9:{sell=13.771,last=13.774,clas=QJSIM,buy=13.774,fun=Param}
GAZP,13us, 33898579936.4:{sell=127.99,last=127.99,clas=QJSIM,buy=128.00,fun=Param}
AFLT,14us, 33898579755.6:{sell=58.81,last=58.81,clas=QJSIM,buy=58.82,fun=Param}
VTBR,8us, 33898601763.6:{sell=81.795,last=81.8,clas=QJSIM,buy=81.800,fun=Param}
AFLT,14us, 33899848054.3:{sell=58.81,last=58.82,clas=QJSIM,buy=58.82,fun=Param}
AFKS,14us, 33902089101.2:{sell=13.771,last=13.778,clas=QJSIM,buy=13.778,fun=Param}
GAZP,15us, 33902104313.3:{sell=127.99,last=128.0,clas=QJSIM,buy=128.00,fun=Param}
GAZP,14us, 33906134355.5:{sell=127.92,last=127.99,clas=QJSIM,buy=127.99,fun=Param}
VTBR,14us, 33908235532.3:{sell=81.790,last=81.79,clas=QJSIM,buy=81.800,fun=Param}
GMKN,0us, 33909437234.7:{sell=163.08,last=163.16,clas=QJSIM,buy=163.16,fun=Param}
VTBR,0us, 33909437398.3:{sell=81.790,last=81.795,clas=QJSIM,buy=81.800,fun=Param}
VTBR,13us, 33913506428.7:{sell=81.790,last=81.8,clas=QJSIM,buy=81.800,fun=Param}
AFLT,15us, 33913504464.6:{sell=58.81,last=58.81,clas=QJSIM,buy=58.82,fun=Param}
MAGN,15us, 33913504629.1:{sell=31.255,last=31.26,clas=QJSIM,buy=31.260,fun=Param}
MAGN,15us, 33914500954.3:{sell=31.255,last=31.27,clas=QJSIM,buy=31.270,fun=Param}
AFLT,0us, 33915502384.0:{sell=58.81,last=58.82,clas=QJSIM,buy=58.82,fun=Param}
VTBR,14us, 33916563393.9:{sell=81.785,last=81.79,clas=QJSIM,buy=81.790,fun=Param}
Таким образом нет особого смысла писать все алгоритмы робота в скриптах терминала.
Достаточно одного скрипта, который раздает события по сторонним приложениям для каждого инструмента или класса инструментов
и отправляет транзакции на сделки  от приложений на сервер брокера.
------------------------
Приложения можно писать на любом языке программирования ,
размещать в облаках
или у соседа на смартфоне.
Страницы: 1
Читают тему
Наверх