Блог им. AzEs

Дневник инвестора (0.8.7)

    • 06 января 2018, 21:44
    • |
    • AzEs
  • Еще
В качестве новогоднего подарка коллегам-инвесторам решил поделиться программой, которую сам написал, в короткое время освоив Java. Это дневник инвестора, позволяющий вести заметки о компаниях, тикерах, сделках и корпоративных событиях. Интеграций пока две: возможность загрузки сделок из QUIK и получение текущих котировок (с 15-минутным запаздыванием) через официальный API Московской биржи. Поддерживаются только тикеры на споте, кроме облигаций (руки не дошли сделать). Возможно кому-то ещё эта программа покажется удобной (мне именно такого функционала не хватало, что и побудило к созданию). Работает везде, где установлен Oracle Java Runtime Environment (JRE) версии не ниже 1.8. Windows, Linux; на Mac не пробовал, но тоже должно. Для установки JRE, если у кого нет, плясать отсюда.

Ссылка для скачивания самой программы Дневник инвестора. Это jar-файл, который в большинстве случаев запускается просто двойным щелчком мыши. Если при этом ничего не происходит, значит у вас не установлен JRE, либо система не знает, где расположен его главный файл java.exe.

После запуска видим основное окно программы:

Дневник инвестора (0.8.7)

Тут есть разделы Портфель, Сделки, События и Настройки.

Для начала рекомендую зайти в Настройки:

Дневник инвестора (0.8.7)

Здесь можно создать теги, которые будут присваиваться событиям (позже сделаю то же для компаний).
Важная галочка — «Загружать новые тикеры», рекомендую включить, чтобы как минимум однократно загрузить новые тикеры с сайта биржи (те, которые идут «из коробки» могли несколько устареть). Если галочка выключена, при обновлении будут загружаться только цены для уже существующих в программе тикеров.
Начиная пользоваться программой, вы не становитесь к ней привязаны: кнопка «Экспорт всех сделок» выгружает все сделки в формат csv, который потом можно передать куда-то ещё (в Excel или LibreOffice, например):

Дневник инвестора (0.8.7)

Остальной экспорт/импорт предназначен только для обмена информацией с коллегами — вы можете передавать созданные события или комментарии и ссылки на сайты компаний своим коллегам по инвесторским интересам (тоже в виде файлов, но уже специального формата, который понимает программа). Галочки под этими кнопками показывают, что будет происходить, если вы загружаете полученные от кого-то файлы с событиями и компаниями, которые у вас уже есть. Здесь происходит только массовая выгрузка по всем событиям или компаниям.
Пока не советую включать опцию «Использовать иерархический список сделок», т.к. из-за бага с используемой сторонней библиотекой (не моей разработки) сделки могут начать двоиться при отображении (это не влияет на их количество в базе данных, но портит картинку). Пока не смог обойти эту проблему, но разработчики библиотеки о ней знают.
Остальные настройки говорят сами за себя. Если вы сидите за прокси-сервером, придётся прописать хост и порт (прокси с авторизацией пока не поддерживается).
Последнее: каталог, где программа хранит свою базу данных и логи (а также резервные копии и экспортируемые файлы), находится в домашнем каталоге пользователя с названием mytradediary. То есть в Windows это, как правило, c:\users\Username\mytradediary, а в Linux — /home/Username/mytradediary.

После выхода из Настроек рекомендую создать Портфель нажатием соответствующей кнопки:

Дневник инвестора (0.8.7)

Основной портфель — тот, который будет отображаться по умолчанию. Код клиента должен совпадать с соответствующим кодом из QUIK — если у вас несколько портфелей/счетов, то при импорте сделок из QUIK они автоматически будут раскиданы по соответствующим портфелям (иначе все попадут в тот, который отмечен, как основной).

После сохранения портфеля (и возможно создания ещё нескольких) самое время открыть список Тикеров и нажать кнопку «Загрузить котировки»:

Дневник инвестора (0.8.7)

При этом обновятся данные по существующим тикерам и загрузятся новые. Если добавляете заметки к тикерам, не забывайте сохранять их нажатием на кнопку «Сохранить».
При желании можно отредактировать все данные вручную, открыв тикер двойным щелчком:

Дневник инвестора (0.8.7)

Если отметить несколько тикеров, как «Избранное», а потом включить соответствующую опцию в Настройках, то в интерфейсе программы вы будете видеть только избранные тикеры. То же самое можно сделать и с компаниями:

Дневник инвестора (0.8.7)

Интересная фича: можно добавлять ссылки на ресурсы (сайт компании, форум, страница раскрытия информации и пр.)

Дневник инвестора (0.8.7)

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

Перейдём в раздел сделок:

Дневник инвестора (0.8.7)

При создании сделки положительное число лотов означает куплю, отрицательное — продажу:

Дневник инвестора (0.8.7)

