- Регистрация
- 15.12.2013
- Сообщения
- 656
- Реакции
- 267
- Баллы
- 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-архив с нужной базой данных
Вот уже скоро год как я окунулся в тему майнинга и в конце концов назрел вопрос "а как же следить за балансом десятков своих криптовалютных кошельков", естественно речь идет о пересчете к доллару/биткоину. Так как в той крипте, которую намайнил по сути цифра баланса статична, пока не начнешь ее снова майнить/продавать. Есть куча различных готовых приложений, в т.ч. под мобильные устройства, что с одной стороны удобно, но с другой, все они заточены как правило под 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-архив с нужной базой данных

- Тема статьи
- Другое



