возможности и производительности LUA

Страницы: 1
RSS
возможности и производительности LUA
 
вопрос ко всем экспертам Lua

ранее с Lua/Qpile я не работал. Сейчас прочел хелп по обоим инструментам и пытаюсь оценить подойдут они мне или нет.

Цель: получать данные по большому количеству стаканов 300-500 инструментов. Причем по не самым ликвидным инструментам, так что обновленных значений по этой массе будет около 10 в секунду, с редкими всплесками до 100 в секунду. то есть сам по себе пул информации небольшой по меркам Квика.

для меня доступны два способа:
1) Получать данные по стаканам в LUA и отдавать данные по изменившимся инструментам в таблицу Квик оттуда через DDE во вне (без изменений данных)
2) Делать тоже самое но с обработкой (агрегированием данных стакана) в Lua и уже потом выводить во вне

Общие Вопрос насколько такой план осуществим? Что посоветуете?

Конкретные вопросы:
1) не начнет ли Квик тормозить, сразу после того как я закажу данные стаканов по 300-ам инструментам ( железо современное, но в хелпе написано, что через интерфейс Квик максимум 200 стаканов можно открыть)
2) Из Lua данные отдавать во вне можно только возвращая их в таблицы Квик и оттуда через DDE(ODBC)? или можно как-то напрямую,(как)?
3) Параметры из вне в Lua передают через текстовые файлы? или есть способ лучше?

Всем кто откликнется  заранее спасибо.
 
Цитата
investor investor написал:
олучать данные по большому количеству стаканов 300-500 инструментов
Для начала надо получить одобрение от брокера, т.к. по умолчанию пользователи могут заказывать только 200 стаканов.

Цитата
investor investor написал:
1) Получать данные по стаканам в LUA и отдавать данные по изменившимся инструментам в таблицу Квик оттуда через DDE во вне (без изменений данных)
LUA таблицы нельзя экспортировать по DDE, а QPILE таблицы можно.
Собственно а что мешает зразу из LUA отдавать данные во вне? так проще и надежней, лишние прокладки тут не к чему.

Цитата
investor investor написал:
2) Делать тоже самое но с обработкой (агрегированием данных стакана) в Lua и уже потом выводить во вне
Совершенно не понятно что Вы хотите агрегировать и зачем.

Цитата
investor investor написал:
1) не начнет ли Квик тормозить, сразу после того как я закажу данные стаканов по 300-ам инструментам ( железо современное, но в хелпе написано, что через интерфейс Квик максимум 200 стаканов можно открыть)
На этот вопрос ответить может только Вы, поставив соответствующий эксперимент.

Цитата
investor investor написал:
2) Из Lua данные отдавать во вне можно только возвращая их в таблицы Квик и оттуда через DDE(ODBC)? или можно как-то напрямую,(как)?
Через текстовые файлы, через ODBC посредством сторонней библиотеки luasql.dll, сразу в Вашу DLL, и много чего еще. Стоит поискать в интернете удобный Вам способ.

Цитата
investor investor написал:
3) Параметры из вне в Lua передают через текстовые файлы? или есть способ лучше?
А чем текстовые файлы плохи?
Или если надо GUI, можно через сторонние библиотеки (например тот же vcl.dll) создать окно с настройками.
некоторые делают интерфейс встроенными в QLUA средствами (см в документации "Функции для работы с таблицами Рабочего места QUIK")
можно задавать параметры через базу SQL (та же  luasql.dll)
В зависимости от задач, QLUA может считывать данные из терминала. Например можно нарисовать на графике метку, а QLUA ,будет ее считывать и при ее изменении что то делать.
 
Цитата
investor investor написал:
вопрос ко всем экспертам Lua

ранее с Lua/Qpile я не работал. Сейчас прочел хелп по обоим инструментам и пытаюсь оценить подойдут они мне или нет.

Цель: получать данные по большому количеству стаканов 300-500 инструментов. Причем по не самым ликвидным инструментам, так что обновленных значений по этой массе будет около 10 в секунду, с редкими всплесками до 100 в секунду. то есть сам по себе пул информации небольшой по меркам Квика.