К сделке можно добавлять скриншоты (из буфера обмена либо из файла) — любое количество.
Если требуется учесть ввод-вывод средств, нужно переключиться в режим «Деньги»:

Дневник инвестора (0.8.7)

При нажатии кнопки «Импорт из QUIK» вы получите инструкцию по правильной настройке терминала:

Дневник инвестора (0.8.7)

Ниже показан последний раздел, «События»:

Дневник инвестора (0.8.7)

Имеются фильтры по датам, компаниям, тегам. При редактировании текста события опять же не забывайте нажимать «Сохранить».
Кнопка Экспорт на выбранных событиях (их можно выбрать несколько — с кнопкой Shift или Ctrl) скопирует в буфер обмена некий код, который можно передать, например, через мессенджер своим коллегам, а они скопируют этот код, нажмут кнопку Импорт и загрузят соответствующее событие (или события) в свои дневники. Впоследствии хочу автоматизировать этот обмен, интегрировав с Телеграмом. Пока же cut&paste.

Создать новое событие достаточно просто:

Дневник инвестора (0.8.7)

Если событие по компании, акции которой есть у вас в портфеле, наступает сегодня, то соответствующие теги события отобразятся рядом с названием акции в портфеле.

Если будут интересные идеи, комментарии, замечания — сыпьте в комментарии. Не обещаю, что что-то реализую (если и реализую, то не скоро), хотя я периодически выпускаю обновления программы — всё же это хобби (программирование), поэтому когда есть время/желание, тогда и доделываю. Как говорится, программа предоставлена as is (т.е. «как есть») и единственное, что я могу гарантировать, это то, что она занимает место на диске. Есть недостатки (о каких-то уже написал: не поддерживаются пока облигации, двоятся сделки при использовании иерархического списка, иногда странно считается средняя цена позиции и т.п.) По мере возможности буду исправлять и дорабатывать. Сам я активно её использую (примерно полгода).

Всем успешных инвестиций!
★19
14 комментариев
Автор зачем писать stand alone application на java?
Это мало кто сейчас делает, с вашими навыками вам надо сайт с бекэндом на java писать.
avatar
Иван Иванов, я предпочитаю чувствительную информацию (сделки, деньги и пр.) держать локально, а не на абстрактном сайте, который к тому же когда-нибудь может прекратить работу. Так что данный «дарёный конь» может стоять только в личной конюшне :)
Понимаю, что надо бы крутить интеграцию с источниками новостей, но данные хранить — только локально. Изначально программа писалась для использования очень ограниченным кругом инвесторов, а сайт предполагает широкий круг, монетизацию, оказание услуг и поддержку. Это не тот вариант. Просто «блокнот инвестора».
avatar
Пока jarfix-ом ОС не прибил, не запустился. И сколько писать такую программу начинающему java-программисту?
avatar
Storm Hold, зависит от таланта. У меня с этим туго, где-то три месяца на освоение и базовый функционал, далее ещё 8 месяцев допиливал, потом просто использовал и ловил баги. Самое трудное изначально — определиться с набором библиотек и какой фреймворк использовать (если вообще надо). Пару раз переписал почти с нуля :)
avatar
Спасибо за НГ подарок! Программа добротная, видно что сделано для себя. Идеи и замечания последуют) 
avatar
Вот и первая идея: сейчас скриншот и комментарий к сделке видны только в окне редактирования. Если они будут непосредственно на закладке «Сделки» под таблицей, их будет удобно просматривать просто переходя от одной строки таблицы к другой (для чего-то же сделки и сейчас можно выделить?)

И еще: если сделка это «деньги», то столбцы «операция» и «наименование» пустые. Можно было бы заполнять их вручную, или полуавтоматически, например «операция» — «дивиденды», «наименование» — "...(название компании)"

Да, и в разделе «Портфель» в таблице отдельной строкой суммарные дивиденды!
avatar
Да, спасибо, много дельного. Дивиденды напрашиваются отдельной сущностью, я над этим думаю. Скриншоты и комментарии сделать проще, постараюсь в первую очередь.
avatar
Спасибо, будем ждать! Да, и в разделе «Портфель» (а можно и в «Сделках») не помешает столбец «Текущая цена», чтобы видеть текущую цену одной бумаги, а не всего пакета.
avatar
Выложил обновлённый файл (та же ссылка), добавил пока отображение столбца «Заметки» в таблице сделок, чтобы их текст сразу было видно.
Столбцы в таблице сделок для удобства можно менять местами и изменять их размер. И порядок, и размер сохраняются между запусками программы.
avatar
Здравствуйте! Продолжаете ли развивать/усовершенствовать программу?
avatar
Илья, приветствую,
да, развиваю, про новую версию написал в блоге: smart-lab.ru/blog/467065.php
avatar

теги блога AzEs

....все тэги



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