👨🎓 СОЗДАДИМ ДЛЯ ПРИМЕРА ИНДИКАТОР ONE LINE ДЛЯ QUIK
Ранее мы рассматривали как создать свой первый скрипт на языке 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/
Алготрейдинг - Школа по созданию торговых роботов
:Дмитрий Высоцкий
👨🎓 СОЗДАДИМ ДЛЯ ПРИМЕРА ИНДИКАТОР ONE LINE ДЛЯ QUIK
Ранее мы рассматривали как создать свой первый скрипт на языке 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/