Избранное трейдера Anest

по

Скрипт на QLUA по определению корреляции между ценами двух инструментов

Всем привет!

Относительно недавно на своем Дзен-канале «Код торгового робота» я размещал статью в которой рассматривал различные теоретические графики и рассчитывал корреляцию между ними. Ранее примерно такие же статьи встречал и на Smart-lab.

В продолжении данной темы было бы логично написать скрипт, который строит корреляцию между двумя заданными активами по указанному тайм-фрейму. Что и было сделано в виде скрипта на QLUA. Напомню, что коэффициент корреляции принимает значение от -1 до 1. Если он близок к единице, значит две величины примерно одинаково ведут себя. Если близок к -1, то графики двух величин ведут себя разнонаправлено — когда один график расчет — второй также снижается. А результат близкий к нулю говорит, что между графиками нет связи.

Данный скрипт выполняет следующие действия:
  1. Инициирует исходные данные (по сути это блок, в котором задаются исходные данные: с какими инструментами работаем, по какому тайм-фрейму)
  2. Считывает свечи по указанным двум инструментам.
  3. Сопоставляет данные свечей, то есть создается таблица в которой приведено время и цены обоих активов в это время.


( Читать дальше )
  • обсудить на форуме:
  • Quik Lua

Qlua: работа с метками, пишем торгового советника на индикаторах.

Сегодня рассмотрим:

Вывод текста на график
Вывод графических сигналов
Удаление меток с графика
Торговый советник на индикаторах
Удаление данных вечерней/утренней сессии с графика.

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

И хотя сам терминал имеет возможность отрисовки различных линий, фигур, каналов, дуг, уровней, но из lua скрипта ничего этого до сих пор штатными методами не доступно. Разработчики оставили единственную возможность — вывод рисунка (bmp или jpg), поэтому желающий нарисовать, например, прямоугольник должен сперва его отрисовать где-то (или взять из библиотек рисунков), сохранить в нужном формате, и далее уже через метку поместить в конкретном месте графика. Вот такой вот «кружок авиамоделизма») Посмотрим как это работает.



( Читать дальше )
  • обсудить на форуме:
  • Quik Lua

Qlua: получение данных биржевых свечей с сервера брокера, обработка данных, пишем скрипт выгрузки котировок

Функция CreateDataSource
Получение количества свечек данных
Пауза для подгрузки данных
Получение по инструменту OPEN, HIGH, LOW, CLOSE, VOLUME
Обработка времени и даты
Закрытие источника данных
Примеры: получение данных последних 10 свечей, выгрузка новой минутной свечки после её закрытия, текущее значение простой средней SMA10 по минуткам
Простой скрипт выгрузки котировок

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

Более практичным вариантом является получение данных через функцию CreateDataSource, запрос осуществляется следующим образом:

ds, err = CreateDataSource(код класса, тикер инструмента, интервал)

Код класса: для акций «TQBR», для срочного рынка «SPBFUT».



( Читать дальше )
  • обсудить на форуме:
  • Quik Lua

Qlua: размещаем таблицу в скрипте, остановка скрипта при удалении таблицы, работа с цветом. Пишем своего советника (начало).

Продолжаем изучение 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 — программный интерфейс через который наш торговый робот сможет отправлять заявки на покупку и продажу акций.



( Читать дальше )

Как сделать торгового робота для Binance

Пару слов обо мне

Программирование для меня это хобби и любимое дело. А так я сертифицированный системный архитектор. Поэтому прошу не особо ругать за код :-)

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

Обычно я писал торговых роботов для работы с Брокерами и делал авто-торговлю Акциями или Фьючерсами, но вдруг возникла мысль.

- А что, если уже готовый код можно применять и на других активах??? Например на крипто активах для Биткоина или Эфира или других?

Уже изучив много библиотек и примеров за долгое время написания своих торговых роботов, решил сделать небольшую библиотеку backtrader_binance для интеграции API Binance и библиотеки тестирования торговых стратегий Backtrader.

Вот с помощью backtrader_binance, сейчас и создадим алго-робота для торговли BTC и ETH.

Подготовка окружения
  1. Устанавливаем последнюю версию Python 3.11

  2. Устанавливаем среду разработки PyCharm Community 2023.1



( Читать дальше )
  • обсудить на форуме:
  • Binance