для меня доступны два способа:
1) Получать данные по стаканам в LUA и отдавать данные по изменившимся инструментам в таблицу Квик оттуда через DDE во вне (без изменений данных)
2) Делать тоже самое но с обработкой (агрегированием данных стакана) в Lua и уже потом выводить во вне

Общие Вопрос насколько такой план осуществим? Что посоветуете?

Конкретные вопросы:
1) не начнет ли Квик тормозить, сразу после того как я закажу данные стаканов по 300-ам инструментам ( железо современное, но в хелпе написано, что через интерфейс Квик максимум 200 стаканов можно открыть)
2) Из Lua данные отдавать во вне можно только возвращая их в таблицы Квик и оттуда через DDE(ODBC)? или можно как-то напрямую,(как)?
3) Параметры из вне в Lua передают через текстовые файлы? или есть способ лучше?

Всем кто откликнется  заранее спасибо.
мечтать не вредно, но бесполезно.
Рекомендую считать время обновления информации 0.1...0.5  сек. Остальные расчеты сделайте сами
 
обновление множества стаканов вы  получите  в пакете, но информация в них будет не одновременная.  следующее обновление будет примерно не ранее чем через 0.1 сек.
Кроме того в винде квант для задачи не менее 10 мс т е квик  получит время процессора не ранее чем через 10 мс
Еще есть алгоритм Нейгла  который может дать вам задержку до 0.2 с
Успехов
 
Ещё есть операционные системы реального времени , которые на порядок дороже ОС Windows и имеют большее быстродействие. Но имеет ли смысл во вне копировать 300 стаканов, ведь мало просто скопировать, надо ещё обработать всю эту информацию и затем экспортировать обратно транзакции по заявкам .  
человек (не робот)
 
Цитата
Андрей написал:
Ещё есть операционные системы реального времени , которые на порядок дороже ОС Windows и имеют большее быстродействие. Но имеет ли смысл во вне копировать 300 стаканов, ведь мало просто скопировать, надо ещё обработать всю эту информацию и затем экспортировать обратно транзакции по заявкам .  
заканчивайте чушь пороть. во всех смыслах :)
 
Цитата
Николай Камынин написал:
обновление множества стаканов вы  получите  в пакете, но информация в них будет не одновременная.  следующее обновление будет примерно не ранее чем через 0.1 сек.
Кроме того в винде квант для задачи не менее 10 мс т е квик  получит время процессора не ранее чем через 10 мс
Еще есть алгоритм Нейгла  который может дать вам задержку до 0.2 с
Успехов
спасибо за советы. я не до конца понял смысл поэтому кое-что переспрошу.
вторая мысль о том, что передавать во вне данные для анализа (а потом обратно для сделок) это медленно, мне понятна.

но вот что значит "обновление множества стаканов вы получите в пакете, но информация в них будет не одновременная. следующее обновление будет примерно не ранее чем через 0.1 сек." ???

я правильно понял что:

1) много стаканов (более 100) вы запрашивали, и Квик не виснит от этого?
2) почему пакет с "изменениями стаканов" не будет одновременный? я себе это так представляю: за последнюю 0.1 секунду из 300 стаканов обновился только один(или 2), поэтому он в данном пакете целиком и прилетит. когда обновятся следующие прилетят также и они. Само собой эти данные по времени будут чуть отставать от данных Квика в таблице текущих котировок.

Ваш ответ выглядит наиболее экспертным, поэтому надеюсь Вас не затруднит мне его чуть прояснить. спасибо.
 
100 стаканов запросить с сервера можно, проблем нет.

пакеты/стаканы есть вещь умозрительная. Для вас в луа есть сигнал обновления стакана (колбек). Сигнал пришел -запрашивайте изменение. Все остальное - околовсяческое...
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Если у вашего брокера несколько серверов, вы можете запустить три КВИКа и в каждом открыть по 200 стаканов. Не вживую открыть, а с помощью Луа естественно.
Я в Открытии так и делаю. Если приноровиться и понять какие сервера позволяют это делать, можно залогиниться одновременно тремя квиками. Например
Сервер Билайн
Сервер №3
Сервер Макомнет.
 
