Найти тему
Код торгового робота

Написание собственных индикаторов на QLUA для QUIK

Всем привет!

Ранее я почти не освещал тему написание собственных индикаторов на QLUA. Но, так как это достаточно интересная тема, я решил написать на эту тему несколько статей. Написание собственных индикаторов позволяет визуализировать работу вашего скрипта, показывая определенные точки, уровни и пр. Например, вот результат отображения нескольких моих индикаторов:

-2

Я хотел бы отметить, что в справочной информации эта тема достаточно хорошо изложена. В частности есть несколько интересных файлов в архиве со справкой: https://arqatech.com/upload/iblock/be0/quik_lua.zip

Но, давайте по порядку.

Первое, на что я хотел бы обратить внимание, это то, что к файлам, реализующие индикаторы, гораздо больше требований нежели к простым LUA-скриптам. Если LUA-скрипт может лежать где угодно: на рабочем столе, в облаке и пр., то для скриптов-индикаторов есть конкретное место их расположения – это папка LuaIndicators, которая должна быть в месте расположения программы QUIK. Также, к файлам-индикаторам более строгие требования к правильности написания кода. Ряд ошибок, которые нарушают правила написания кода (незакрытая скобка, неверное написание команды и пр.) приводит к тому, что вы не сможете запустить данный скрипт. Соответственно, подсказки о том, где находится эта ошибка вы не получите. И есть определенные требования к структуре файла. И давайте подробнее поговорим об этом.

Вот код простого индикатора – он просто рисует прямую линию на уровне цены 2050.

Settings=
{
Name="Line",
line = {
{
Color = RGB(255,0,0),
Type = TYPE_LINE,
Width = 1
}
}
}
function Init()
return 1
end
function OnCalculate(index)
return 2050
end

В справке по QLUA указаны следующие требования к файлу, отражающему индикатор:

  • определена функция Init,
  • определена функция OnCalculate,
  • определена таблица Lua с именем Settings, в которой есть поле «Name»;
  • lua файл скомпилирован под выбранную в настройках версию Lua-машины.

Давайте разберем данные условия. Но, начнем с таблицы Settings. В нашем наипростейшем примере она выглядит так:

Settings=
{
Name="Line",
line = {
{
Color = RGB(255,0,0),
Type = TYPE_LINE,
Width = 1
}
}
}

В поле Name указано имя скрипта. Это обязательное условие. Дальше мы увидим где это имя появляется.

В поле line содержатся данные о линиях, которые будут отрисовываться в качестве индикатора. В нашем примере это одна линия. У нее указан цвет, ширина в один пиксель и тип.

Типы линий могут быть следующие:

  • TYPE_LINE --линии
  • TYPE_HISTOGRAM --гистограммы
  • TYPE_POINT --точки
  • TYPE_DASHDOT --точка-тире
  • TYPE_DASH --тире
  • TYPE_TRIANGLE_UP --треугольник вверх
  • TYPE_TRIANGLE_DOWN --треугольник вниз

Если мы в индикаторе будем отрисовывать две линии, то в поле line должно быть написано примерно следующее:

line = {
{
Color = RGB(255,0,0),
Type = TYPE_LINE,
Width = 1
},
{
Color = RGB(0,255,0),
Type = TYPE_LINE,
Width = 1
}
}

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

В функции OnCalculate() прописываются вычисления, которые производятся при рассмотрении каждой свечи. Командой return возвращается число, которое будет отражено на графике. Тут обратите внимание, что все, что указано в функции OnCalculate() будет выполняться при обработки каждой свечи. Для отладки своего скрипта вы можете использовать команду message(), что бы отслеживать какое значение лежит в какой переменной. Но, если вы просто без условий поставите message() в функции OnCalculate(), то QUIK может и подзависнуть, так как ему нужно будет выдать столько сообщений, сколько есть на графике.

Давайте уже построим данный индикатор. Для начала скрипт нужно сохранить в папку «LuaIndicators»

Далее откроем какой-нибудь график цены. Например, цены акций Башнефть.

-3

Нажимаем правую клавишу и выбираем пункт «Добавить график (индикатор)..» В открывшемся окне находит индикатор с таким же именем, какое мы указывали в поле «name» нашего скрипта.

-4

И если мы хотим видеть индикатор, нарисованный в одной области с графиком цены, то нужно обязательно убрать галочку «Поместить график в новую область».

В результате мы увидим такую линию.

-5

Далее через правую кнопку и пункт меню «Редактировать..» можно перейти в настройки отображения, в том числе нарисованного индикатора.

-6

В открывшемся меню в левой части нужно выбрать в области1 наш индикатор – Line. И можно менять его цвет, толщину линии, тип отображения.

-7

Ну, что же, пожалуй, на сегодня это все. Сегодня мы рассмотрели построение одного бесполезного индикатора, но узнали некоторые принципы построения этих индикаторов. В следующем выпуске построим еще один бесполезный индикатор 😊, но узнаем ещё некоторые моменты, в частности, как получать доступ к цене базового актива и как ими оперировать.

Всем счастливо, всем пока.🖐

⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇

📃 Краткое содержание данного канала.

➖➖➖➖➖➖➖➖➖➖➖➖➖

Landingcentr.ru - разработка сайтов для малого и среднего бизнеса.

⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