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

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

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 88 След.
Тест ускорения скриптов
 
Тест обмена данными через файлы
терминал 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}
Таким образом нет особого смысла писать все алгоритмы робота в скриптах терминала.
Достаточно одного скрипта, который раздает события по сторонним приложениям для каждого инструмента или класса инструментов
и отправляет транзакции на сделки  от приложений на сервер брокера.
------------------------
Приложения можно писать на любом языке программирования ,
размещать в облаках
или у соседа на смартфоне.
Отключать сборщик мусора при работе с колбеками. Вы прикалываетесь?
 
Тема для начинающих писателей роботов.
--------------------------
Рано и поздно у Вас возникнет желание, либо необходимость, ускорить работу вашего робота.
Да, это скорее всего, реально
Но существует много ненужных телодвижений там, где что-либо делать не имеет смысла.
-----------------------
Например, отключать сборщик мусора в колбеках , а потом его включать.
-------------------------
Поясняю, почему в этом нет смысла.
======================
Для этого напишем следующий тест:
Код
local t1=nkQt.count(); local x1=collectgarbage("count");
 print("занято память КБ= "..x1//1)
local e={}; for j=1,100000 do e[j]=j end --создаем таблицу
local t1=nkQt.count(); local x=collectgarbage("count")-x1;
e=nil; --удаляем таблицу в мусор
print("объем мусора КБ="..x//1)
local t1=nkQt.count(); local x=collectgarbage("collect")
 print("сборка мусора(ms)="..(0.1*(nkQt.count()-t1))/1000)
local x=collectgarbage("count")  print("занято память КБ= "..x//1)
а это результат его исполнения:
Код
>D:/lua53/lua53.exe -e "io.stdout:setvbuf 'no'" "QUIKman.lua" 
занято память КБ= 220.0
объем мусора КБ=2048.0
сборка мусора(ms)=0.0379
занято память КБ= 156.0
>Exit code: 0
В тесте создаем таблицу и заполняем ее.
Потом удаляем таблицу.
В результате у нас создается объем мусора в 2 Мбайта.
Сборщик мусора собирает его за 0.038 ms(0.000038  сек).
---------------------------
Как уже писал на форуме,
Скрипт на луа  из-за Sleep(1) в Main имеет задержу исполнения не менее 16 ms, равную кванту времени Windows.
--------------------------------------
Многие, по рекомендации разработчиков QUIK, ставят Sleep(1000)  т.е. задержку в 1000 ms
----------------------------------------
Таким образом, если до очередного срабатывания колбека включится сборщик, то он задержит колбек на 0.04 ms.
и сборщик мусора создаст дополнительную задержку не более, чем  в 0.25% от задержки от Sleep(1)
------------------------
Можно перепрограммировать системный таймер и получить задержку не менее 1 ms.  
------------------------------
Тогда задержка от сборщика составит не более 4% от задержки Sleep(1), но это всего 0.00004 секунды.
--------------------------------------------------
Полагаете, что с этим надо бороться. Вы серьезно?
========================================================
Для справки:
------------------
За  квант времени в 1-2 мс поток получает возможность выполнить многие миллионы инструкций процессора.
------------------
Не забывайте и тот факт, что информация с биржи, поступающая к Вам через интернет, приходит с задержкой десять и более ms.
Не приходит полная версия OnTrade
 
User12501,
Два вопроса, которые могут дать ответ.
1) С какой задержкой у вас Sleep в main?
2) есть ли у Вас очередь событий?
При запусках коллбеков не восстанавливается состояние скрипта по сборке мусора (QUIK 12.2.1.2)
 
Йцукен,
Такой разработчик попался.
Делать ему очевидно нечего.
Вопрос к Разработчикам. Можете объяснить этот прикол?
 
Pivaev Maxim,
Все что Вы сказали, это очевидно.
--------------------
Если, по-вашему мнению, причин много, но назовите хотя бы три.
---------------------
Обращаю внимание на тот факт, что соединение ни сервер ни терминал не разорвали.
Это значит, что для сервера нормально не отсылать данные на терминал .
------------------------
Сервер 5 минут не отсылает никаких данных на терминал.
Хотя торговый день в полном разгаре и торги идут интенсивно.
-----------------------
Назовите  три причины такого поведения сервера.
------------------------
Да,. железо сбербанка, но софт ваш.  
Не приходит полная версия OnTrade
 
Цитата
User12501 написал:
Цитата
nikolz написал:
 
Цитата
User12501  написал:
В последнее время несколько раз наблюдал такое: приходит OnTrade, в котором trans_id=0. Я знаю, что это промежуточная версия, поэтому в мой алгоритм вписано игнорировать такие вызовы, ожидая более полных. И почти всегда они приходят. Но в среднем 1-2 раза за день случается так, что полный OnTrade с ненулевым trans_id так и не приходит. В чём может быть причина?
Я мог бы убрать эту дополнительную проверку из своего кода и обрабатывать такие вызовы, в принципе trans_id мне ни для чего не нужен, достаточно brokerref. Но ведь может не прийти что-то более важное. Например бывает, что приходит OnTrade с нулевой комиссией, и сразу после него ещё один OnTrade с заполненной комиссией. Здесь сбоев не было ни разу, но что если он тоже не придёт?
 А зачем Вам trans_id в сделке?
Конкретно trans_id мне не нужен. Но если по протоколу он должен прийти, и не приходит, значит что-то пошло не так. В другой раз не прийти может что-то более серьёзное, например комиссия. Или это другое?
Вопрос отчасти пересекается с моим предыдущим вопросом про повторные OnTrade (  https://forum.quik.ru/forum10/topic9419/  ). Т.е. по trans_id=0 я пытался фильтровать OnTrade, которые заведомо не последние.
Предположу, что он не приходит при выполнении заявки в нескольких сделках, либо в заявках, установленных до за пуска скрипта. Но это лишь предположение.
Не приходит полная версия OnTrade
 
Цитата
User12501 написал:
В последнее время несколько раз наблюдал такое: приходит OnTrade, в котором trans_id=0. Я знаю, что это промежуточная версия, поэтому в мой алгоритм вписано игнорировать такие вызовы, ожидая более полных. И почти всегда они приходят. Но в среднем 1-2 раза за день случается так, что полный OnTrade с ненулевым trans_id так и не приходит. В чём может быть причина?
Я мог бы убрать эту дополнительную проверку из своего кода и обрабатывать такие вызовы, в принципе trans_id мне ни для чего не нужен, достаточно brokerref. Но ведь может не прийти что-то более важное. Например бывает, что приходит OnTrade с нулевой комиссией, и сразу после него ещё один OnTrade с заполненной комиссией. Здесь сбоев не было ни разу, но что если он тоже не придёт?
А зачем Вам trans_id в сделке?
-------------------
Поясняю:
Сделка совершается по выставленной заявке. В сделке есть номер заявки,
Номер есть всегда и по нему можно найти эту заявку.
-----------------------------
trans_id - это номер транзакции, по которой уже выставлена заявка.
т е транзакция уже давно исполнена.
Вместо нее есть заявка.
В данном случае и заявка исполнена, вместо нее есть сделка.
Т е  даже заявку нет смысла искать, а уж  trans_id тем более...
Тест ускорения скриптов
 
нагрузка процессора не изменилась.
Тест ускорения скриптов
 
Ранее привел результаты теста обмена данными через файлы.
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 раз.
Проблемная работа программы с луа роботами, Проблемная работа программы с луа роботами
 
Цитата
Йцукен написал:
Цитата
nikolz написал:
измеряете время от входа в колбек до входа в функцию main.
Ясно, к вам вопросов больше нет.
Очевидно (но, видимо, не всем), что таким образом не возможно измерить время, затрачиваемое на  вызов  колбэка. Не путать со временем исполнения кода пользовательской функции колбэка.
Время на вызов колбека Вы можете измерить еще проще.
Вызовите колбек функцию из своей dll.  У меня получилось менее 1 мкс.
---------------
Без обид, но вы просто не умеете программировать .  
Задавать списки классов и кодов инструментов, для которых будут вызываться колбэки OnAllTrade, OnParam, OnQuote в Lua-скрипте
 
Цитата
Йцукен написал:
В Lua сделать возможным задавать списки классов и кодов инструментов, для которых будут вызываться колбэки OnAllTrade, OnParam, OnQuote в Lua-скрипте.

Пояснение:
Сейчас, если в Lua-скрипте, заданы функции обратного вызова, в частности OnAllTrade, OnParam, OnQuote, то они будут вызываться для всех инструментов, данные по которым поступают в терминал, что влечёт высокий оверхэд на вызов этих самых колбэков.
Под вызовом колбэков понимается именно их вызов терминалом. Не путать с исполнением Lua-кода пользовательской функции.
Ошибаетесь.
Использую фильтр. затраты: если это не торгуемый инструмент, то 1 мкс, если торгуемый, то 5 мкс.
Задержка доставки данных по интернету примерно в 10000 раз больше.
Передача данных из скрипта в скрипт QUIK или приложение
 
Как указал ранее, задержка в 15 мс при обмене через файлы связана с квантом времени OC
и возникает из-за наличия SLEEP в цикле функции main.  
------------------
Если sleep удалить то получаем задержка обмена составляет не более 0.2 мс:
Код
GAZP,105,57149552931.4:57149552826.0:{clas=QJSIM,fun=Param,buy=128.34,sell=128.33,last=128.34}
VTBR,56,57149554092.8:57149554036.7:{clas=QJSIM,fun=Param,buy=77.80,sell=77.79,last=77.79}
SBER,138,57151073500.0:57151073362.0:{clas=QJSIM,fun=Param,buy=306.81,sell=306.79,last=306.81}
VTBR,199,57151074195.8:57151073996.4:{clas=QJSIM,fun=Param,buy=77.80,sell=77.79,last=77.8}
VTBR,57,57152455520.3:57152455463.0:{clas=QJSIM,fun=Param,buy=77.79,sell=77.78,last=77.78}
HYDR,124,57153911679.6:57153911554.8:{clas=QJSIM,fun=Param,buy=0.4315,sell=0.4314,last=0.4315}
VTBR,94,57153912857.8:57153912763.8:{clas=QJSIM,fun=Param,buy=77.79,sell=77.78,last=77.79}
VTBR,71,57155297672.1:57155297600.4:{clas=QJSIM,fun=Param,buy=77.82,sell=77.80,last=77.82}
VTBR,66,57156653740.7:57156653674.4:{clas=QJSIM,fun=Param,buy=77.84,sell=77.80,last=77.84}
SBER,94,57159382893.5:57159382798.8:{clas=QJSIM,fun=Param,buy=306.83,sell=306.82,last=306.83}
RUAL,95,57160803449.5:57160803354.5:{clas=QJSIM,fun=Param,buy=40.040,sell=40.010,last=40.04}
SBER,160,57160803716.9:57160803556.6:{clas=QJSIM,fun=Param,buy=306.86,sell=306.84,last=306.84}
VTBR,166,57162174584.1:57162174417.5:{clas=QJSIM,fun=Param,buy=77.84,sell=77.80,last=77.82}
RUAL,100,57163604236.7:57163604136.6:{clas=QJSIM,fun=Param,buy=40.043,sell=40.010,last=40.043}
VTBR,130,57172533507.3:57172533377.2:{clas=QJSIM,fun=Param,buy=77.84,sell=77.80,last=77.84}
GAZP,77,57173902076.6:57173901999.1:{clas=QJSIM,fun=Param,buy=128.35,sell=128.33,last=128.35}
ROSN,110,57173903294.6:57173903184.5:{clas=QJSIM,fun=Param,buy=407.65,sell=407.50,last=407.65}
RTKM,99,57176686384.2:57176686285.2:{clas=QJSIM,fun=Param,buy=65.82,sell=65.66,last=65.66}
SBER,26,57176686529.9:57176686503.2:{clas=QJSIM,fun=Param,buy=306.85,sell=306.83,last=306.85}
GAZP,163,57178153117.1:57178152953.5:{clas=QJSIM,fun=Param,buy=128.36,sell=128.33,last=128.36}
MOEX,44,57178153647.0:57178153602.4:{clas=QJSIM,fun=Param,buy=184.88,sell=184.77,last=184.88}
RUAL,189,57179605642.4:57179605452.5:{clas=QJSIM,fun=Param,buy=40.045,sell=40.010,last=40.045}
GAZP,165,57185716199.5:57185716034.2:{clas=QJSIM,fun=Param,buy=128.35,sell=128.33,last=128.35}
RUAL,32,57188285333.0:57188285300.2:{clas=QJSIM,fun=Param,buy=40.045,sell=40.040,last=40.04}
VTBR,74,57188286119.0:57188286044.3:{clas=QJSIM,fun=Param,buy=77.83,sell=77.80,last=77.83}
SBER,152,57192108110.7:57192107958.5:{clas=QJSIM,fun=Param,buy=306.86,sell=306.83,last=306.86}
ROSN,244,57204920658.8:57204920414.5:{clas=QJSIM,fun=Param,buy=407.65,sell=407.50,last=407.6}
RUAL,188,57204920792.8:57204920604.2:{clas=QJSIM,fun=Param,buy=40.045,sell=40.040,last=40.045}
GAZP,181,57206336953.6:57206336772.4:{clas=QJSIM,fun=Param,buy=128.36,sell=128.33,last=128.36}
MOEX,216,57211753373.1:57211753156.5:{clas=QJSIM,fun=Param,buy=184.85,sell=184.77,last=184.85}
VTBR,324,57211753620.7:57211753296.0:{clas=QJSIM,fun=Param,buy=77.84,sell=77.80,last=77.84}
MOEX,91,57213097741.2:57213097649.3:{clas=QJSIM,fun=Param,buy=184.83,sell=184.82,last=184.82}
MOEX,1152,57221834944.0:57221833791.5:{clas=QJSIM,fun=Param,buy=184.85,sell=184.82,last=184.85}
AFKS,200,57223095019.4:57223094819.2:{clas=QJSIM,fun=Param,buy=13.451,sell=13.437,last=13.451}
GAZP,188,57224384388.9:57224384200.6:{clas=QJSIM,fun=Param,buy=128.37,sell=128.33,last=128.37}
AFKS,155,57234547298.5:57234547143.1:{clas=QJSIM,fun=Param,buy=13.453,sell=13.437,last=13.453}
GAZP,142,57238172378.6:57238172235.8:{clas=QJSIM,fun=Param,buy=128.38,sell=128.33,last=128.38}
SBER,149,57250574559.6:57250574409.9:{clas=QJSIM,fun=Param,buy=306.85,sell=306.80,last=306.8}
MTSS,77,57256067937.4:57256067859.9:{clas=QJSIM,fun=Param,buy=226.55,sell=226.50,last=226.5}
ROSN,63,57256068421.6:57256068357.8:{clas=QJSIM,fun=Param,buy=407.65,sell=407.50,last=407.65}
GAZP,119,57257458284.3:57257458164.5:{clas=QJSIM,fun=Param,buy=128.37,sell=128.33,last=128.37}
VTBR,65,57258935393.6:57258935328.3:{clas=QJSIM,fun=Param,buy=77.83,sell=77.80,last=77.83}
Таким образом, если Вы используете sleep, то при любом способе обмена получите задержку не менее кванта времени OC, по умолчанию это 15мс.  
Передача данных из скрипта в скрипт QUIK или приложение
 
21 инструмент,
Первый скрипт при работе занимает 197 Кбайт.
Постепенно объем занятой памяти растет до 279 Кбайт.
Далее включается сборщик мусора и объем снова 197.
При запусках коллбеков не восстанавливается состояние скрипта по сборке мусора (QUIK 12.2.1.2)
 
Разобрался. Все работает нормально.
Память утекала от сторонней библиотеки cffi-lua.
 Пришлось написать свою
Проблемная работа программы с луа роботами, Проблемная работа программы с луа роботами
 
Цитата
Йцукен написал:
Цитата
nikolz написал:
На него затрачивается не более  5 мкс.
Интересно, как вы это измерили?  
таймером. Есть в ПК счетчик c тактом 0.1 мкс.  На основе него делаем таймер, который измеряет с погрешностью 0.1 мкс.
Потом берете мой скрипт универсального обработчика событий, который я выложил на форуме , и измеряете время от входа в колбек до входа в функцию main. Это и будет время задержки.
Передача данных из скрипта в скрипт QUIK или приложение
 
и еще...
Полученное время обмена через файлы  не является длительностью совершения записи чтения,
а равно установленному кванту Windows .
При запусках коллбеков не восстанавливается состояние скрипта по сборке мусора (QUIK 12.2.1.2)
 
Цитата
Йцукен написал:
Нужно ли при завершении скрипта принудительно вызывать collectgarbage()?
нафига?  Это лишь тормозит работу скрипта.
Проблемная работа программы с луа роботами, Проблемная работа программы с луа роботами
 
Цитата
Йцукен написал:
Оверхед от вызова колбэков высокий, независимо от кода внутри колбэка.
Я вот думаю отказаться от OnAllTrade совсем.
Да и  от OnParam стоило бы отказаться, поскольку при включении "умного" заказа данных, терминал тянет данные почти по всем классам. Но в этом случае придётся постоянно в main опрашивать на наличие новых данных по инструментам, что отрицательно скажется на производительности.
У вас очевидно неправильно написаны колбеки.
-----------------------------
колбек OnAllTrade вызывается перед записью данных в таблицу обезличенных сделок.
На него затрачивается не более  5 мкс.  
Он ничего не тормозит как и колбек OnParam.
-----------------------
колбек OnParam нужен для управления стопами и позицией.  Никакие "умные "  заказы  это не решают.  
Передача данных из скрипта в скрипт QUIK или приложение
 
еще замечу...
Передача данных через файл позволяет использовать внешние приложения,
написанные на любом другом языке программирования, без знания Lua и С.
и необходимости писать костыли для приема данных.
Передача данных из скрипта в скрипт QUIK или приложение
 
Изменил алгоритм работы скриптов.
Увеличилась скорость обмена данными:
Алгоритм:
Задается список торгуемых классов и список торгуемых инструментов
----------------
Первый скрипт записывает  информацию из колбеков  для каждого инструмента в отдельный файл.
По колбеку OnParam   передается последняя цена и лучшие цены спроса и предложения.
---------------------
Второй скрипт перебирает торгуемые инструменты и читает из их файлов новые данные.
Полученные данные выводит в лог файл.
Результат:
Время передачи данных составляет 15 млсек (0.015 сек)  
Код
SBER,15,1769849062.0292:1769849062.014:{Quote={offer_count=10.000000,bid_count=10.000000,offer={{price=308.34,quantity=3},{price=308.36,quantity=28},{price=308.37,quantity=265},{price=308.40,quantity=11},{price=308.49,quantity=137},{price=308.50,quantity=24},{price=308.56,quantity=1},{price=308.57,quantity=1},{price=308.64,quantity=1},{price=308.67,quantity=1}},bid={{price=307.87,quantity=1},{price=307.97,quantity=1},{price=308.07,quantity=1},{price=308.17,quantity=3},{price=308.18,quantity=1},{price=308.20,quantity=2},{price=308.26,quantity=231},{price=308.27,quantity=1},{price=308.29,quantity=500},{price=308.30,quantity=572}}},fun=Quote}
RUAL,15,1769849063.083:1769849063.0677:{last=41.085,fun=Param,buy=41.085,sell=41.070,clas=QJSIM}
GAZP,15,1769849063.083:1769849063.0677:{last=128.85,fun=Param,buy=128.85,sell=128.82,clas=QJSIM}
VTBR,15,1769849063.083:1769849063.0677:{last=77.84,fun=Param,buy=77.85,sell=77.84,clas=QJSIM}
SBER,15,1769849063.083:1769849063.0677:{last=308.34,fun=Param,buy=308.34,sell=308.30,clas=QJSIM}
ALRS,15,1769849064.0812:1769849064.0658:{last=42.09,fun=Param,buy=42.11,sell=42.09,clas=QJSIM}
RUAL,15,1769849064.0812:1769849064.0658:{last=41.085,fun=Param,buy=41.085,sell=41.070,clas=QJSIM}
VTBR,15,1769849064.0812:1769849064.0658:{last=77.84,fun=Param,buy=77.85,sell=77.84,clas=QJSIM}
SBER,15,1769849064.0812:1769849064.0658:{last=308.34,fun=Param,buy=308.34,sell=308.30,clas=QJSIM}
RUAL,15,1769849065.094:1769849065.0782:{last=41.085,fun=Param,buy=41.085,sell=41.070,clas=QJSIM}
VTBR,15,1769849065.094:1769849065.0782:{last=77.84,fun=Param,buy=77.85,sell=77.84,clas=QJSIM}
SBER,15,1769849065.094:1769849065.0782:{last=308.34,fun=Param,buy=308.34,sell=308.30,clas=QJSIM}
Передача данных из скрипта в скрипт QUIK или приложение
 
Цитата
Nikolay написал:
А зачем записывать на диск, если mmap позволяет создавать отражение в памяти.
ранее уже про это писал:
https://forum.quik.ru/forum17/topic8452/
-------------
Поясняю.
Есть несколько способов обмена.
Самый быстрый это через общую память dll,  следующий  mapping file.   Они есть у меня.
Но они требуют создания dll на С for lua.
-------------------
Обмен через файлы не требует написания dll и может быть реализован на луа без знания C.
Передача данных из скрипта в скрипт QUIK или приложение
 
Алгоритм теста:
---------------
два скрипта.
------------------
Первый скрипт:
Содержит колбеки. Полученная в колбеке таблица преобразуется в строку и записывается в файл.
-------------------------
Второй скрипт:
В функции main читает новые строки из файла. Если строки есть, то выводит их в лог файл.
--------------------------
В результате получаем в лог файле вторго скрипта таблицы из колбеков первого.
Ниже приведено содержимое лог файла при купокупки и продажи  акции на демо сервере
----------------------------
В строке записана следующая информация
136, млсек --задержка приема данных вторым скриптом в ms  относительно колбека первого скрипта.
307620878521: --значение счетчика в мкс во втором скрипте
307620741599:  --значение счетчика в мкс в первом скрипте
6,  мксек-- время на передачу таблицы из колбека в функцию вывода в файл в первом скрипте,
Param={sec_code=RUAL,class_code=QJSIM},  -- таблица параметров колбека
14  мксек  -- время на преобразование таблицы в строку.
Код
136,307620878521:307620741599:6,Param={sec_code=RUAL,class_code=QJSIM},14
46,307632222474:307632175847:6,Param={sec_code=PLZL,class_code=QJSIM},15
47,307632223018:307632175847:6,Param={sec_code=PLZL,class_code=QJSIM},15
151,307644227744:307644075798:4,DepoLimit={openlimit=0.0,locked_buy_value=332.37,currentbal=0.0,wa_price_currency=SUR,sec_code=SBER,locked_buy=1.0,openbal=0.0,locked_sell_value=0.0,currentlimit=0.0,firmid=NC0011100000,limit_kind=-260202016,client_code=10057,trdaccid=NL0011100043,locked_sell=0.0,awg_position_price=0.0,wa_position_price=0.0},67
152,307644228721:307644075798:4,DepoLimit={openlimit=0.0,locked_buy_value=332.37,currentbal=0.0,wa_price_currency=SUR,sec_code=SBER,locked_buy=1.0,openbal=0.0,locked_sell_value=0.0,currentlimit=0.0,firmid=NC0011100000,limit_kind=-260202016,client_code=10057,trdaccid=NL0011100043,locked_sell=0.0,awg_position_price=0.0,wa_position_price=0.0},67
76,307656202404:307656125744:6,Param={sec_code=PLZL,class_code=QJSIM},14
156,307668145723:307667989434:6,Param={sec_code=GAZP,class_code=QJSIM},15
156,307668145886:307667989434:6,Param={sec_code=GAZP,class_code=QJSIM},15
74,307679654875:307679580857:6,Param={sec_code=AFKS,class_code=QJSIM},15
74,307679655479:307679580857:6,Param={sec_code=AFKS,class_code=QJSIM},15
150,307692504242:307692353605:6,Param={sec_code=PLZL,class_code=QJSIM},14
151,307692504717:307692353605:6,Param={sec_code=PLZL,class_code=QJSIM},14
74,307705089868:307705015404:6,Param={sec_code=AFLT,class_code=QJSIM},23
72,307718039330:307717966568:6,Param={sec_code=AFLT,class_code=QJSIM},17
75,307730093355:307730017462:6,Param={sec_code=GAZP,class_code=QJSIM},15
64,307742024710:307741960032:6,Param={sec_code=GMKN,class_code=QJSIM},15
64,307742024919:307741960032:6,Param={sec_code=GMKN,class_code=QJSIM},15
4,307743459241:307743454534:5,DepoLimit={openlimit=0.0,locked_buy_value=0.0,currentbal=1.0,wa_price_currency=SUR,sec_code=SBER,locked_buy=0.0,openbal=0.0,locked_sell_value=304.88,currentlimit=0.0,firmid=NC0011100000,limit_kind=20260202,client_code=10057,trdaccid=NL0011100043,locked_sell=1.0,awg_position_price=304.92,wa_position_price=304.92},57
152,307743606854:307743454534:5,DepoLimit={openlimit=0.0,locked_buy_value=0.0,currentbal=1.0,wa_price_currency=SUR,sec_code=SBER,locked_buy=0.0,openbal=0.0,locked_sell_value=304.88,currentlimit=0.0,firmid=NC0011100000,limit_kind=20260202,client_code=10057,trdaccid=NL0011100043,locked_sell=1.0,awg_position_price=304.92,wa_position_price=304.92},57
152,307754399207:307754246493:7,Param={sec_code=GAZP,class_code=QJSIM},16
153,307754399652:307754246493:7,Param={sec_code=GAZP,class_code=QJSIM},16
151,307754554695:307754402703:2,Order={revision_number=0,side_qualifier=0,price=0.0,qty2=0.0,firmid=NC0011100000,account=NL0011100043,external_qty=0.0,uid=0,repoterm=0,operation_type=0,linkedorder=0,bank_acc_id=,passive_only_order=0,client_short_code=0,reject_reason=,filled_value=0.0,ext_order_flags=0,datetime={week_day=5,hour=13,min=34,day=30,ms=0,sec=46,year=2026,mcs=0,month=1},order_num=10210576492,accruedint=0.0,price_currency=,visibility_factor=0.0,expiry=-1,exec_type=0,exchange_code=,visible=0.0,price2=0.0,yield=0.0,value_entry_type=0,userid=NC0011100000,lseccode=,on_behalf_of_uid=0,executing_trader_qualifier=0,executing_trader_short_code=0,ordernum=10210576492,awg_price=0.0,accepted_uid=0,start_discount=0,visible_repo_value=0.0,expiry_time=-1,trans_id=0,canceled_uid=0,settlecode=,price_entry_type=0,benchmark=,flags=20,seccode=SBER,trading_session=0,repovalue=0.0,acnt_type=0,start_date=0,withdraw_datetime={week_day=1,hour=0,min=0,day=1,ms=0,sec=0,year=1601,mcs=0,month=1},client_code=10057,sec_code=SBER,settle_date=0,value=0.0,repo2value=0.0,brokerref=10057//,investment_decision_maker_short_code=0,investment_decision_maker_qualifier=0,settle_currency=,ext_order_status=0,class_code=QJSIM,repo_value_balance=0.0,activation_time=0,client_qualifier=0,qty=1.0,extref=,value2=0.0,settle_date2=0,balance=0.0,capacity=0,min_qty=0.0},169
150,307766405391:307766254827:6,Param={sec_code=NVTK,class_code=QJSIM},16
150,307766405474:307766254827:6,Param={sec_code=NVTK,class_code=QJSIM},16
59,307777503003:307777443230:6,Param={sec_code=PLZL,class_code=QJSIM},15
143,307790104848:307789961057:6,Param={sec_code=HYDR,class_code=QJSIM},15
146,307802247682:307802101258:5,Param={sec_code=GAZP,class_code=QJSIM},14
146,307802247877:307802101258:5,Param={sec_code=GAZP,class_code=QJSIM},14
Возможный источник утечки памяти в скриптах.
 
Гонял тест на версии 12.8.3.4 и обнаружил такое :
---------------------
Если принудительно не удалять таблицы параметров в колбеках, то сборщик мусора их не собирает.
-----------------------------
В итоге растет объем используемой памяти.
---------------------
Предлагаю заинтересованным проверить это.
Подтвердить или опровергнуть.
Вопрос к Разработчикам. Можете объяснить этот прикол?
 
Pivaev Maxim,
Вы можете объяснить каким образом Ваш сервер ,сохраняя соединение по TCP,
прекращает полностью передачу данных. это же даже придумать сложно, но у Вас это получилось.
-----------------------
И самое прикольное, что терминал Ваш это не обнаруживает.
----------------------
Вы же это чудо сделали.
Проблемная работа программы с луа роботами, Проблемная работа программы с луа роботами
 
Добавлю ложку ... в  бочку...
---------------
Несколько раз пытался установить обновления версии 12
Но после наблюдения тормозов  откатывался на 8. 7  что и Вам советую.
не вижу смысла быть бесплатным тестировщикам сырых версий.
Вопрос к Разработчикам. Можете объяснить этот прикол?
 
Прикол от Сбербанка.
Торги сегодня акции сбербанка
Соединение есть, но данные не приходят уже 5 минут.
Потом данные поступают
----------------------
Такой прикол наблюдается эпизодически уже не первый день.
-------------------
Можете объяснить:
Универсальный обработчик событий - это просто
 
Эта тема для начинающих писателей роботов на Lua в QUIK.
Cкрипт, на основе которого можно строить различных роботов.
В нем реализована очередь , что обеспечивает обработку всех событий
Код
 TQ={}; jQr,jQw=0,0; --очередь
----------------------------
function main()
   while run==1 do wait_connect()
   while run==2 do
     while jQw>jQr do local n=jQr+1;local t=TQ[n];TQ[n]=nil;jQr=n;t.fun(t);end
     sleep(10)
      end
   end
end 
-----------------------------
local function wQ(t,fun) --функция записи обработчика в очередь 
   if fun then
   t.fun=fun; local n=jQw;if jQr==jQw then jQw=0;jQr=0;end n=jQw+1;TQ[n]=t; jQw=n;
   end
end
-----функции обратного вызова QLua------------------------
function OnDepoLimit(t) wQ(t,setPos);  end
----------------------------
function OnFuturesClientHolding(t) wQ(t,setPos);  end
-----------------------------
function OnOrder(t) wQ(t,Order);  end
----------------------------
function OnStopOrder(t) wQ(t,StopOrder);  end
-----------------------
function OnTransReply(t) wQ(t,TransReply);  end
----------------------------
function OnParam(c, s) wQ({sec_code=s,class_code=c},Param); end  
----------------------------
function OnQuote(c, s) wQ({sec_code=s,class_code=c},Quote); end 
------------------------
function OnDisconnected() run=1 end
-------------------------
function OnConnected(flag) Trans,Tsec,Tclas,Tclient,pos={},{},{},{},{} run=1 end  
---------------------------
function CloseTH() if td_id then DestroyTable(td_id); end run =0 if f then f:close() end end
------------------------------
function OnStop(s) CloseTH();return 1000 end 
---------------------------
function OnClose()  CloseTH() end 
---------------------------
function OnCleanUp() run=1; end
---------------
function OnInit(path) OnConnected(true); end
Функции обратного вызова записываются одинаково.
В них мы помещаем в очередь TQ  полученные параметры и имя функции, которая обрабатывает данное событие.
Функция обработки событий реализуется отдельно.
Если функция обработки события отсутствует, то событие не будет записываться во очередь.  
Изменение параметров встроенных индикаторов из скрипта
 
Добрый день,
---------------------
Сейчас в QLUA есть возможность перезапустить скрипт индикатора при изменении параметров в окне настройки индикатора.
-----------------------
Предлагаю реализовать возможность изменения параметров встроенного индикатора из скрипта.
==================
Поясняю:
--------------------
Да, можно написать копию встроенного индикатора на луа и таким образом решить задачу изменения параметров индикатора.
-----------------
Но такое решение работает раз в 100 медленнее, чем встроенное.
--------------------
Кроме того, в терминале QUIK много встроенных индикаторов и нет смысла  делать их в виде копии на луа,
либо использовать Вашу библиотеку скриптов на луа и изучать алгоритмы индикаторов.

 
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Прикольно читать Вашу тему.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Цитата
VPM написал:

Ответ на Ваш вопрос очевиден, "Промышленный" - это то чем пользуются хэдж - фонды, или закрытые отделы в банках под управлением у которых находятся собственные средства, а не клиентов. И такие торговые платформы отвечают не которым стандартом, где то выше уже какие то стандарты приводил.
Если правильно понял Ваш ответ, то термин "промышленная архитектура"  это Вы придумали вв детском саду.
------------------------
Если  я не прав, то дайте ссылку, где этот термин определен.
Назовите хоть один хедш-фонд  или банк,   который использует этот термин.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
объясняю популярно, для тех, кто изобретает велосипед.
-------------------
Если Вы пользуете встроенные графики , то проще и быстрее не читать их в скрипте и потом выковыривать название индикатора из легенды,
а записать из значения либо параметры, включая код индикатора , интервал в файл.
В скрипте прочитать эти параметры при их смене на графике (если это график с якорем).
либо писать индикаторы в файлы с именем инструмента и читать в скрипте соответствующий файл.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Цитата
VPM написал:
Концептуально, такую архитектуру можно свести к последовательным шагам взросления системы, в стиле боевого QUIK-safe.
Важных, самостоятельных 4 - логических слоя, как в профессиональных торговых платформах:

2.2. Использование данных от индикатора (и это уже по взрослому).
Код
 
И ни какой магии, типа машинного обучения или нейросетей!  А главное безопасное изменение и замена модулей. Хочется думать так, а жизнь покажет, что опять не учитываю.  ::  
Прикольно, что вы написали. И это не по взрослому, а по дилетанскому.
-----------------------
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Цитата
VPM написал:
nikolz,  "У нас" - это те кто пользуется  инфраструктурой Квика, и я рассуждаю о разворачивании на ее основе торговой платформы на луа, а не вообще. Не нужны, тут ни какие драйвера, кроме того что предоставляет квик. Разворачивая торговую систему, приводя в порядок архитектуру  и дописывая модули, мне это напомнило порядок ОС (как пример DOS). Зная это, можно изначально закладывать архитектуру как промышленную. Сложно но можно!
а что такое "промышленная архитектура"? Откуда вы взяли этот термин? если сами придумали, то дайте определение.  
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Цитата
VPM написал:
Цитата
nikolz написал:
А если серьезно, то попробуйте написать на луа какой-нибудь драйвер устройства, что является обязательным элементом OC.
Не я тоже возмущен почему, у "Условного Маркет Мейкера"  скорость 10 мк.сек. а унас 200 мл.сек., а кому повезет, ну хорошо кто следит, 100 мл.сек.
И это ни сколько не отменяет тот  факт что код может отвечать принципам и требованиям ОС?
Вы заблуждаетесь относительно "у нас"  
На бирже торгует брокер, а не его клиенты. QUIK - это программа подачи заявок брокеру, а не для прямой торговли на бирже.
--------------------  
относительно мксек ММ и mkсек QUIK.  млсек - это время прохождение данных от Вашего ПК до брокера по интернету.  Разместите свой ПК в дата центре на M9 и у вас тоже будут мкс.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
А если серьезно,
то попробуйте написать на луа какой-нибудь драйвер устройства,
что является обязательным элементом OC.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
VPM,
Вы еще больше удивитесь, когда узнаете,
что из кирпичей можно построить стены дома и,
даже сложить печку в доме том.
--------------
А самое прикольное,
Вы никогда бы не догадались,
земля -круглая, а не плоская.  
--------------
В мире еще много удивительного и не познанного.
Рыночная заявка для торговли фьючерсами
 
если очень надо, пишите в личку.
Рыночная заявка для торговли фьючерсами
 
Цитата
Сергей Че написал:
Цитата
nikolz написал:
Спасибо, конечно, за примеры транзакций, но ты так и не ответил на мой вопрос про запрос данных из стакана.
Не припомню, что я обязался отвечать на все вопросы на форуме.
Рыночная заявка для торговли фьючерсами
 
Снятие всех заявок на срочном рынке FORTS
на покупку  контрактов на курс акций Ростелеком -ао
TRANS_ID=50; ACCOUNT=SPBFUT00001;  ACTION=KILL_ALL_FUTURES_ORDERS; OPERATION=B; CLASSCODE=SPBFUT;  BASE_CONTRACT=RTKM;
Рыночная заявка для торговли фьючерсами
 
Перестановка заявок на срочном рынке FORTSACTION=MOVE_ORDERS; TRANS_ID=333; CLASSCODE=SPBFUT;  SECCODE=EBM6; FIRM_ID=SPBFUT389; MODE=1; FIRST_ORDER_NUMBER=21445064;  FIRST_ORDER_NEW_PRICE=10004; FIRST_ORDER_NEW_QUANTITY=4;  SECOND_ORDER_NUMBER=21445065; SECOND_ORDER_NEW_PRICE=10004;  SECOND_ORDER_NEW_QUANTITY=4;
Рыночная заявка для торговли фьючерсами
 
см. док:
Заявка на продажу
Фьючерс LKOH-3.10, рыночная, 15  контрактов
ACCOUNT=SPBFUT00009; CLIENT_CODE= SPBFUT00009; TYPE=M;  TRANS_ID=8; CLASSCODE=SPBFUT; SECCODE=LKH0; ACTION=NEW_ORDER; OPERATION=S;  PRICE=16231; QUANTITY=15;
Странная задача) помогите
 
для какого приложения пишите?
После обновления на версию 12.8.3.4 появился глюк в таблице "купить-продать", Глюк с фильром инструментов в таблице
 
Цитата
Ivan Smirnov написал:
Цитата
nikolz написал:
Проверьте подписку.  часто при обновлении обновляется подписка и в результате принимаются  новые инструменты.
Не совсем понимаю что такое подписка и где ее проверять. В настройках получения котировок стоит получать "умным заказом".

Дело в том что если даже несколько раз заходить в меню "редактировать таблицу" (таблицы купить-продать) и сохранять настройки, то на несколько секунд после этого отображается правильный набор инструментов а потом туда добавляется целая гора других инструментов. И так можно повторять несколько раз, результат будет всегда такой.

Поэтому полагаю что все же речь идет о глюке.
После обновления на версию 12.8.3.4 появился глюк в таблице "купить-продать", Глюк с фильром инструментов в таблице
 
Цитата
Ivan Smirnov написал:
Здравствуйте.
Один из моих брокеров обновил квик до версии 12.8.3.4 и в новой версии сразу стал заметен глюк в таблице "купить-продать".
Суть его в том, что независимо от того, какие инструменты отобраны для отображения в этой таблице, в нее добавляется большое количество других инструментов (в моем случае порядка 800) из разных классов. По какому принципу они туда отбираются не совсем понятно. В моем конкретном случае мне "на глаз" кажется что это все инструменты которые есть во всех других таблицах данного экземпляра квик.

Сценарий:

1) Открыть таблицу купить-продать
2) Нажать "редактировать таблицу", отобрать несколько инструментов, сохранить
3) Подождать несколько секунд (до минуты)
4) Помимо выбранных на шаге 2) инструментов в таблице отобразятся еще какие-то инструменты

