Наглядный баланс криптовалютного портфеля с нуля до структурированной html страницы

Bas

Client
Регистрация
15.12.2013
Сообщения
637
Благодарностей
263
Баллы
63
Добрый день, дорогие друзья. Это мое первое участие в подобных конкурсах, надеюсь что не последнее. Итак, поехали...

Вот уже скоро год как я окунулся в тему майнинга и в конце концов назрел вопрос "а как же следить за балансом десятков своих криптовалютных кошельков", естественно речь идет о пересчете к доллару/биткоину. Так как в той крипте, которую намайнил по сути цифра баланса статична, пока не начнешь ее снова майнить/продавать. Есть куча различных готовых приложений, в т.ч. под мобильные устройства, что с одной стороны удобно, но с другой, все они заточены как правило под 1 платформу, и чаще всего это coinmarketcap.com. Что для меня лично абсолютно не приемлемо ввиду того что многих монет там просто напросто нету. Среди моих разработок имелся уже готовый шаблон, собирающий курсы с почти 3 десятков открытых источников (биржи, платформы и прочее) в базу данных, то вполне логичным было решение на основании этой БД и рассчитывать доходность по монетам. Так как многие из монет есть на биржах, но их нету на том же coinmarketcap.

В рамках конкурса проект был переписан под СУБД Access, потому что изначально все под MySQL, который нужно устанавливать отдельно, просто передать файл БД с шаблоном и все запустить нельзя. В многопотоке с 3 десятков источников парсится информация о курсах всех монет порядка 20 секунд, здесь же, ввиду того что Access не является многопоточной СУБД, пришлось переписать все на однопоточную работу, и время парсинга 2 источников составляет порядка 5 минут при добавлении всех монет (при пустой базе) и около 3 минут при обновлении информации о курсах монет. Но есть и хорошая новость, многопоток в одном из действий я все же оставил, и если кто-то решит на основании этого проекта что-то реализовывать свое, сможет без проблем вернуть везде многопоток, только предварительно придется еще переписать все запросы под многопоточную СУБД, а так же подключить эту БД к проекту.

На вход мы подаем данные с названием монеты, ее балансом в виде количества монет, а так же опционально: ожидаемый курс в usd и ожидаемый курс в btc. Как только реальный курс превысит ожидаемый, не важно, к usd или к btc, такая монета будет перемещена вверх списка и выделена зеленым цветом. Задумано это для облегчения слежения за курсами имеющихся монет и уведомлениях о пампах конкретных монет.

Входной список выглядит следующим образом:

т.е. все поля разделены ";".

На выходе имеем файл balance.html в папке с проектом со следующим содержимым:

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

Здесь мы видим все биржи с данной монетой, ежедневные и еженедельные статистические данные.

Шаблон в рамках конкурса обучен на получение информации из 2 источников: https://coinmarketcap.com с помощью API, с дальнейшим получением дополнительной информации о каждой из монет с помощью get-запросов, а так же с биржи https://www.coinexchange.io соль которой в том что в API при получении курсов монет нету ни названий самих монет ни даже сокращенных кодов (symbol), а только id монеты на самой бирже, значение которого необходимо получить по другому запросу API с дальнейшим объединением нужных данных в 1 результат json. А так же с биржи https://www.coinexchange.io реализовано получение статусов кошельков для того чтобы при необходимости что-то завести на биржу для продажи, не нужно было искать на бирже текущий статус кошелька (при закрытии на обслуживание и отправке туда средств, платеж попросту не дойдет, либо вообще, либо до окончания обслуживания, которое может продлиться и несколько месяцев).

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

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

В шаблоне Вы найдете реализацию работы следующих операций: работа с api, парсинг нужных даных с json, black list и white list, именованные группы регулярных выражений и работа с ними, работа с БД MS Access, многопоточная загрузка информации get-запросами с помощью метода Parallel For, добавление информации из одного json в другой для упрощения работы с полученными данными, готовые JET SQL запросы (Access) для множества различных ситуаций, будь то простая выборка данных или структуризация данных за период, обработка данных в c# коде и многое другое. Ну и главное - формирование структурированной html страницы на основании полученной информации из БД.

Для соединения с БД необходимо наличие OLEDB провайдера, если у Вас уже установлен пакет MS Office либо Access, то все должно работать и так, если не работает - установите провайдер, например отсюда: https://www.microsoft.com/en-us/download/details.aspx?id=54920. Устанавливать рекомендую х86 версию, независимо от разрядности Вашей операционной системы, иначе придется в строке подключения менять провайдер.

Для наглядности работы и лучшего понимания всего процесса, рекомендую использовать пустую БД (db_empty), в которой только таблицы и структура. В таком случае полное выполнение шаблона от запуска до генерации html страницы составит от 5 до 10 минут в зависимости от мощности Вашего ПК. Для простого ознакомления с кодом и получения сразу наглядной статистики по монетам - рекомендую использовать файл БД с данными (db_data). Оба файла баз данных, как и шаблон с примером входных данных смотрите в прикрепленных файлах. Нужный файл базы данных необходимо выбрать во входных настройках перед первым запуском проекта.

P.S.: не забудьте предварительно распаковать zip-архив с нужной базой данных :-)
 
Тема статьи
Другое

