LUA – это язык программирования. Более 20 лет назад его разработали РІ подразделении Tecgraf Католического университета Р РёРѕ-РґРµ-Жанейро (Бразилия). Ртот язык поддерживает терминал QUIK.
Тысячи трейдеров написали на нём десятки тысяч роботов и дополнений.
Если за терминалом вы проводите несколько часов в день и торгуете активно, то вам есть, что автоматизировать. Готового робота на рынке может и не быть, а отдавать алгоритм программисту на аутсорсе не каждый согласится.
Если вы хотите, чтобы робот открывал и закрывал за вас позиции. Если вы стремитесь освободите свое время и сэкономите нервы, то учитесь писать торговых роботов самостоятельно.
Программа курса
- День первый ДЕНЬ I. Подготовка к изучению. Составление алгоритма Торгового Робота.
начало 3 октября в 19:00 по Москве или 3 октября в 21:00 по вашему времени,продолжительность — 2 ч.
Введение к курсу по программированию. Как правильно изучать язык программирования ЛУА.
Язык программирования ЛУА- Происхождение и название языка ЛУА
- Преимущества языка ЛУА
- Недостатки языка ЛУА
Необходимые программы для изучения и программирования на ЛУА
- Демо версия терминала РљР’РРљ РѕС‚ разработчиков терминала
- Текстовый редактор с подсветкой конструкций языка ЛУА
- Отладчик Декода
- Программа Visual Studio
- Р РѕР±РѕС‚ для автозапуска терминала РљР’РРљ
Текстовый редактор для работы с кодами
- Подсветка конструкций языка ЛУА
- Скрытие блоков и функций кода
- Он-лайн обновление данных в файле
- Другие возможности редактора
Ресурсы дополнительной информации по изучению языка ЛУА
- Форум РїРѕ терминалу РљР’РРљ. Разделе ЛУА
- Справочное руководство РїРѕ терминалу РљР’РРљ (info.chm)
- Справочное руководство QLUA.chm
Загрузка Торговых Роботов РЅР° языке ЛУА РІ терминал РљР’РРљ
- Загрузка Роботов РІ терминал РљР’РРљ
- Запуск Роботов РІ терминале РљР’РРљ
- Остановка Рё удаление Роботов РІ терминале РљР’РРљ
Различие между расширением lua * luac
- Компиляция кодов на языке ЛУА
- Различие в скорости исполнения скриптов
- Закрытый и открытый код скрипта
Рндикатор Параболик SAR
- Построение индикатора Параболик SAR РІ терминале РљР’РРљ
- Особенности данного индикатора и отличия от других индикаторов
- Мозговой штурм и зарождение алгоритма Робота
Построение алгоритма Робота в виде диаграммы (блок-схемы)
- Особенности стиля программиста
- Два основных варианта написания Торговых Роботов
- Что важнее алгоритм или код Робота?
- Как сохранить прибыльный алгоритм от кражи
- Составление алгоритма в виде диаграммы
- Подведение итогов первой части Курса
- День второй ДЕНЬ II. Построение Рё запуск шаблона РўРѕСЂРіРѕРІРѕРіРѕ Робота для терминала РљР’РРљ.
начало 5 октября в 19:00 по Москве или 5 октября в 21:00 по вашему времени,продолжительность — 2 ч.
Функции обратного вызова- Возможность обработки событий РІ терминале РљР’РРљ
- Функция обратного вызова OnInit() . Необходимость ее использования
- Функция OnStop(). Завершение кода при нажатии кнопки Остановить
- Функция OnClose(). Штатное Рё аварийное закрытие терминала РљР’РРљ
- Функция отдельного дополнительного потока терминала main()
Сервисные функции
- IsConnected — подключение Рє серверу терминала РљР’РРљ
- getScriptPath — путь, РїРѕ которому находится запускаемый СЃРєСЂРёРїС‚
- getWorkingFolder — путь, РїРѕ которому находится файл info.exe
- getInfoParam — параметры для информационного РѕРєРЅР°
- message — отображение сообщений РІ терминале РљР’РРљ
- sleep — приостановка выполнения РєРѕРґР° скрипта
- PrintDbgStr – функция для вывода отладочной информации
Потоки Рё схема работы скриптов РЅР° языке ЛУА РІ терминале РљР’РРљ
- Понятие потока
- Блок – схема работы Торговых Роботов РЅР° языке ЛУА РІ РљР’РРљРµ
- Организация основного и дополнительного потоков
Комментарии к коду
- Строчные комментарии в языке ЛУА
- Блочные комментарии в языке ЛУА
Структура программы Торгового Робота
- Организация функции main() в виде бесконечного цикла
- Добавление в код Робота основных функций обработки событий
- Подключение отдельных файлов с различными функциями. Команда dofile()
Типы переменных в языке ЛУА
- nil неопределенный тип
- Логическая переменная boolean
- Числовой тип number
- Строковый тип string
- Тип функция function
- Массивы и таблицы в языке ЛУА
- Отличие от языка qPile
Локальные и глобальные переменные. Приведение типов в языке ЛУА
- Ключевое слово local
- Приведение типов tostring() * tonumber()
Создание и вывод в терминал таблицы Робота
- Рнициализация Рё создание таблицы
- Удаление таблицы с Роботом и остановка Робота DestroyTable()
- Создание колонок, добавление строк и запись в ячейки
Запуск прототипа Торгового Робота
- Получение и вывод серверного времени с биржи
- Вывод сообщений РІ терминал РљР’РРљ
- Контроль работы Торгового Робота
- День третий ДЕНЬ III. Основные конструкции языка ЛУА
начало 10 октября в 19:00 по Москве или 10 октября в 21:00 по вашему времени,продолжительность — 2 ч.
Арифметические операторы в языкеЛУА Операторы отношения в языке ЛУАЛогические операторы в языке ЛУА
Математические функции в языке ЛУА
- Стандартные математические операции
- Специальные математические функции языка
- Подсказки текстового редактора
Работа со строками в языке ЛУА
- Основные функции для работы со строками в языке ЛУА
- Различные методы записи при работе со строками
- Определение длины строки в языке ЛУА. Функция len #
- Функция для форматирования строк format
- Функция для обрезки строк sub
Отладчик DECODA
- Самый крутой отладчик для языка ЛУА
- Правила работы с отладчиком Декода
- Возможности отладчика и просмотр переменных и массивов
- Сложности при работа с Декода
Отладка через VISUAL STUDIO
- Отладка кода при помощи команды PrintDbgStr()
- Просмотр переменных при помощи редактора Visual Studio
Дата и время в языке ЛУА
- Формат полей в дате в языке ЛУА
- Функция для работы с датами в ЛУА os.clock() * os.time() * os.date()
- Просмотр даты в отладчике Декода
Конструкция if в языке ЛУА
Конструкции while-do * repeat-until
Три типа конструкции for
- Стандартная конструкция for
- Конструкция for с циклом по индексам массива (ipairs)
- Конструкция for с циклом по ключам массива (pairs)
Работа с файлами
- Важность вывода информации в лог-файлы
- Функции io.open * seek * write * flush * close
Дополнительные функции при работе с таблицей Робота
- Функция контроля открытия таблицы IsWindowClosed()
- Подсветка строк и ячеек таблицы SetColor()
- Мигающие строки в таблице с Роботом Highlight()
Обработка событий при взаимодействии с таблицей Робота
- Функция обратного вызова для обработки событий в таблице Робота
- Различные типы взаимодействия
- Функция SetTableNotificationCallback()
- Настройка отклика нашего Робота на нажатие ячеек в таблице
Описание алгоритма Робота Параболик
- Список необходимых функций, которые нужно создать
- Подведение итогов третьей части курса
- День четвертый ДЕНЬ IV. Отправка транзакций РІ терминале РљР’РРљ
начало 11 октября в 19:00 по Москве или 11 октября в 21:00 по вашему времени,продолжительность — 2 ч.
Получение данных из таблицы Текущие торги- Список основных параметров для торговых инструментов
- Функция getParamEx()
- Функция getParamEx2()
- Смотрим справочник по языку qPile
- Нахождение статуса торговой сессии по нужному инструменту
Принципы работы СЃ таблицами РІ РљР’РРљРµ
- Список основных таблиц, к которым можно обращаться
- Функция getNumberOf()
- Функция getItem()
Нахождение позиции по инструменту
- Таблица РљРІРёРєР° «futures_client_holding»
- Применение функций getNumberOf() * getItem()
- Находжение позиции инструмента на срочном рынке ФОРТС
Работа с графиками в ЛУА при помощи идентификаторов
- Получение информации с ценовых графиков
- Получение графической информации от индикаторов
- Функции для работы с графиками getLinesCount ()
- Описание функции количества свечей на графике getNumCandles()
- Доступ к свечкам по индексу getCandlesByIndex()
Получение сигнала с графика для Робота Параболик SAR
- Как прописать уникальные идентификаторы для графиков и индикаторов
- Схема получения сигнала для индикатора Параболик SAR
- Создание функции для получения сигнала на открытие позиции с графика
- Проверка корректности сигнала с графика
Вспомогательные функции
- Функция определения знака числа
- Проблемы РїСЂРё получении дробных числовых значений РІ терминале РљР’РРљ
- Функция округления цены инструмента до шага инструмента
Отправка транзакций РІ терминале РљР’РРљ
- Общие сведения об отправке транзакций
- Функция sendTransaction()
- Необходимость проверки результатов транзакции
Пишем функцию CorrectPos()
- Требования, предъявляемые к нашей функции
- Нахождение необходимых полей для отправки транзакций
- Заполнение необходимых полей таблицы для отправки транзакции
- Вывод полной информации в лог-файл
- Проверка корректности исполнения транзакции
- Аварийная остановка Робота в случае сбоя
- Тестирование корректной работы нашей функции
- Сложности и опасности при работе с Роботами
- День пятый ДЕНЬ V. Окончательная отладка Робота.
начало 12 октября в 19:00 по Москве или 12 октября в 21:00 по вашему времени,продолжительность — 2 ч.
Функция выставление стоп-профита- Список необходимых параметров для выставления стоп-профита
- Заполнение всех полей для таблицы транзакции
- Вывод всей информации в лог-файл
- Комментарии для терминала РљР’РРљ
Функция удаления стоп-профита по номеру заявки
- Список необходимых параметров для удаления стоп-профита
- Заполнение всех полей для таблицы транзакции
- Вывод всей информации в лог-файл
Работа с флагами
- Понятие двоичной системы счисления
- Побитовые операции с двоичными числами. Операция and
- Кодировка информации при помощи флагов
- Функция для работы с флагами bit.band()
Функция удаления всех стоп-профитов
- Список необходимых параметров для удаления стоп-профита
- Заполнение всех полей для таблицы транзакции
- Рспользование функций для работы СЃ флагами
- Вывод всей информации в лог-файл
Отбор строк таблиц по заданным параметрам
- Оптимизация работы СЃ таблицами РІ терминале РљР’РРљ
- Функция SearchItems()
Определение Правильной цены входа в позицию
- Проблема получения данных из таблицы сделок
- Рспользование функции SearchItems()
- Как правильно рассчитать цену входа
- Определение цены входа для внутридневной торговли
Продолжаем писать код Робота
- Три типа торговли Робота ЛОНГ/ШОРТ/РЕВЕРС
- Коррекция позиции по сигналу с графика
- Вывод данных в таблицу Робота
- Стороннее вмешательство в алгоритм Робота
Функция контроля профита
- Алгоритм работы функции контроля профитов
- Удаление лишних стоп-заявок
- Поиск правильной стоп-заявки
- Выставление при необходимости новой Стоп-заявки
Запуск готовой программы
- Рсправление ошибок Рё опечаток
- Незаменимая помощь программы Декода
- Проверка корректности работы алгоритма
Что можно улучшить в работе Робота
- Дополнительные функции защиты от сбоев
- Особенности конкретного брокера
- Возможность ввода параметров он-лайн
- Комбинация языков РЎР-РЁРђР Рџ * ЛУА * РЎР++
Демонстрация робота с возможностью изменения параметров он-лайн
- Запуск готового Торгового Робота с конфигуратором
- Возможность ввода параметров он-лайн
- Дополнительные возможности Робота
- Удобство при использовании конфигуратора
- Возможность контролировать возможные значения параметров
Возможности языка ЛУА, которые не вошли в наш код робота
- Работа с другими типами таблиц
- Таблица обезличенных сделок
- Работа с биржевыми стаканами. Функция OnQuote()
- Возможность создания собственных индикаторов РІ РљР’РРљРµ
- Работа с метками
Подведение итогов курса
- Список задач, поставленных в рамках данного курса
- Подведение итогов курса