Избранное трейдера Олег Леликов

по

Qlua: работа со сделками, позициями и денежными лимитами. Часть 1.

Функция OnTrade
Сохранение параметров сделки в файл.
Работа с таблицей сделок.
Сохранение всех сделок дня.
Скрипт автосохранения всех заявок и сделок под завершение торгового дня.

Для отслеживания прошедших сделок мы можем задействовать функцию обратного вызова OnTrade. Она во многом похожа по логике на OnOrder, только возвращает коллбэки уже по исполненным сделкам. В случае, если заявка разбивается на несколько сделок, мы получим информацию по каждой.

В файле QLUA.chm в директории терминала находим через поиск описание самой функции:

Qlua: работа со сделками, позициями и денежными лимитами. Часть 1.
И таблицу с параметрами:



( Читать дальше )
  • обсудить на форуме:
  • Quik Lua

Qlua: структура скрипта для торгового терминала, обработка обрыва связи и её возобновления, работа с файлами

Сегодня начинаем уже писать полноценные скрипты для терминала, а не отдельные блоки кода на lua.

Пройдем:

  • Структуру типового скрипта qlua с примерами.
  • Обработку скриптом «обрыва связи» с сервером и возобновления работы.
  • Работу с файлами: запись, перезапись и чтение файла.
  • getScriptPath, getWorkingFolder

Структура скрипта

В торговом терминале можно запускать небольшие примеры на lua, как мы это делали ранее, но если говорить о постоянно работающем алгоритме, а не о компактной программе, которая должна выполнить только несколько коротких действий, то минимальная структура скрипта для квика будет содержать следующие функции:

Qlua: структура скрипта для торгового терминала, обработка обрыва связи и её возобновления, работа с файлами

function OnInit – инициализирует глобальные переменные и константы (например, торгуемые бумаги, размеры тейка и стопа, торговый счет и пр.), имена таблиц, необходимых файлов.

function OnStop – функция остановки скрипта, активируется при нажатии клавиши «Остановить» в панели скриптов терминала.

function main – основная функция, создает отдельный поток для выполнения скрипта. Обычно внутри main создается цикл для непрерывной работы, т.к. без него функция выполнит один раз весь код, который в ней прописан и скрипт остановится.



( Читать дальше )
  • обсудить на форуме:
  • Quik Lua

Qlua: основы, часть 2

Продолжаем погружаться в основы языка. Сегодня рассмотрим:

 

Циклы for … do… end
while do … end
repeat … until
sleep
Как пройти весь массив циклом
Как пройти таблицу по ключам и значением
break
goto
Локальные и глобальные переменные
Функции
Получение даты и времени
Получение данных через getInfoParam


Цикл for … end

for index = start, end, step do 
-- start – начало отсчета, 
-- end – конец отсчета, step - шаг

  -- тело цикла

end



Пример:

for i = 1, 10 do -- пройтись от 1 до 10 c шагом 1 (по умолчанию)<br />
  message("i="..i)  -- вывод i<br />
end

Можно задать шаг:

for i = 1, 10, 2 do -- пройтись с 1 до 10 с шагом 2

  message("i="..i)

end

Цикл while do...end

while (условие) do

  -- тело цикла

end


Выполняет тело цикла, пока соблюдается условие. Если условие на старте не соблюдается, то цикл не запустится.

Пример:

a = 1

while a < 9 do

   a = a + 1

   message(tostring(a))

end

 

Цикл repeat … until



( Читать дальше )

Qlua: основы, часть 1

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

Сегодня рассмотрим:

  • message
  • конкатенация
  • фильтрация по сообщениям в терминале
  • PrintDbgStr
  • комментарии
  • типы данных
  • type
  • операции с числами
  • операции со строками
  • операции с таблицами
  • условные операторы

 

message

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

Особенности message: функция после вывода делает перенос строки, поэтому если необходимо вывести несколько значений в одной строке нужно делать их слияние (об этом ниже).

Для корректного отображения русских букв необходимо выбирать котировку файла Windows-1251 (об этом также в прошлый раз мы уже говорили). Иногда по этой причине некоторые разработчики пишут только на английском весь вывод текста в терминал, чтобы не заморачиваться с кодировкой, в т.ч. при размещении на github и совместной работе с кодом.



( Читать дальше )

....все тэги
UPDONW
Новый дизайн