При этом если снова зайти в настройку "редактировать таблицу", там по-прежнему будут только выбранные пользователем инструменты (т.е. настройка по-прежнему выглядит корректно)
Проверьте подписку.  часто при обновлении обновляется подписка и в результате принимаются  новые инструменты.
Стоимость позиции на начало дня, Почему-то везде нулевая в T0
 
T+ - это режим когда деньги сейчас, а стулья либо чере 1 либо через 2 дня
Стоимость позиции на начало дня, Почему-то везде нулевая в T0
 
Цитата
Kilor написал:
Цитата
nikolz написал:
SBMM торгуется в режиме T+. Почему у SBMM  появится цена T0?
Я купил эту позицию вчера в количестве 100 лотов по цене X и сегодня докупил 200 лотов по цене Y.
В T1, понятно, я вижу, что у меня "сейчас" 300 лотов общей себестоимостью 100X+200Y.
В T0 вижу, что на начало сессии имелось 100 лотов общей себестоимостью... 0! Выглядит странно, как минимум.
T0 - это режим торгов при котором взаиморасчет выполняется в день заключения сделки. Е+ - это режим когда деньги сейчас, а стулья либо чере 1 либо через 2 дня.
-----------------------------
В режиме Т0 на Московской бирже, как правило, торгуются облигации субъектов РФ, муниципальные облигации, корпоративные еврооблигации, номинированные в рублях и иностранной валюте, кроме долларов США, и облигации МФО
Стоимость позиции на начало дня, Почему-то везде нулевая в T0
 
Если режим T+ то с какого цена приобретения будет на T0?
Стоимость позиции на начало дня, Почему-то везде нулевая в T0
 
SBGB  аналогично:
SBGB ETF. Регистрационный номер. 3629. Код ISIN. RU000A1000F9. Режим торгов. Т+
Стоимость позиции на начало дня, Почему-то везде нулевая в T0
 
SBMM торгуется в режиме T+. Почему у SBMM  появится цена T0?
Стоимость позиции на начало дня, Почему-то везде нулевая в T0
 
Цитата
Oleg Kuzembaev написал:
Kilor, здравствуйте.

Попробуйте донести поддержке, что Вы не указываете на ошибку при передаче данных, а просто хотели, чтобы брокер отправлял Вам цену приобретения и в Т0 тоже, и что это нужно Вам для анализа данных, а также написания скриптов.
А если прочитать ее из T1. Это не решит проблему?
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 88 След.
Наверх