Найти в Дзене
Движение - жизнь

Ваш первый индикатор для QUIK, написанный на lua

Здравствуй, уважаемый читатель!
Ранее я поверхностно затронул тему инвестирования и трейдинга в своей статье «Инвестирование и трейдинг». Начнем с того, что главный индикатор - это цена, а все остальные индикаторы - это ее производные! И как следствие немного запаздывают. Их единственный плюс - это сглаживание рыночного шума. Когда вы станете более опытным трейдером, то индикаторы вам будут не

Здравствуй, уважаемый читатель!

Ранее я поверхностно затронул тему инвестирования и трейдинга в своей статье «Инвестирование и трейдинг». Начнем с того, что главный индикатор - это цена, а все остальные индикаторы - это ее производные! И как следствие немного запаздывают. Их единственный плюс - это сглаживание рыночного шума. Когда вы станете более опытным трейдером, то индикаторы вам будут не нужны. Возможно, вы углубитесь в анализ объемов или какие-то паттерны.

Сегодня я хочу рассказать как создать свой первый индикатор для торговой системы QUIK. Для этого нам понадобится текстовый редактор Notepad++. Данный редактор поддерживает подцветку синтаксиса. Чтобы ее включить заходим в меню «Синтаксисы - L - Lua».

-2

Создадим папку «LuaIndicators» в папке с терминалом.

-3

Теперь мы можем приступить к написанию первого индикатора на языке LUA (кроме него QUIK поддерживает язык QPILE). Открываем Notepad++ и нажимаем «Файл - Сохранить как». Сохраните файл в созданной папке «LuaIndicators» с расширением «lua» (это важно, иначе QUIK не увидит ваш созданный индикатор).

Я создал файл «My first indicator.lua».

-4

Обязательные «блоки» кода индикатора:

  1. Settings (в этом разделе указывают имя индикатора, переменные, настройки линий)
  2. Функция Init() (функция инициализации индикатора)
  3. Функция OnCalculate() (основная функция, в которой происходит расчет значений будущего индикатора)
  4. Можно еще

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

Комментарии в Lua начинаются сразу после двух дефисов и пишутся зеленым цветом (в Notepad++ с включенной подцветкой синтаксиса). Это однострочный комментарий (есть еще многострочные комментарии, но я ими не пользуюсь).

В следующем блоке «Settings» мы указываем название индикатора «Name» и две линии в «line». Обращаю ваше внимание на то, что все содержимое блока вкладывается в фигурные скобки { ... } (на картинке две синие стрелки справа налево), также как и настройка блока линий «line». Каждая линия берется в отдельный блок { ... }, а потом объединяется в группу следующим образом {{...},{...}} (синие стрелки слева направо). Также, хочу заметить, что между блоками двух линий стоит запятая. Линий может быть сколько угодно много.

-5

Есть еще поля, которые обычно задаются в блоке «Settings», но в данной статье я рассматривать их не буду.

Разберем блок линий (line {...}), который вложен в блок Settings {...}. У нас две линии, в каждом блоке по 4 поля:

  1. «Name» - Имя линии. Его лучше писать латинскими буквами, а то в QUIK, скорей всего, получите непонятные иероглифы вместо текста при наведении на нее.
  2. «Color» - Цвет линии. RGB - Red, Green, Blue (Красный, Зеленый, Синий). Насыщенность цвета меняется от 0 до 255. Цвет меняется как при смешивании цветов в палитре. Первая линия у меня будет зеленая, а вторая красная, так как два других цвета в каждой линии с нулевой насыщенностью.
  3. «Type» - Тип отображения. У меня стоит линия. Есть еще несколько вариантов отображения (но мне они ни разу не пригодились).
  4. «Width» - Толщина линии. Тут все просто)

Обратите внимание, что каждый отдельный блок отодвигается от левой стороны на одно нажатие клавиши Tab. Так удобно читать код.

Следующий блок - функция инициализации вашего индикатора. Слово «return» с английского «возврат». Другими словами наш индикатор «возвращает» две линии. Если было бы три линии, то там была бы цифра 3.

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

-6

Смотрим дальше. Функция OnCalculate(index). Функции могут как получать входящие данные, которые будут использовать внутри в вычислениях, так выдавать на выходе (после вычислений) какой-то результат. Каждая функция заканчивается словом «end» (конец). Во входящих данных - в круглых скобках, мы получаем номер (index - индекс) текущей свечи на графике. Мы будем использовать в нашем примере цену закрытия свечи (есть и другие варианты O(),H(),L(),C(),M(),T(),W ()- Open, High, Low, Close, Median, Tipical, Weight).

Для удобства я взял две переменные с соответствующими названиями.

Теперь сама магия. В первую переменную «line1» мы помещаем сумму текущей цены закрытия свечи и цифры 100. Во вторую переменную «line2» мы помещаем разницу между ценой закрытия свечи и цифрой 100. Потом следует слово «return» (выше писал - «возврат»). В нашем индикаторе две линии, поэтому мы с вами и считали два значения в двух переменных. Функция OnСalculate() будет возвращать значения двух наших линий - зеленой и красной (цвета мы указывали в блоке «Settings», во вложенном блоке «line»).

-7

Чтобы добавить наш индикатор, нажимаем на графике на правую кнопку мыши «Добавить график (индикатор)». И находим его в списке доступных индикаторов - название указывали в поле «Name» блока «Settings».

-8

Не забудьте снять галочку)

Скачать код получившегося индикатор My first indicator.lua.