OneLine-индикатор-Линия
Ранее мы рассматривали как создать свой первый скрипт на языке 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

Далее на графике Правой кнопкой мышки — Добавить график (Индикатор)
OneLine-Добавление-на-график

Когда мы открываем данное окно добавления индикатора, то QUIK начинает проверять содержимое папки LuaIndicators и выводить все доступные в ней скрипты индикаторов, отвечающих следующим критериям:

— В скрипте присутствует глобальная таблица Settings;
— Присутствует функция Init();
— Присутствует функция OnCalculate().

При этом в таблице Settings с помощью переменной Name задается имя индикатора, которое и отображается в окне добавления нового индикатора.

Если в скрипте индикатора были допущены синтаксические ошибки в коде или отсутствуют выше перечисленные пункты, то индикатор будет отсутствовать в окне доступные для добавления.

Если мы нажмем в QUIK редактировать индикатор, то увидим окно настроек индикатора «OneLine».
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 обновленную версию индикатора и посмотрим как отображаются в нем настройки:
OneLine-свойства-индикатора-V2

Все, что не относится к описанию параметров линий, отображается в разделе Пользовательские настройки. Поле 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-свойства-и-график-индикатора

На график можно добавить сколько угодно разных индикаторов, в том числе и созданного нами индикатор Линия

Скачать архив с индикатором OneLine_DTS.lua на LUA
 
 
 


Вы уже сейчас можете начать изучать Видео курс- роботы в TSLab и научиться самому делать любых роботов!
 
Можно записаться на следующий поток ОнЛайн курса «Создание роботов в TSLab без программирования», информацию по которому можно посмотреть тут->
 
Также можете научиться программировать роботов на нашем Видео курсе «Роботы для QUIK на языке Lua»
 
Если же вам не хочется тратить время на обучение, то вы просто можете выбрать уже готовые роботы из тех, что представлены у нас ДЛЯ TSLab, ДЛЯ QUIK, ДЛЯ MT5, ДЛЯ КРИПТОВАЛЮТЫ!
 
Также можете посмотреть совершенно бесплатные наработки для МТ4, Квика, МТ5. Данный раздел также постоянно пополняется.
 
Не откладывайте свой шанс заработать на бирже уже сегодня!