Всем привет!
Ранее я почти не освещал тему написание собственных индикаторов на QLUA. Но, так как это достаточно интересная тема, я решил написать на эту тему несколько статей. Написание собственных индикаторов позволяет визуализировать работу вашего скрипта, показывая определенные точки, уровни и пр. Например, вот результат отображения нескольких моих индикаторов:
Я хотел бы отметить, что в справочной информации эта тема достаточно хорошо изложена. В частности есть несколько интересных файлов в архиве со справкой: https://arqatech.com/upload/iblock/be0/quik_lua.zip
Но, давайте по порядку.
Первое, на что я хотел бы обратить внимание, это то, что к файлам, реализующие индикаторы, гораздо больше требований нежели к простым LUA-скриптам. Если LUA-скрипт может лежать где угодно: на рабочем столе, в облаке и пр., то для скриптов-индикаторов есть конкретное место их расположения – это папка LuaIndicators, которая должна быть в месте расположения программы QUIK. Также, к файлам-индикаторам более строгие требования к правильности написания кода. Ряд ошибок, которые нарушают правила написания кода (незакрытая скобка, неверное написание команды и пр.) приводит к тому, что вы не сможете запустить данный скрипт. Соответственно, подсказки о том, где находится эта ошибка вы не получите. И есть определенные требования к структуре файла. И давайте подробнее поговорим об этом.
Вот код простого индикатора – он просто рисует прямую линию на уровне цены 2050.
Settings=
{
Name="Line",
line = {
{
Color = RGB(255,0,0),
Type = TYPE_LINE,
Width = 1
}
}
}
function Init()
return 1
end
function OnCalculate(index)
return 2050
end
В справке по QLUA указаны следующие требования к файлу, отражающему индикатор:
- определена функция Init,
- определена функция OnCalculate,
- определена таблица Lua с именем Settings, в которой есть поле «Name»;
- lua файл скомпилирован под выбранную в настройках версию Lua-машины.
Давайте разберем данные условия. Но, начнем с таблицы Settings. В нашем наипростейшем примере она выглядит так:
Settings=
{
Name="Line",
line = {
{
Color = RGB(255,0,0),
Type = TYPE_LINE,
Width = 1
}
}
}
В поле Name указано имя скрипта. Это обязательное условие. Дальше мы увидим где это имя появляется.
В поле line содержатся данные о линиях, которые будут отрисовываться в качестве индикатора. В нашем примере это одна линия. У нее указан цвет, ширина в один пиксель и тип.
Типы линий могут быть следующие:
- TYPE_LINE --линии
- TYPE_HISTOGRAM --гистограммы
- TYPE_POINT --точки
- TYPE_DASHDOT --точка-тире
- TYPE_DASH --тире
- TYPE_TRIANGLE_UP --треугольник вверх
- TYPE_TRIANGLE_DOWN --треугольник вниз
Если мы в индикаторе будем отрисовывать две линии, то в поле line должно быть написано примерно следующее:
line = {
{
Color = RGB(255,0,0),
Type = TYPE_LINE,
Width = 1
},
{
Color = RGB(0,255,0),
Type = TYPE_LINE,
Width = 1
}
}
В функции Init() в позиции return нужно указать количество линий индикатора. В нашем случае это одна линия, но их может быть намного больше.
В функции OnCalculate() прописываются вычисления, которые производятся при рассмотрении каждой свечи. Командой return возвращается число, которое будет отражено на графике. Тут обратите внимание, что все, что указано в функции OnCalculate() будет выполняться при обработки каждой свечи. Для отладки своего скрипта вы можете использовать команду message(), что бы отслеживать какое значение лежит в какой переменной. Но, если вы просто без условий поставите message() в функции OnCalculate(), то QUIK может и подзависнуть, так как ему нужно будет выдать столько сообщений, сколько есть на графике.
Давайте уже построим данный индикатор. Для начала скрипт нужно сохранить в папку «LuaIndicators»
Далее откроем какой-нибудь график цены. Например, цены акций Башнефть.
Нажимаем правую клавишу и выбираем пункт «Добавить график (индикатор)..» В открывшемся окне находит индикатор с таким же именем, какое мы указывали в поле «name» нашего скрипта.
И если мы хотим видеть индикатор, нарисованный в одной области с графиком цены, то нужно обязательно убрать галочку «Поместить график в новую область».
В результате мы увидим такую линию.
Далее через правую кнопку и пункт меню «Редактировать..» можно перейти в настройки отображения, в том числе нарисованного индикатора.
В открывшемся меню в левой части нужно выбрать в области1 наш индикатор – Line. И можно менять его цвет, толщину линии, тип отображения.
Ну, что же, пожалуй, на сегодня это все. Сегодня мы рассмотрели построение одного бесполезного индикатора, но узнали некоторые принципы построения этих индикаторов. В следующем выпуске построим еще один бесполезный индикатор 😊, но узнаем ещё некоторые моменты, в частности, как получать доступ к цене базового актива и как ими оперировать.
Всем счастливо, всем пока.🖐
⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇
📃 Краткое содержание данного канала.
➖➖➖➖➖➖➖➖➖➖➖➖➖
Landingcentr.ru - разработка сайтов для малого и среднего бизнеса.
⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