Блог им. Mihalich81

Итоги года 2020. Программирование

   Год уже заканчивается и пора подводить некоторые итоги. Начну свою ежегодную серию итогов со своего хобби – программирование в области финансовых рынков. Увлёкся этим делом в конце 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 своих разработок. Надеюсь, большинство пожеланий было реализовано в почти прошедшем году и можно заняться чистой реализацией алгоритмов. Через год интересно будет сюда вернуться, и проверить насколько был выполнен этот мотивационный посыл.

★24
31 комментарий
сколько всего уже робот слил? ;) 
avatar
forex-light,  в марте робот заработал около 50% к депозиту срочного рынка, но сейчас почти отдал обратно. Результат устраивает, и за него нужно бороться. )
Михаил Понамаренко, за привязки по вкладкам — реальное спасибо! 
avatar
Михаил Понамаренко, вообще-то час нормального программера — 400-500р. Специфического (как QLUA) -и поболее. так что вы могли бы получать более, работая просто на удаленке
avatar

Есть у меня планы касательно программирования.

Ближе к началу года перетрём тему.

avatar
FinSerfing, Программу Партии пишите!
avatar

clerk, я беспартийный.

Не люблю ходьбу стадами.

avatar
FinSerfing, хорошо, Дмитрий, обсудим. Кстати, забываю спросить, почему в марте твои роботы капусты не нарубили? Тогда на пару лет хороших процентов можно было накосить.

Михаил Понамаренко, стоит отметить, что они не совсем мои.

Идеи систем принадлежат другому человеку.

Если коротко, то это портфель из довольно специфичных систем, которые не берут длинные движения.

Но в начале следующего года подобные трендовые системы будут добавлены.

И станет веселее.

avatar
143р в час это крайне мало!
Стоит ли заниматься всем этим программированием ради каких то 200 тыс в год? По-моему нет
Биотехнолог, ты не понял. Речь о том, что это хобби. Я знаком с автором,  в качестве эксперимента в 2017 году купил у него робота как раз на qpile. 
Понял,  что это полный треш. 
Сам в качестве все того же хобби занялся программированием,  делаю себе роботов сам.
У меня другой вопрос к автору,  зачем он продолжает жрать кактусы и пытаться родить что то на встроенном языке? 
А если завтра квик отменят (например перейдешь к другому брокера, с другим терминалом), Михаил,  что ты будешь делать? Опять кому то донатить? 
Делай платформонезависимых роботов.
Прокачивайся в своем хобби, вместо того, чтобы донатить

avatar
Дмитрий К, ну если хобби то другое дело. Если заработок основной, то это шляпа
Биотехнолог, он в магазине своем торгует товарами для дома, ему пока некогда заниматься программированием с точки зрения основного заработка. Но насколько я могу судить о нем, он вполне может монетизировать это хобби по 3тр в час. Сейчас все программисты на удаленке нормально могут пахать
avatar
Дмитрий К, понятно
Дмитрий К, а на чем лучше писать универсальных роботов? Пока освоил на базовом уровне только lua и stock sharp
avatar
Kris, здесь вопрос с порогом входа.  Например с++ ,  на нем написано все что можно придумать, но он сложный. Если не смущает это, то лучше использовать его.
Я пошёл по самому простому пути,  освоился в питоне,  оказалось, что он настолько популярен,  что на нем тоже все что можно, написано. 
Я имею в виду, что есть уже готовые библиотеки и на том, и на другом языке, и написание робота по сути сводится к написанию логики по сути простейшими if else с использованием готовых библиотек.
Просто,  по ощущениям, что то на с ++ написать будет в разы длиннее в плане кода, чем на питоне. И отлаживать на питоне тоже в разы проще по моему
avatar
Дмитрий К, а для python какие библиотеки используете если не секрет? У меня этот язык следующий в списке на изучение.
Основной C#. C++ очень уж тяжелый :)
avatar
Kris, а я думал, кому си шарп зашёл,  тому плюсы будет не сложно. 
Я с сишарпом столкнулся в альфадиректе,  у них там есть конструктор роботов,  и можно дописывать алгоритмы (если в конструкторе не получается реализовать) как раз на сишарпе.  И у них разработчики помогают. А я тогда даже питгн ещё не изучал, только заинтересовался роботами,  и попросил написать простейшего робота,  купи продай,  и написали,  и работал,. Но даже сейчас он мне кажется не логичным в смысле кода, с точки зрения питона какие то не нужные усложнения.

На питоне чего только не использую, сокеты,  чтобы данными обмениваться с квиком,  коннектор к базе данных, либы,  чтоб историю сделок сразу в эксель писать, перед этим посчитав, что нужно,
некоторое время активно баловался с пандасом для анализа,  и ещё куча всяких либ,  типа нампай,  скайпай (точно не помню уже как), эти либы поддерживают так называемые векторные вычисления (толком не понимаю,  как это работает), но производительность  вычислений на порядок плюс минус выше, чем обычными циклами по данным бегать.
Для парсинга много либ. Парсил данные по облигациям с русбондс, в квике и на сайте момбирди нет данных по амортизации, а с этим реальный попадос,  купишь что нибудь по 110, а завтра тебе 30% платят по 100. Пришлось искать выход с помощью парсинга 

avatar
Дмитрий К, приветствую! Да, QPILE это был ещё тот треш, но скрипел потихоньку. Честно говоря, я хотел по-быстрому перелить всё из QPILE в QLUA. По-быстрому не получилось, приходится жрать кактус. Если QUIK отменят, психану, и заданачу кого-нибудь конкретно, чтобы даже в код не заглядывать. 
Биотехнолог, согласен, мало. Но сравнительно зарплаты простых работяг в провинции не очень-то мало. Конечно, если смотреть относительно опыта и знаний — это совсем ничего.
Михаил Понамаренко, ну не обязательно работать там где родился, можно и по стране переезжать ради зп
Биотехнолог, пять баллов, сам такой, покуралесил по стране. Да и приятели у меня такие же. Нонстоп в переездах.
avatar
Тимоха, я сам части переезжаю ради зп. Сейчас в Москве дальше вроде уже некуда
я похвастался, что «моё хобби равно 5.5 млн.р. на счёте» и был за это наказан
Да, есть такое дело: чем похвалишься, без того и останешься. Планами, говорят успешные люди, желательно тоже особо не делиться с посторонними. Я иногда даже близких не посвещаю в какие-то планы, если их реализация для меня очень важна. 
𝗙𝗼𝗿𝘁𝘂𝗻𝗮, это была шутка, конечно. На моём опыте, сколько не хвались, ничего от этого не меняется. Да, там и хвалиться особо нечего было. Что тогда, что сейчас. 
Я не понял, какой дебет/кредит за год?

avatar
Владимир, сейчас +23% с начала года. Значительно больше, чем от околорынка в реальном выражении. )
Насчет Доната не понятно. Зачем донатить?
Написал тз, заплатил за разработку и пусть робот пашет.
avatar
Lookas, тут проблема в голове. Ну очень уж нравится программировать. Думаю, что посвятив это же время своему бизнесу, смог бы заработать на десяток роботов под заказ.
нравится и делай, что нравится, в этом и кайф
тем более роботы плюс дают и не просто в диких спекуляциях с риском, а хеджируют, и это классно, что вы умеете хеджировать портфель успешно!
avatar
Михаил, спасибо за добрые слова!!! С вами очень приятно общаться!
Успехов вам в наступившем году и не только творческих! ;)
avatar

теги блога Михаил Понамаренко

....все тэги



UPDONW
Новый дизайн