Избранное трейдера Anest
Продолжаем изучение qlua, cегодня:
Интегрируем таблицы в структуру скрипта qlua.
Удаляем таблицы через DestroyTable.
Останавливаем скрипт через IsWindowClosed.
Обработка события закрытия таблицы через коллбэк.
Работа с цветом SetColor, Highlight, SetSelectedRow.
Пишем простого советника.
В прошлый раз мы рассмотрели как с помощью qlua создать таблицу в торговом терминале и заполнить её информацией из таблицы текущих торгов. Но это была статичная табличка, чтобы её «оживить» нужно разместить операции с нашей таблицей внутри структуры скрипта в функции main.
Саму таблицу мы можем создать до цикла while и внести неизменяемые данные (в нашем случае тикер и наименование бумаги), а уже заполнить цифрами и обновлять внутри цикла. Пока будет работать скрипт таблица будет обновляться.
function OnInit()
tikers = {"GAZP", "SBER", "VKCO"}
progname = "mytable :"
timeout = 5000
end
function OnStop()
do_it = false
message(progname.." Финиш.")
end
function main()
message(progname.Перед прочтением этой статьи — ВАЖНО следующее: основная цель данной статьи заключается в том, чтобы показать как просто можно создать торгового робота, который может торговать российскими акциями или зарубежными акциями. Важно понимать, что создавая бота, вы лично несете ответственность за принимаемые им решения, инвестиционные операции и связанные с ними риски. Я не несу ответственности за решения, которые вы можете принять после прочтения этого материала. И я не даю никаких инвестиционных рекомендаций или советов. Не забывайте, что боты способны принести большие убытки, поэтому используйте их с осторожностью.
Программирование для меня это хобби и любимое дело. А так я сертифицированный системный архитектор. Поэтому прошу не особо ругать за код:‑)
Выбор брокера и библиотекКак вы знаете, брокеров много))) но нам нужны те, у которых есть API — программный интерфейс через который наш торговый робот сможет отправлять заявки на покупку и продажу акций.
Программирование для меня это хобби и любимое дело. А так я сертифицированный системный архитектор. Поэтому прошу не особо ругать за код :-)
В настоящее время я увлекаюсь написанием торговых роботов. Постепенно изучаю нейросети для их применения к анализу цен/объемов акций/фьючерсов.
Обычно я писал торговых роботов для работы с Брокерами и делал авто-торговлю Акциями или Фьючерсами, но вдруг возникла мысль.
- А что, если уже готовый код можно применять и на других активах??? Например на крипто активах для Биткоина или Эфира или других?
Уже изучив много библиотек и примеров за долгое время написания своих торговых роботов, решил сделать небольшую библиотеку backtrader_binance для интеграции API Binance и библиотеки тестирования торговых стратегий Backtrader.
Вот с помощью backtrader_binance, сейчас и создадим алго-робота для торговли BTC и ETH.
Подготовка окруженияУстанавливаем последнюю версию Python 3.11
Устанавливаем среду разработки PyCharm Community 2023.1

Примите участие в хакатоне «Финам Trade API» — соревновании по созданию торговых систем на основе открытого API «Финама». Призовой фонд конкурса — 450 000 рублей.
К участию приглашаются все, кто заинтересован в разработке финтех-продуктов — алготрейдеры, практикующие разработчики и студенты профильных ВУЗов.
В конкурсе представлено две категории: «Алгоритмические торговые системы (торговые роботы)» и «Неторговые разработки на основе Trade API».
В рамках каждой категории участникам предстоит создать ПО для компьютера или мобильного устройства, способное выполнять торговые и неторговые функции.
В каждой категории по две номинации: «Лучший пример самописного ПО для ПК» и «Лучший пример самописного ПО для мобильных устройств».
Приз за победу в номинациях — 100 000 рублей. Также предусмотрено вознаграждение за самое оригинальное использование Trade API — 50 000 рублей.
Заявки и решения принимаются с 10 апреля по 10 мая 2023 года.
Ниже представлен код двух способов построения дивергенции. Один с помощью функции корреляции, другой с помощью функции пивот.
ta.correlation() — Коэффициент корреляции. Описывает степень, на которую две серии стремятся отклониться от своих ta.sma значений.

7 — передаем значение встроенной функции ta.rsi в переменную rsi
8 — задаем коэффициент корреляции, на который будет реагировать индикатор
9 - задаем расчетный период корреляции
11 — переносим значение встроенной функции корреляции ta.correlation в переменную correlation
14 — задаем цвет направления корреляции, изначально бесцветный
15 — с помощью тернарного оператора задаем два условия дивергенции типа Strong. Первое условие медвежьей дивергенции, цвет будет красный, второе — бычьей и цвет зеленый. В случае не выполнения обоих условий цвет будет серый.
В этой статье расскажу как с помощью функции timestamp, а также переменной time и time_close можно задать диапазон времени от какой-либо заданной даты до текущей даты и как задать диапазон времени между двумя заданными датами.
time — встроенная переменная, содержащая время текущего бара в UNIX формате. Это количество миллисекунд, прошедших с полуночи (00:00:00 UTC) 1 января 1970 года.
time_close — время закрытия текущего бара в UNIX формате. Это количество миллисекунд, прошедших с полуночи (00:00:00 UTC) 1 января 1970 года. На графиках, основанных на цене, значение этой переменной равно na.
timestamp() - встроенная функция, возвращает UNIX-время для указанной даты и времени.

В этой части кода задаем точки времени point of time через timestamp(), указав год, месяц, день, час и минуты для каждой из них.

