Ранее мы рассматривали как создать свой первый скрипт на языке Lua для терминала QUIK, как его запустить. Сегодня рассмотрим тему создания простого индикатора, который также напишем на языке Lua и запустим в QUIK.
📊 Индикатор мы создаем самый простой, цель для начала в общих чертах понять принцип как все делается, формируется и работает. Индикатор будет отображать на графике просто горизонтальный уровень, который мы будем задавать. Понятное дело, что горизонтальную линию и так можно нарисовать с помощью инструментов рисования, но цель на простом примере понять суть.
💻 Чтобы создать индикатор в терминале QUIK, нам нужно получить данные, на основе, которых строится индикатор. Источником данных служит график инструмента, с которого мы можем получить все нужные цены свечей (High, Low, Open, Close), время свечи, проторгованный объем. Вся эта информация попадают в массив данных источника индикатора. Далее из этого массива с помощью нужной функции можем вернуть одно или несколько чисел, которые можно отобразить на графике в виде линии или гистограммы.
✅ НАЧАЛЬНЫЙ КОД ИНДИКАТОРА
Чтобы в терминале Quik наш создаваемый индикатор был доступен для выбора, надо минимальный набор данных в коде.
📌
Settings=
{
Name="*OneLine",
}
function Init()
return 1
end
function OnCalculate(index)
return nil
end
📌
📚 Поместим текущую версию индикатора в папку LuaIndicators, которая создается в самой папке QUIK
Как добавить новый индикатор в QUIK, мы рассматривали тут: https://youtu.be/8bg-b58x1XM 📈 Далее на графике Правой кнопкой мышки — Добавить график (Индикатор)
🖥 Когда мы открываем данное окно добавления индикатора, то QUIK начинает проверять содержимое папки LuaIndicators и выводить все доступные в ней скрипты индикаторов, отвечающих следующим критериям:
✏️ — В скрипте присутствует глобальная таблица Settings;
✏️ — Присутствует функция Init();
✏️ — Присутствует функция OnCalculate().
❗️ При этом в таблице Settings с помощью переменной Name задается имя индикатора, которое и отображается в окне добавления нового индикатора.
⚠️ Если в скрипте индикатора были допущены синтаксические ошибки в коде или отсутствуют выше перечисленные пункты, то индикатор будет отсутствовать в окне доступные для добавления.
♻️ Если мы нажмем в QUIK редактировать индикатор, то увидим окно настроек индикатора «OneLine».
💬 Во вкладке «Свойства» в строке Name видим заданное нами в индикаторе название «OneLine». Ниже присутствуют параметры одной линии с именем Линия 1. Все потому, что функция Init выдала значение 1, что значит, индикатор состоит из одной линии.
Настройки цвета и тип линии (значения полей Color, Name, Type, Width)указываются Квиком по умолчанию, т.к. в коде индикатора не были отдельно указаны.
💾 Мы в коде сделали так, что функция OnCalculate будет на данном этапе возвращать nil, т.е. не определили источник данных, поэтому на графике ничего не отображается.
✅ ДОБАВИМ РАСШИРЕННЫЕ СВОЙСТВА ИНДИКАТОРА
📌
Settings=
{
Name="*OneLine",
period = 1000.0,
line =
{
{
Name="OLine",
Color=RGB(150,150,150),
Type=TYPE_LINE,
Width=2
}
}
}
function Init()
return 1
end
function OnCalculate(index)
return nil
end
📌
💡 В настройки (Settings) добавили дополнительные поля: period и line.
Параметр line является массивом таблиц с индексным доступом, т.е. все её элементы доступны через численные индексы, например: line[1], line[2] и т.д.
❗️ Индикатор, что мы создаем возвращает только одну линию, поэтому и свойства заданы для одной – линии с индексом 1 (для добавления дополнительных линий, надо будет указывать новые Name, period, line).
💬 Загрузим в QUIK обновленную версию индикатора и посмотрим как отображаются в нем настройки:
📚 Все, что не относится к описанию параметров линий, отображается в разделе Пользовательские настройки. Поле Name имеет строковый тип, поле period – числовой, мы ему задали значение 1000 по умолчанию.
♻️ Как видим, теперь у нас задан цвет (RGB(150, 150, 150)) отличный от того, что был по умолчанию, тоже мы могли сделать и с типом построении линии и с толщиной.
🖥 Но пока наша линия на графике так и не отображается, давайте это исправим и дополним код индикатора.
✅ ОТОБРАЗИТЬ ИНДИКАТОР НА ГРАФИКЕ
Как мы писали выше, чтобы индикатор начал отображаться, нужно определить источник и изменить функцию OnCalculate.
📌
Settings=
{
Name="*OneLine",
period = 1000.0,
line =
{
{
Name="OLine",
Color=RGB(150,150,150),
Type=TYPE_LINE,
Width=2
}
}
}
function Init()
return 1
end
function OnCalculate(index)
return 106900
end
📌
📢 return 106900 — это значит, что индикатор будет выдавать данное значение и по этой цене на графике будет построена линии, смотрим:
OneLine-линия-на-графике
💾 Пока мы сделали так, что значение, по которому строится линия индикатора на графике задается только в самом коде индикатора, что не удобно, надо это исправить! Для этого в настройки добавим поле PLine, а также доработаем функцию OnCalculate, чтобы она выдавала число из поля PLine.
📌
Settings=
{
Name="*OneLine",
PLine = 0.0,
period = 1000.0,
line =
{
{
Name="OLine",
Color=RGB(150,150,150),
Type=TYPE_LINE,
Width=2
}
}
}
function Init()
return 1
end
function OnCalculate(index)
return tonumber(Settings.PLine)
end
📌
💻 Давайте теперь зайдем в свойства последней созданной версии индикатора в терминале QUIK. Видим, что теперь появилась настройка в поле PLine задавать цену, по которой будет строиться линия индикатора.
OneLine-свойства-и-график-индикатора
📈 На график можно добавить сколько угодно разных индикаторов, в том числе и созданного нами индикатор Линия
👉 Подробнее читайте тут: https://daytradingschool.ru/sozdadim-dlya-primera-indikator-one-line-dlya-quik/
Присоединяйтесь — мы покажем вам много интересного
Присоединяйтесь к ОК, чтобы подписаться на группу и комментировать публикации.
Нет комментариев