В данном примере торгового робота рассмотрим создание собственных индикаторов технического анализа и вывод их на экран в окно графика.

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

Используя подход, описанный в файле «Создание индикаторов технического анализа.pdf», не получится получить доступ к двум инструментам и построить индикатор исходя из цен с двух инструментов. Ниже мы рассмотрим пример построения индикатора по двум графикам цены. Условие для скрипта торгового робота будет следующим. Нужно создать индикатор, который отображает разницу между ценой акции и ценой фьючерса, например для арбитражной торговли. В качестве инструментов возьмем акции Сбербанка и ближайший фьючерс на них SRH8.

Начнем. Создание индикаторов имеет ряд своих особенностей. Первое – это местоположение файла со скриптом торгового робота. Скрипт в обязательном порядке должен быть размещен в папке «LuaIndicators», которая в свою очередь находится в папке c программой QUIK. У меня на компьютере путь к папке выглядит следующим образом: C:\\QUIK_VTB24\\LuaIndicators. Если у Вас в папке программы QUIK нет папки «LuaIndicators», то ее необходимо сознать. Терминал QUIK считывает папку «LuaIndicators» и если находит скрипт на языке LUA, отвечающий минимально необходимым требованиям (о требованиях поговорим чуть позже), то сразу добавляет индикатор в список доступных индикаторов, список открывается, когда мы открываем окно «Добавление графика». Окно «Добавление графика» открывается из контекстного меню на графике пункт «Добавить график (индикатор)».

Еще один нюанс, если в коде индикатора допущена синтаксическая ошибка, то данный индикатор не будет отображаться в окне «Добавление графика».

Создадим новый файл для скрипта торгового робота с именем «023 График арбитраж.lua» и сохраним в папку LuaIndicators.

Перейдем к коду индикатора. Для индикатора существует, минимальный обязательный код, без которого терминал QUIK не сможет его распознать и работать с ним.

Минимальный код, на языке Lua выглядит следующим образом.

Разберем этот код.

Settings – это таблица, которая содержит настройки для графика. Настройки графика мы можем изменять в окне «Редактирование настроек графика». Здесь мы можем создать поля для различных настроек.

В строке кода 3 создана строка таблицы Settings с ключом Name в которую записано имя индикатора.

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

Функция OnCalculate(index), является основной функцией, она принимает на вход индекс свечи из источника данных и возвращает непосредственно значение индикатора для каждой свечки на графике, в ней же мы будем производить основной расчет значений для индикатора, хотя мы можем использовать и свои собственные функции для расчета значений индикатора.

Приступим к созданию индикатора. Первоначально разберемся с настройками. Наш индикатор уже имеет имя «Arbitrage_Stoсk_Fut». Далее нам понадобятся поля для ввода идентификаторов графиков, добавим их и сразу пропишем в них идентификаторы.

Строка кода 4. Создается строка таблицы Settings с ключом ID_Stock содержащая идентификатор графика цены акций.
Строка кода 5. Создается строка таблицы Settings с ключом ID_Fut содержащая идентификатор графика цены фьючерса.

Отлично, но это еще не все настройки для индикатора. Учитывая то, что мы будем использовать два разных графика цен для расчета индикатора, а конкретнее вычитать из цены одного цену другого, то возникает следующая проблема. Цены инструментов имеют разную разрядность, например акции Сбербанка торгуются по 230 руб., а фьючерсы по 23000 пунктов, если мы вычтем из цены фьючерса цену акций, то никакого вразумительного результата не получим, необходимо уровнять разрядность цен, для этого будем использовать множитель. Добавим в таблицу Settings еще одну строку с множителем и присвоим ему значение 100.

Это ознакомительная часть курса, что бы просмотреть полный курс, пожалуйста оплатите подписку, подписка действует 2 года. Помимо доступа к полному тексту курса, предоставляются все коды скриптов и вспомогательные файлы. Первые три раздела предоставляются бесплатно в полном объеме. Всем кто ранее покупал коды скриптов доступ будет предоставлен бесплатно, пожалуйста пришлите запрос с Email на который Вам были направлены коды.