Избранное трейдера meteop
У коллег роботописателей существует необходимость постоянного контроля работы торговых роботов.
Существует огромное количество всевозможных вариантов:
— смс-уведомления из торгового терминала QUIK
— подключение к SMS-агрегатору для последующей отправки SMS-сообщений на собственный номер
— отправка e-mail сообщений
— особо изощренные программисты используют уведомления в календаре гугла, для бесплатной отправки сообщений о выставлении заявок роботом (экзотика, но как не упомянуть об этом)
Сколько копий было сломано, чтобы протестировать описанные выше способы.
Существует еще один очень интересный и простой в реализации инструмент – Телеграм со множеством полезных функций: telegram api и telegram bot api.
Bot api позволяет отправлять уведомления о состоянии робота, о сделках и множество другой торговой информации прямо в телеграм в чат с вашим ботом.
Скажу, что из всех предыдущих технологий, разобраться с работой bot api и получить рабочее решение оказалось проще всего. На запуск рабочего решения потребовалось 30 мин: с момента как впервые открыл api, зарегистрировал бота, и до внедрения отправки сообщений из бота в чат.
Подумал, что многие не знают, как подступиться к языку Qlua и запустить робота в квике. А между тем, это настолько просто, что даже не требует ничего кроме квика, виндусовского блокнота и знаний самого Qlua.
Qlua – это скриптовый язык поддерживаемый квиком, в основе язык lua 5.1 (в моем квике версия такая).
Скрипты, написанные на Qlua – это обычные текстовые файлы, которые имеют расширение «.lua». То есть можно сделать файл в обычном блокноте и после сохранения поменять в нем расширение с «.txt» на «.lua». Если внутрь этого файла записать инструкции кода на языке Qlua, то квик будет выполнять их.
Для удобства написания инструкций кода лучше пользоваться не виндусовым стандартным блокнотом, а например Notepad++, который можно скачать официально и бесплатно здесь https://notepad-plus-plus.org/download/v6.9.1.html. Он позволяет включить подсветку синтаксиса различных языков программирования, в том числе и lua, что очень помогает при написании кода.
В Notepad++ в «Опции -> Настройки» можно выбрать русский язык, а в «Опции -> Определение стиля» установить для lua понравившийся стиль отображения. Я для «Язык -> lua» ставлю стиль «Выбрать стиль -> Bespin» и еще в окошке «Стиль» для последних трех «FUNC» переопределяю цвет, иначе они с фоном сливаются.
Вчера на СмартЛабе был размещен пост Как построить корреляционную матрицу (для парной торговли) в Excel, собравший аж 150 "+".
Решил тоже попрактиковаться и написать под эту задачу код в R. Важным преимуществом R является наличие пакета rusquant, который позволяет автоматически получать котировки с Финам в любом таймфрейме (в т.ч. в тиках), что существенно экономит время по сравнению с ручной обработкой в Excel.
Код на R приведен ниже:
Результаты:
Здравствуйте дорогие друзья!
Поздравляю все мужчин с праздником!!!
Я переписал свой анализатор опционных позиций из экселя на C#. Пишу в visual studio 2010.
Кстати я только начал изучать этот язык и это моя первая программа на этом языке. Так что мы с Тимофеев вроде как коллеги по цеху ;)
Начну со слов благодарности:
1. Евгению, за его комментарий, собственно именно оно заставило меня задуматься о том что все равно придется все переписывать с экселя, рано или поздно, пусть уж лучше рано.
Вот его комментарий «А вы подумайте, что дальше будет еще больше написанного, и тогда еще больше будете переписывать.». Хотя помню в первой версии программы он меня пытался отговорить от написания своего анализатора. Как хорошо, что я не податлив на чужое мнение. И то что я проделал такой путь ни грамма не жалею, наоборот есть еще большее желание развивать свой софт.
2. Всем тем кто согласился тестировать сырую версию моего анализатора, за их терпение и подсказки. Их было 4 человека Сергей, Дмитрий, Дмитрий и Максим (они знают про кого я говорю).
3. Есть еще один человек которому я благодарен, его к сожалению нет на смарт-лабе. Это профессиональный программист, на сайте MQL5 он известен как «Dmitriy Skub». Он мне периодически подсказывал по самому коду программы.
Собственно рассказывать особо нечего про программу, я её постарался сделать подобной экселю с тем же функционалом, только вот дизайн сделал так как мне хочется, в экселе я так сделать не мог.
Просто приведу пару скриншотов программы:
Доска:
Диаграмма:
Расширенная форма оператора for
В расширенной форме оператора for для последовательного получения значений переменной цикла используется вызов итератора. Цикл завершается, когда итератор возвращает nil.
Примечание
Под итератором понимается любая конструкция, позволяющая перебирать элементы некоторого набора. При каждом обращении к итератору он возвращает очередной элемент набора. В Lua итераторы обычно реализуются в виде функций.
Расширенная форма оператора for имеет следующий вид:
for var1, var2, …, varN in <explist> do
… — тело цикла
end
где:
var1, var2, ..., varN — список переменных, получающих значения на каждом шаге цикла. Список может состоять из одной или нескольких переменных, разделённых запятыми. Первую в списке переменную называют управляющей переменной цикла. Когда эта переменная получает возвращённое итератором значение nil, цикл завершается. Остальные переменные на ход выполнения цикла влияния не оказывают;
<explist> — список выражений, разделённых запятыми. Обычно список состоит из единственного выражения — вызова функции-фабрики итераторов. Такая функция возвращает функцию-итератор, состояние и начальное значение управляющей переменной цикла.