Функции обратного вызова, встроенные в QLua

Автор записи: Дмитрий (Admin)
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 9, среднее: 5,00 из 5)
Загрузка...

Qlua-основы
Во время работы терминала QUIK в нем происходят различные события, такие, как приход новой обезличенной сделки, выставление заявки, сработал стоп-ордер и т.п. Для того, чтобы своевременно и определенным образом реагировать на эти события, в скрипте QLua можно использовать функции обратного вызова, которые будут выполнять блок кода, расположенного внутри них, в тот момент, когда это событие произойдет.

Для каждого определенного события есть своя предопределенная разработчиками QLua функция!

Функции OnInit(), main() и OnStop() рассматриваются в статье "База скрипта в QLua(Lua)".

Для использования функций в терминале QUIK должны быть открыты соответствующие им таблицы!

OnAccountBalance()
Функция вызывается терминалом QUIK при получении изменений текущей позиции по счету (ТОЛЬКО ДЛЯ БРОКЕРА).
OnAccountPosition()
Функция вызывается терминалом QUIK при изменении денежной позиции по счету (ТОЛЬКО ДЛЯ БРОКЕРА).
OnAllTrade()
Функция вызывается терминалом QUIK при получении обезличенной сделки (Таблица всех сделок).
OnCleanUp()
Функция вызывается терминалом QUIK при смене сессии и при выгрузке файла qlua.dll

OnClose()
Функция вызывается перед закрытием терминала QUIK.
OnConnected()
Функция вызывается терминалом QUIK при установлении связи с сервером QUIK.
OnDepoLimit()
Функция вызывается терминалом QUIK при получении изменений лимита по бумагам.
OnDepoLimitDelete()
Функция вызывается терминалом QUIK при удалении клиентского лимита по бумагам.
OnDisconnected()
Функция вызывается терминалом QUIK при отключении от сервера QUIK.
OnFirm()
Функция вызывается терминалом QUIK при получении описания новой фирмы от сервера.
OnFuturesClientHolding()
Функция вызывается терминалом QUIK при изменении позиции по срочному рынку (Позиции по клиентским счетам (фьючерсы)).
OnFuturesLimitChange()
Функция вызывается терминалом QUIK при получении изменений ограничений по срочному рынку (Ограничения по клиентским счетам).
OnFuturesLimitDelete()
Функция вызывается терминалом QUIK при удалении лимита по срочному рынку.
OnMoneyLimit()
Функция вызывается терминалом QUIK при получении изменений по денежному лимиту клиента (Таблица лимитов по денежным средствам).
OnMoneyLimitDelete()
Функция вызывается терминалом QUIK при удалении денежного лимита.
OnNegDeal()
Функция вызывается терминалом QUIK при получении внебиржевой заявки (Таблица заявок на внебиржевые сделки).
OnNegTrade()
Функция вызывается терминалом QUIK при получении внебиржевой сделки для исполнения (Таблица сделок для исполнения).
OnOrder()
Функция вызывается терминалом QUIK при получении новой заявки или при изменении параметров существующей заявки (Таблица заявок).
OnParam()
Функция вызывается терминалом QUIK при изменении текущих параметров (Текущая таблица параметров).
OnQuote()
Функция вызывается терминалом QUIK при получении изменения стакана котировок.
С примером использования данной функции можно ознакомиться в этой статье.

OnStopOrder()
Функция вызывается терминалом QUIK при получении новой стоп-заявки или при изменении параметров существующей стоп-заявки (Таблица стоп-заявок).
OnTrade()
Функция вызывается терминалом QUIK при получении сделки (Таблица сделок).
OnTransReply()
Функция вызывается терминалом QUIK при получении ответа на транзакцию пользователя (Таблица транзакций).

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

В функциях OnAllTrade(), OnParam() и OnQuote() вывод сообщений намеренно закомментирован, т.к. они вызываются очень часто и независимо от Ваших действий, если Вам будет нужно отследить их вызовы, раскомментируйте строки вывода сообщений в данных функциях.

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

Скрипт отслеживания работы функций обратного вызова
Для более удобного просмотра информации, выводимой при помощи функции message(), используйте таблицу сообщений (меню: "Сообщения"->"Системные сообщения"->"Таблица сообщений..."). А также, снимите флажок "Показывать окно сообщений" в меню: "Настройки"->"Основные..."->"Сообщения".

Если у Вас появились какие-то вопросы, задайте их в комментариях под статьей !!!

Добавить комментарий

Функции обратного вызова, встроенные в QLua: 156 комментариев

  1. Здравствуйте!
    Подскажите, пожалуйста, в какой момент вызывается функция OnTableEvent(), сразу при наступлении события, или если скрипт выполнял другую функцию, то по ее завершению? И после обработки события откуда продолжает выполнение, с места вызова?

    1. Здравствуйте.
      событие попадает в хранилище терминала, если в скрипте есть подписка на это событие, то будет вызвана функция OnTableEvent() в потоке терминала, main об этом ничего не знает и продолжает выполнять свой код в штатном режиме