Год уже заканчивается и пора подводить некоторые итоги. Начну свою ежегодную серию итогов со своего хобби – программирование в области финансовых рынков. Увлёкся этим делом в конце 2005-го года. Тогда начал осваивать MQL4 в MetaTrader 4, но, через пару лет, поняв кухню ДЦ, перешёл в QUIK на реальную биржу. Тогда же, начал монетизировать своё хобби. Моя история прошлых лет, если кому интересно.
В статье будет, возможно, много не интересного не посвящённым в программирование, поэтому можете смело прокрутить в «Выводы».
Итоги.
В начале года не было желания что-то программировать. Часто собирался с друзьями. Мой робот в январе ушёл в минус 2% по всему счёту. Робот был настроен только в продажу рынка на деривативах, хеджируя основной портфель акций. В общем-то, это моя основная идея последних двух лет. Звёздный час робота настал в конце февраля. Как раз, когда я уехал из города, робот исправно накапливал продажи на летящем вниз рынке. Тогда я в очередной раз убедился в необходимости автоматизации. На мартовской экспирации часть средств удалось удачно перекинуть в подешевевшие акции.
Весной пришла печальная новость: переход на 19-тизначные номера заявок, и одновременно, прекращение торговли роботами на QPILE. Данное событие должно было произойти в апреле, поэтому я начал переход с QPILE на QLUA. Разные таблички и индикаторы работали по-прежнему.
В конце марта было не до программирования. Началась самоизоляция, которая внесла ажиотаж в мою основную деятельность по продаже товаров для дома и ремонта.
К середине мая появилось немного времени и желание что-нибудь покодить. 19-значный «конец света» был перенесён на июнь. С переходом на LUA 5.3, перестали работать библиотеки. Т.к. я не профессиональный программист, сделать новые версии я не мог. На форуме QUIK, создал тему: «Куплю и раздам функции для LUA 5.3 x64». Так я познакомился с Сергеем swerg, который, собственно, делал все предыдущие общедоступные версии библиотек и сделал новые версии. Если нужно какое-нибудь нештатное чудо в QUIK, то это к нему. )
На радостях была опубликована новая утилита Автозапуск QUIK QLUA, который не работал на новых версиях QUIK.
Ссылки на библиотеки:
w32.dll – функции WinAPI +управление вкладками: описание и скачивание
lfs.dll – функции для работы с файлами LuaFileSystem: описание скачивание
qvcl.dll – функции для создания визуального интерфейса описание скачивание
В июне шли ожесточённые бои с коллбэками заявок. Оказалось, что они не всегда есть, там, где должны быть обязательно. Но, к середине июня интерес к программированию снова пропал, т.к. на дворе лето, а самоизоляция на исходе. 19-значный «конец света» был перенесён на сентябрь.
В середине сентября интерес снова проснулся. «Конец света» состоялся, но, роботы на QPILE продолжали работать, хотя и частично парализованы отсутствием возможности снимать и переставлять заявки. Мой робот продолжал работать в полупарализованном состоянии после небольших корректировок. Захотелось добавить несколько «хотелок» в Историю позиций. Некоторые полезные «хотелки» подкинули клиенты. В общем, пожеланий оказалось очень много и их реализация была закончена лишь к середине декабря.
Самая моя желанная «хотелка» была — привязка таблиц скрипта к определённой вкладке. У меня обычно открыто несколько таблиц на разных вкладках, и при перезапуске QUIK или скрипта, они бессовестно лезли на первую попавшуюся вкладку. В QPILE параметры таблицы сохранялись в файл настроек *.wnd, а QLUA оказался совершенно не приспособленным. Давно просил об этом разработчиков. Но, «если гора не идёт к Магомету, Магомет идёт к горе». Сергей реализовал необходимую возможность через функцию w32.dll. Мечта сбылась.
Удаление, ширину столбцов, а также положение и размеры таблиц пришлось реализовать через настройки самого скрипта. Теперь таблицы стали максимально управляемыми.
Недели две пришлось биться с метками. Идея была в том, чтобы скрипт знал, какую метку он использует. ID метки присваивается QUIK по порядку от «1» (1,2,3…), и нельзя его задать. Это неудобно, т.к., например, при перезапуске QUIK, скрипт теряет номер своей метки, если, присвоенный QUIK’ом номер, не был записан в файл.
Выводы.
В одном из топиков полугодовой давности, я похвастался, что «моё хобби равно 5.5 млн.р. на счёте» и был за это наказан. В этом году, хобби принесло 43 526р. с учётом донатов Сергею. Что в пять раз меньше чем в 2019 году (219 300р.)
И, так, каким должен быть мой счёт с доходностью 4% над инфляцией?
Получаем: 43526 / 0.04 = 1 088 150 р.
В провинции весомая сумма.
Время наш самый ценный ресурс, как говорит Тимофей. Посчитаем в другом ракурсе. Время, затраченное на хобби ровно 300 часов. Сколько стоил мой час?
Считаем: 43526 / 300 = 145.08р./час (в прошлом году было около 300р./час)
Мало ли это? – Конечно, нет. Я живу в провинции, и пока мои некоторые друзья ишачат на складе за 170р./час, я занимаюсь своим хобби в удобном кресле за 145р./час.
Я никого не подталкиваю к такому хобби. Нужно быть фанатом программирования и трейдинга, т.к. бывают довольно затяжные периоды, когда что-то не получается.
Есть ребята, умней меня, которые сделали из этого хобби неплохой бизнес. Но бизнес, хоть и микроскопический, у меня уже давно. А программирование — хобби на свободное время и желание, без особых обязательств.
К сожалению, в новый год перехожу без своего полноценного робота. Пока пользуюсь калеченным QPILE ботом.
Планы.
Переписать с QPILE на QLUA хотя бы 5 своих разработок. Надеюсь, большинство пожеланий было реализовано в почти прошедшем году и можно заняться чистой реализацией алгоритмов. Через год интересно будет сюда вернуться, и проверить насколько был выполнен этот мотивационный посыл.
Есть у меня планы касательно программирования.
Ближе к началу года перетрём тему.
clerk, я беспартийный.
Не люблю ходьбу стадами.
Михаил Понамаренко, стоит отметить, что они не совсем мои.
Идеи систем принадлежат другому человеку.
Если коротко, то это портфель из довольно специфичных систем, которые не берут длинные движения.
Но в начале следующего года подобные трендовые системы будут добавлены.
И станет веселее.
Стоит ли заниматься всем этим программированием ради каких то 200 тыс в год? По-моему нет
Понял, что это полный треш.
Сам в качестве все того же хобби занялся программированием, делаю себе роботов сам.
У меня другой вопрос к автору, зачем он продолжает жрать кактусы и пытаться родить что то на встроенном языке?
А если завтра квик отменят (например перейдешь к другому брокера, с другим терминалом), Михаил, что ты будешь делать? Опять кому то донатить?
Делай платформонезависимых роботов.
Прокачивайся в своем хобби, вместо того, чтобы донатить
Я пошёл по самому простому пути, освоился в питоне, оказалось, что он настолько популярен, что на нем тоже все что можно, написано.
Я имею в виду, что есть уже готовые библиотеки и на том, и на другом языке, и написание робота по сути сводится к написанию логики по сути простейшими if else с использованием готовых библиотек.
Просто, по ощущениям, что то на с ++ написать будет в разы длиннее в плане кода, чем на питоне. И отлаживать на питоне тоже в разы проще по моему
Основной C#. C++ очень уж тяжелый :)
Я с сишарпом столкнулся в альфадиректе, у них там есть конструктор роботов, и можно дописывать алгоритмы (если в конструкторе не получается реализовать) как раз на сишарпе. И у них разработчики помогают. А я тогда даже питгн ещё не изучал, только заинтересовался роботами, и попросил написать простейшего робота, купи продай, и написали, и работал,. Но даже сейчас он мне кажется не логичным в смысле кода, с точки зрения питона какие то не нужные усложнения.
На питоне чего только не использую, сокеты, чтобы данными обмениваться с квиком, коннектор к базе данных, либы, чтоб историю сделок сразу в эксель писать, перед этим посчитав, что нужно,
некоторое время активно баловался с пандасом для анализа, и ещё куча всяких либ, типа нампай, скайпай (точно не помню уже как), эти либы поддерживают так называемые векторные вычисления (толком не понимаю, как это работает), но производительность вычислений на порядок плюс минус выше, чем обычными циклами по данным бегать.
Для парсинга много либ. Парсил данные по облигациям с русбондс, в квике и на сайте момбирди нет данных по амортизации, а с этим реальный попадос, купишь что нибудь по 110, а завтра тебе 30% платят по 100. Пришлось искать выход с помощью парсинга
Написал тз, заплатил за разработку и пусть робот пашет.
тем более роботы плюс дают и не просто в диких спекуляциях с риском, а хеджируют, и это классно, что вы умеете хеджировать портфель успешно!
Успехов вам в наступившем году и не только творческих! ;)