Хакатон «Финама» по созданию торговых систем. Призовой фонд 450.000 рублей!

Хакатон «Финама» по созданию торговых систем. Призовой фонд 450.000 рублей!

Примите участие в  хакатоне «Финам Trade API» — соревновании по созданию торговых систем на основе открытого API «Финама». Призовой фонд конкурса — 450 000 рублей.

К участию приглашаются все, кто заинтересован в разработке финтех-продуктов — алготрейдеры, практикующие разработчики и студенты профильных ВУЗов.

В конкурсе представлено две категории: «Алгоритмические торговые системы (торговые роботы)» и «Неторговые разработки на основе Trade API». 

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

В каждой категории по две номинации: «Лучший пример самописного ПО для ПК» и «Лучший пример самописного ПО для мобильных устройств». 

Приз за победу в номинациях — 100 000 рублей. Также предусмотрено вознаграждение за самое оригинальное использование Trade API — 50 000 рублей.


Заявки и решения принимаются с 10 апреля по 10 мая 2023 года. 


Узнать больше о хакатоне «Финама» и принять участие


Способы построения дивергенции на Pine Script

Ниже представлен код двух способов построения дивергенции. Один с помощью функции корреляции, другой с помощью функции пивот.

Построение дивергенции с помощью функции корреляции

ta.correlation()  — Коэффициент корреляции. Описывает степень, на которую две серии стремятся отклониться от своих ta.sma значений.

Код построения бычьей и медвежьей дивергенций с помощью функции correlation

7  — передаем значение встроенной функции ta.rsi в переменную rsi

8  — задаем коэффициент корреляции, на который будет реагировать индикатор

9 - задаем расчетный период корреляции

11  — переносим значение встроенной функции корреляции ta.correlation в переменную correlation

14  — задаем цвет направления корреляции, изначально бесцветный

15  — с помощью тернарного оператора задаем два условия дивергенции типа Strong. Первое условие медвежьей дивергенции, цвет будет красный, второе — бычьей и цвет зеленый. В случае не выполнения обоих условий цвет будет серый.



( Читать дальше )

Как задать диапазон времени в Pine Script с помощью timestamp и time?

В этой статье расскажу как с помощью функции timestamp, а также переменной time и time_close можно задать диапазон времени от какой-либо заданной даты до текущей даты и как задать диапазон времени между двумя заданными датами.

Используемые в коде встроенные функции и переменные

time  — встроенная переменная, содержащая время текущего бара в UNIX формате. Это количество миллисекунд, прошедших с полуночи (00:00:00 UTC) 1 января 1970 года.

time_close  — время закрытия текущего бара в UNIX формате. Это количество миллисекунд, прошедших с полуночи (00:00:00 UTC) 1 января 1970 года. На графиках, основанных на цене, значение этой переменной равно na.

timestamp() - встроенная функция, возвращает UNIX-время для указанной даты и времени.

Диапазон времени от одной заданной точки времени до другой

Диапазон времени, код (часть 1)

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



( Читать дальше )

Ошибка «Не хватило памяти под объекты» (Quik)

Всем привет)

Может кому пригодиться.
Вот столкнулся сейчас с этой проблемкой… да… это не ново, такое уже когда-то бывало у меня… давно… так что, ничего страшного, никакой паники или растерянности.
Но сейчас был интересный нюанс)
Поэтому напишу обо всем, возможно кому и пригодится.

Вообще, когда вылетает такая табличка и Квик не хочет открываться, как правило это означает вовсе не то, что у Вас слабый компьютер и действительно не хватает оперативной памяти. В большинстве случаев — это просто программный сбой в Квике.
Что нужно делать в такой ситуации?
И что сейчас сделал я?

Во-первых, я, конечно, по классике этого случая, сперва удалил все файлы «*.log» и «*.dat» ( вообще пишут, что при этом не надо удалять файл «metastock.dat», но у меня его и не было...)
Заодно удалил и все файлы «wnd» из папки «WNDSAV», кроме последнего.
(естественно и очистил папку «archive» от файлов «dat»)

Уже этого может быть достаточно для того, чтобы Квик запустился...

Запускаю — программа открылась, ввожу пароль… есть соединение… приходит СМС… ввожу СМС… и бац — снова вылетела эта табличка. Облом…

( Читать дальше )
  • обсудить на форуме:
  • QUIK

....все тэги
UPDONW
Новый дизайн