Цитата
Let_it_go написал:
Если у вашего брокера несколько серверов, вы можете запустить три КВИКа и в каждом открыть по 200 стаканов. Не вживую открыть, а с помощью Луа естественно.
Я в Открытии так и делаю. Если приноровиться и понять какие сервера позволяют это делать, можно залогиниться одновременно тремя квиками. Например
Сервер Билайн
Сервер №3
Сервер Макомнет.
понятно, спасибо всем
 
Цитата
investor investor написал:
Цитата
Николай  Камынин написал:
обновление множества стаканов вы  получите  в пакете, но информация в них будет не одновременная.  следующее обновление будет примерно не ранее чем через 0.1 сек.
Кроме того в винде квант для задачи не менее 10 мс т е квик  получит время процессора не ранее чем через 10 мс
Еще есть алгоритм Нейгла  который может дать вам задержку до 0.2 с
Успехов
спасибо за советы. я не до конца понял смысл поэтому кое-что переспрошу.
вторая мысль о том, что передавать во вне данные для анализа (а потом обратно для сделок) это медленно, мне понятна.

но вот что значит "обновление множества стаканов вы получите в пакете, но информация в них будет не одновременная. следующее обновление будет примерно не ранее чем через 0.1 сек." ???

я правильно понял что:

1) много стаканов (более 100) вы запрашивали, и Квик не виснит от этого?
2) почему пакет с "изменениями стаканов" не будет одновременный? я себе это так представляю: за последнюю 0.1 секунду из 300 стаканов обновился только один(или 2), поэтому он в данном пакете целиком и прилетит. когда обновятся следующие прилетят также и они. Само собой эти данные по времени будут чуть отставать от данных Квика в таблице текущих котировок.

Ваш ответ выглядит наиболее экспертным, поэтому надеюсь Вас не затруднит мне его чуть прояснить. спасибо.
Попробую ответить. Так как подробно отвечать очень долго, то я упрощенно объясню.
1) программа квик - это программа подачи вами заявки брокеру. Все остальное, что в ней реализовано - это бесплатное приложение.  (Это не я придумал, это разработчики так позицируют QUIK уже 20 лет)
2) все ваши заявки идут через сервер брокера для подтверждения лимитов а потом уже на сервер биржи.
Время обработки одной транзакции сервером брокера примерно 1 мс. Но есть очередь и в ней вы не всегда первый. Поэтому если Вы даже мгновенно получите стакан и мгновенно отреагируете, то на бирже будете не первым.
HFT роботы всегда будут впереди вас и будут вас иметь.
3) информация с биржи передается как бы двумя потоками. один - это общедоступная информация, т е то, что для всех одно и тоже - это и стаканы и потоки обезличенных сделок.
Эта информация передается с биржи с определенным интервалом , пакетами. Т е Вы в пакете получаете кучу всего, что произошло за время после предыдущего пакета.
стаканы с биржи передаются в виде изменений в стакане. как я понимаю, эти изменения перерабатывает сервер брокера и в каком-то виде передает в терминал квика.
-----------------------
Так как QUIK - это не программа для высокоскоростной торговли а лишь см п1, то все информация поступает сравнительно медленно. Мои измерения показали, что допустимо считать задержку принятой информации на величину не менее 0.1 сек.
Вот исходя из этой задержки и следует планировать работу торгового робота. В реальности задержка может доходить до 1-3 секунд.
-------------------------
Рекомендую не пытаться делать на квике HFT, а создавать программу, которая способно играть при любых задержках.
-----------------------
Пакеты обновляются на бирже несинхронно, поэтому сколько и когда обновятся сказать невозможно. Приходят заявки на биржу и они ставятся в очередь. Биржа одна , а игроков тысячи и среди них сотни HFT роботов, которые ставят и снимают завки меньше чем за 10 мс.
------------------------
Примерно так.
 
и еще...
не знаю зачем Вам 300 стаканов.
Прием и сохранения информации из стаканов это самая затратная операция.
Если будете скальпировать то реально не более 3-5 инструментов.
Если вы хотите делать биржевой сканер, то его можно сделать по ТТП
Страницы: 1
Читают тему
Наверх