Вложения

Для запуска проектов требуется программа ZennoPoster или ZennoDroid.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...

Для того чтобы запустить шаблон, откройте нужную программу. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.

PrKing

Client
Регистрация
27.12.2014
Сообщения
40
Благодарностей
7
Баллы
8
Здраствуйте, еще не осилил ваш шаблон но хотелось бы узнать с каких сайтов вы еще парсите монеты?
К примеру у меня есть много мало известных монет или монеты которые только будут листиться на биржи.
 

PrKing

Client
Регистрация
27.12.2014
Сообщения
40
Благодарностей
7
Баллы
8

Bas

Client
Регистрация
15.12.2013
Сообщения
637
Благодарностей
263
Баллы
63
Здраствуйте, еще не осилил ваш шаблон но хотелось бы узнать с каких сайтов вы еще парсите монеты?
К примеру у меня есть много мало известных монет или монеты которые только будут листиться на биржи.
По примеру 2 добавленных к шаблону платформ можно с легкостью добавить любые биржи у которых есть API. Если монеты нету еще на бирже вообще - как Вы хотите автоматизировать сбор ее курса, если его не существует в природе? А те монеты, которые уже в листинге - заходите на биржу, где торгуется конкретная монета, ищете линк на API, заходите, смотрите документацию, делаете по образу и подобию уже реализованного функционала. О cryptocompare.com здесь вообще речи не шло, но отвечу, да, я использую информацию с него как с 1 из источников.
 
  • Спасибо
Реакции: iBotovod

Max

Client
Регистрация
17.06.2012
Сообщения
168
Благодарностей
44
Баллы
28
Bas, у меня вопрос.. Мониторить это круто, но как хранить все это дело? Можешь посоветовать какой нить мультивалютный кошелек?
 

Geograph

Client
Регистрация
16.02.2014
Сообщения
209
Благодарностей
114
Баллы
43
Bas, у меня вопрос.. Мониторить это круто, но как хранить все это дело? Можешь посоветовать какой нить мультивалютный кошелек?
Exodus, Coinomi (есть бета-версия под винду)
 
  • Спасибо
Реакции: Max

dephhs1

Client
Read only
Регистрация
08.01.2017
Сообщения
112
Благодарностей
32
Баллы
28
где минусовать ? херня полная точнее бесполезная инфа . некому не надо курсы валют - все есть и так а баланс спарсить с сайта и текстовый файл и так можно . если комуто и будет полезен такой труд то не мне ет точно . где минусовать ?
 

Bas

Client
Регистрация
15.12.2013
Сообщения
637
Благодарностей
263
Баллы
63
Exodus, Coinomi (есть бета-версия под винду)
Все верно, но это для "основного костяка" криптовалют. В частности я - майнер, поэтому для меня выхода всего 2: десятки локальных кошельков либо на бирже хранить (использую оба варианта одновременно + задумываюсь о Ledger для хранения "костяка").

где минусовать ? херня полная точнее бесполезная инфа . некому не надо курсы валют - все есть и так а баланс спарсить с сайта и текстовый файл и так можно . если комуто и будет полезен такой труд то не мне ет точно . где минусовать ?
Представьте свой труд на всеобщий суд, мы посмотрим, оценим. А пока я вижу лишь диванного эксперта, который зашел в тему лишь в поисках кнопки "бабло", но вот беда, не нашел... Вот когда станете держателем хотя бы 30-50 различных криптовалют, при этом не какого-то дохлого унылого г, а именно криптовалют и будете ими трейдить - первым и прибежите за шаблоном :-)

П.С.: вижу что майнеры/трейдеры криптой здесь все же есть, хоть и в меньшестве, для Вас совет, если решите допиливать под себя шаблон/делать по примеру свой с нуля, делайте на многопотоке, но для этого придется переводить на MySQL, зато получите результаты, которых даже не ожидали, вот пример из моего лога:

За 5 секунд 17 бирж и еще 13 сек ожидания ответа от биржи на техобслуживании. На Access к сожалению такого не добиться (сам изначально делал для себя на Access, но как только количество источников перевалило за сотню (я не только биржи паршу, это всего лишь маленькая часть моего шаблона) и время выполнения шаблона за 1 час, переписал все с нуля под MySQL). Как это сделать - есть пример прямо в шаблоне, как прикрутить MySQL - есть статьи на форуме.
 
  • Спасибо
Реакции: iBotovod

iBotovod

Client
Регистрация
01.07.2017
Сообщения
56
Благодарностей
19
Баллы
8
Жаль нельзя несколько голосов отдать за один шаб. К сожалению, голосуют за те шабы, которые близки по тематике голосующим, а не за те, которые могут чему-то научить.
Огромное спасибо! Ты крут.
 
  • Спасибо
Реакции: Sovgav

Muxa84

Client
Регистрация
09.10.2017
Сообщения
19
Благодарностей
1
Баллы
3
Эх давненько я не заходил, окунулся с головой в крипту на хаях. Проголосовал бы за статью, но опоздал)
 

Sovgav

Client
Регистрация
22.10.2013
Сообщения
36
Благодарностей
4
Баллы
8
Спасибо! Меня это также натолкнуло на интересные мысли. А те кто минусуют, мыслят однобоко. ИМХО
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)