Правильно ли я понимаю общую концепцию QUIK + DDE/QLua?

Страницы: 1
RSS
Правильно ли я понимаю общую концепцию QUIK + DDE/QLua?, Впрос по концептуальному видению
 
Одно время разрабатывал роботов на MQL для MT4, исследования истории проводил на Delphi + MySQL. Недавно увлёкся срочным рынком. Решил написать простого робота для QUIK. Узнал о способах через DDE и QLua. Первый я понял, как «всё через открытые таблицы в QUIK», потому выбрал второй способ. Но по аналогии с MQL не вижу нормальных повседневных методов, напротив, в документации — о ужас! — похоже, тоже всё через таблицы. Правильно ли я понимаю, что нет готовых функций типа «Узнать баланс на счёте» или «Выставить заявку с такими-то параметрами», и всё нужно сводить к таблицам в QUIK (смотреть ячейки и выводить данные в таблицы и пр.)?

Если это так, какие есть концептуальные особенности использования такой прослойки? Нормально ли живётся с таким подходом? В идеале я хотел работать через Plaza 2, на нормальном языке, с нормальной отладкой, с нормальным API, но ежемесячная оплата доступа охладила пыл. Можно ли с QLua как-то приблизиться к архитектурному уровню работы через Plaza 2 или всё-таки придётся оперировать таблицами QUIK?

Буду рад если укажите на ошибки в понимании. Возможно есть уже статьи для разработчиков типа "Начиная писать на QLua имейте в виду что..." Спасибо за ответ!
 
Концепция проста.

В терминале есть какие-то внутренние механизмы, которые он использует в своей работе.

Qlua есть программный способ для доступа к части этих механизмов.

Все остальное пишем сами. Нужен класс, работающий с балансом на счете - нет проблем, берем его и пишем. Сами.

Думали, в сказку попали?
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
Edunon пишет:

Если это так, какие есть концептуальные особенности использования такой прослойки? Нормально ли живётся с таким подходом? В идеале я хотел работать через Plaza 2, на нормальном языке, с нормальной отладкой, с нормальным API, но ежемесячная оплата доступа охладила пыл. Можно ли с QLua как-то приблизиться к архитектурному уровню работы через Plaza 2 или всё-таки придётся оперировать таблицами QUIK?
Разница примерно в следующем.
когда Вы работаете с плазой, то реализуется схема клиент-сервер . Клиентом выступает ваш робот.
А сервером -сервер биржи  
В этой схеме сервер отдает вам ответы на запросы, а хранение переданной сервером информации Вы осуществляете сами в своей программе.
Т е создаете свою БазуДанных
------------------------------------------
В случае работы с квиком,  в качестве клиента выступает торговый терминал КВИК.
Он реализует хранение ответов и пересылку запросов на сервер
Сервером выступает сервер брокера, он транслирует ответы сервера биржи
Торговый терминал QUIK организует хранение полученной с сервера информации.
Поэтому появляются таблицы (как известно таблицы - это способ хранения в реляционных базах данных )
---------------------------------------
Таким образом, при работе с QUIK Вы обращаетесь за данными к базе данных терминала QUIK , а ваши запросы и ответы на них QUIK транслирует на сервер брокера и далее на сервер биржи.
Т е при работе с плазой у Вас нет готовой базы данных, а при работе с QUIK - есть - это таблицы терминала.
 
Николай, большое спасибо за развёрнутый ответ! Пока есть несколько непонятных моментов, которые опускаются в объяснениях, буду рад, если вкратце поясните их.
  1. В QLua и через DDE можно смотреть открытые таблицы или открывать новые. Правильно ли я понимаю, что нужно учитывать, что пользователь может случайно закрыть таблицы, забыться и поменять состав столбцов, или ещё как-либо непреднамеренно повлиять на области видимости робота? Я пока плохо знаю QUIK, потому есть опасения.
  2. Пока писал ответ, нашёл как отправлять заявку: sendTransaction(), значит есть всё таки «не табличные» функции? Как это укладывается в общую парадигму?
  3. Вы написали, что QUIK хранит данные, полученные от серверов биржи. Правильно ли я понимаю, что таким образом можно смотреть историю?
Спасибо за помощь!
 
Здравствуйте,
QLUA не работает с таблицами терминала (исключение только функции работы с графиками).
Она работает с хранилищем данных в котором находятся данные из этих таблиц
Это значит что пользователь может менять колонки местами, настраивать фильтры, открывать по несколько одинаковых таблиц с разными настройками, это ничего не изменит. в QLUA все равно попадут все данные из хранилища.
Другой вопрос в том как эти данные в хранилище попадают.
Они туда попадают только если был выполнен их заказ. Заказ данных, осуществляется как раз путем открытия таблиц.
 
Цитата
Edunon пишет:
Николай , большое спасибо за развёрнутый ответ! Пока есть несколько непонятных моментов, которые опускаются в объяснениях, буду рад, если вкратце поясните их.
В QLua и через DDE можно смотреть открытые таблицы или открывать новые. Правильно ли я понимаю, что нужно учитывать, что пользователь может случайно закрыть таблицы, забыться и поменять состав столбцов, или ещё как-либо непреднамеренно повлиять на области видимости робота? Я пока плохо знаю QUIK, потому есть опасения.
Пока писал ответ, нашёл как отправлять заявку: sendTransaction(), значит есть всё таки «не табличные» функции? Как это укладывается в общую парадигму? Вы написали, что QUIK хранит данные, полученные от серверов биржи. Правильно ли я понимаю, что таким образом можно смотреть историю?

Спасибо за помощь!
В своем ответе под таблицами я имел ввиду внутреннее хранилище.
Поясню свое видение QUIK
В квике есть хранилище и есть внешнее отображение данных из него.
Как сделано хранилище я не знаю. Учитавая с какими напрягами туда надо лазить, полагаю что как-то через что-то.
Но это не важно
Если память мне не изменяет (уже давно не работаю с DDE) DDE экспорт во внешние программы работает с форматом отображаемых таблиц . Т е есть меняем порядок столбцов то и в DDE будет меняться
При работе c библиотекой QLUA обращение осуществляется к хранилищу по именам
Следовательно никакого значения порядок столбцов на экране для QLUA не имеет
Т к данные в колбек отдаются практически перед отображением на экране и перед передачей в DDE, то QLUA получается более удобнее , чем DDE
----------------------
sendTransaction() - эта функция отправки заявки на биржу. Никакого отношения к хранению данных не имеет.
Конечно в QLUA есть множество функций прикладного назначения, а не только обращения к хранилищу данных.
----------------------
В целом, LUA с библиотекой QLUA и расширениями DLL на Си позволяют написать любого робота или эксперта или индикатор.
 
Николай, Сергей, спасибо огромное за помощь! Концепция стала понятна, документацию и примеры теперь понимать легче.
Страницы: 1
Читают тему
Наверх