В этой статье я покажу вам, как работает программа Qt Bitcoin Trader и расскажу историю ее развития.
Эта программа с открытым исходным кодом позволяет быстро делать ставки на BTC-e и Mt.Gox, а также устанавливать правила автоматической торговли.
Он написан на чистом Qt 4 с использованием OpenSSL и, на мой взгляд, имеет интересные особенности со стороны разработки, о которых я тоже хочу рассказать.
Фон
Во время апрельского скачка курса биткойнов я и мой друг Дыбик , как и многие на хабе, заинтересовался этой замечательной криптовалютой.Мы, как, думаю, и многие из тех, кто прочитал эту статью, решили попробовать свои силы на бирже.
Как оказалось, самой популярной биржей для торговли биткойнами является Mt.Gox. Мы зарегистрировались там и начали делать первые ставки.
Темп постоянно повышался, волнение росло.
Об этом гудел весь Интернет, и я помню, даже по телевизору в то время говорили о Биткойне.
Мы торговали на сайте Mt.Gox, и сайт часто падал.
Раздражало, когда ты размещал заказы и не мог их отменить.
Вернее, оказывается, но кнопка «отмена» не дала ни подтверждения, ни ответа.
Неясно, был ли отменен приказ или нет. Я еще тогда подумал: «А почему на сайте нельзя задать правила создания заказовЭ» Круглосуточно следить за ходом невозможно; было бы хорошо оставить правила на ночь.
Я поискал программы и нашел питон-ботов и несколько платных клиентов для десктопа, в которых я тогда не разбирался.
«Отредактировать файл, чтобы настроить правило? Это неудобно», — подумал я.
Нам нужна программа, которая не позволит вам допускать механические ошибки, пропускать ноль или запятую.
Курс постоянно подпрыгивал, и нам удавалось выгодно покупать и продавать.
Я пытался получить прибыль от небольших гонок.
В журнале заказов Mt.Gox четко виден отдельный пункт с суммой комиссии для покупки, но предмета для продажи не было.
«Комиссия только при покупке», — подумал я.
А когда я посчитал, то понял, что проигрываю.
Также есть комиссия с продаж, она заложена в сумму.
На мой взгляд, логичнее было бы отображать комиссию одинаково и при продаже, и при покупке.
Но, может быть, Mt.Gox специально хочет нас запутать? Не знаю.
Я это узнал и начал торговать дальше.
Это оказалась хорошая сумма и мы поняли, что потратили столько времени не зря.
А потом, ну вы сами помните, тогда был полный обвал курса и мы тоже попали под удар.
Сайт завис, продать биткойны было невозможно, а потом Mt.Gox и вовсе заморозил торги на сутки.
Курс валюты резко упал.
Так я потерял половину вложенной суммы.
Что делать дальше? Сдаться и снять остальную сумму? Я ни минуты не сомневался и начал думать о стратегии, она не могла выйти из головы.
Ищете ботов на Python? Нет, мне стало интересно реализовать что-то свое.
Когда я впервые начал торговать на Mt.Gox, передо мной уже была простая программа, которую я нигде не мог найти, и тогда я начал разрабатывать Qt Bitcoin Trader.
Встречайте — Qt Bitcoin Trader
После первого запуска вас встретит окно создания профиля.
Вам необходимо выбрать биржу, получить API-ключ с параметрами Info и Trade, ввести его в программу, а затем придумать надежный пароль.
Все данные сохраняются в папке профиля пользователя и зашифрованы с помощью OpenSSL с шифрованием AES256. В окне входа вы можете включить проверку обновлений.
Существует автоматическое обновление для пользователей Mac и Windows.
Новые версии проверяются путем скачивания файла с GitHub , в котором хранится контрольная сумма двоичного файла, зашифрованного с помощью RSA2048. Поэтому риска подмены файла вредоносным нет.
Когда выйдет новая версия, вы увидите такое окно:
Я постарался сделать интерфейс простым и чтобы все было видно.
Не в обиду пользователям с низким разрешением экрана, но интерфейс под них я оптимизирую позже.
Слева вы видите список открытых ордеров, обновляемый в режиме реального времени.
Вы можете создавать ордера на покупку и продажу, но следите за тем, чтобы их сумма не превышала ваш баланс.
В последнее время Mt.Gox сразу удаляет заказы, превышающие баланс.
Наконец, вы можете отменить заказ и сразу увидеть его статус «Отменен», даже если он все еще находится на сайте, API получает подтверждение доставки.
Все рыночные данные обновляются в одном запросе, кроме последней цены.
Он также обновляется на основе цен последних транзакций.
Калькулятор комиссий доступен через небольшую кнопку в левом верхнем углу.
Я получил обратную связь и сделал так, как привыкли пользователи онлайн-калькуляторов.
Работает то же самое, за исключением того, что баланс и последние цены подгружаются автоматически, что удобно.
Вы можете открыть столько калькуляторов, сколько захотите.
Вы можете легко создать правило для автоматического создания заказов:
Теперь вы можете создавать правила в двух режимах: «По одному» и «Параллельно».
В параллельном режиме при изменении значений все правила проверяются на схожесть, и любое из них может быть выполнено.
В режиме «Одна за другой» вторая строка правила будет проверяться только в случае выполнения первой строки.
Вы можете изменить порядок правил и редактировать их.
Для некоторых значений есть звуковое оповещение.
Значок динамика представляет собой кнопку переключения.
Есть возможность отделять групповые окна, делая их отдельными окнами, что несомненно удобно при использовании нескольких мониторов.
Для пользователей Windows есть возможность включить портативный режим.
Вам необходимо создать папку QtBitcoinTrader в той же папке, что и exe-файл, и все зашифрованные данные будут сохранены в ней.
Что ожидается в следующих версиях Qt Bitcoin Trader?
В настоящее время поддерживаются биржи BTC-e и Mt.Gox. Если у меня будет свободное время, я поочередно выполняю поддержку остальных наиболее популярных бирж.Возможно одновременное использование websocket api и http api. Далее идет отображение графиков в реальном времени.
В один профиль можно будет добавлять API разных бирж и разных валют для одновременного мониторинга.
Скриптовый язык, как дополнение к правилам, с помощью которого можно в несколько строк написать стратегию, анализирующую цены на разных биржах.
Как вы можете помочь мне улучшить Qt Bitcoin Trader?
На данный момент программа переведена на английский, немецкий, русский, украинский, испанский, голландский и норвежский языки.Вы можете помочь перевести программу на ваш родной язык.
Программа имеет встроенный механизм перевода.
Нажмите кнопку «О программе» и вы увидите инструкции:
Нажмите кнопку «Перевести программу» и вы увидите диалог:
Вот все поля, которые необходимо перевести.
Поля с красным текстом — это поля, соответствующие английскому переводу.
Нажав кнопку «Применить», вы сразу увидите свой перевод в программе и сможете исправить слишком длинные тексты.
Когда вы закончите перевод, сохраните файл и отправьте его на адрес электронной почты, указанный в инструкции.
После проверки перевода я добавлю его в следующую версию Qt Bitcoin Trader. И не забудьте оставить свою контактную информацию и биткойн-адрес для пожертвований в поле «Переводчик:».
Вы также можете помочь в развитии программы материально, так как программа живет только за счет пожертвований.
Биткойн-адрес для поддержки: 1d6iMwjjNo8ZGYeJBZKXgcgVk9o7fXcjc
Официальные ресурсы Qt Bitcoin Trader
Источник на GitHub Скачать для Windows и Mac (SourceForge.net) Скачать с Softpedia для Windows Скачать с Softpedia для Mac BitcoinTalk РУС Форум BitcoinTalk RUS Форум Форум BTCSec Фейсбук Твиттер ВКФишинг
Как только моя программа появилась в Интернете, тут же стали появляться дубликаты с описанием моей программы.Но вместо ссылки на скачивание Qt Bitcoin Trader предлагается скачать вирус.
Я был удивлен, почему в Интернете так много поддельных биткойн-трейдеров Qt. И даже qtbitcointrader.com — это фейк со ссылкой на вирус, а www. qt-tradar.ru — тоже фейк.
Если бы я знал, что программа будет такой популярной, я бы сразу заблокировал эти домены.
Думаю, это урок для меня и для всех, кто читает эту статью.
Будьте внимательны, если не уверены, надежна ли ссылка, то загуглите название.
Рекомендую использовать встроенное безопасное обновление программы.
Особенности разработки Qt Bitcoin Trader
Встроенный механизм переводчика
Может быть, вам интересно, почему я не выбрал для перевода программы стандартный Qt Linguist? Мне это не нравится, редактировать форму может и удобно, но для перевода файла нужен сам Qt Linguist, а он есть наверное только у 5% всех пользователей программы.Поэтому я решил написать свой движок и сделать его удобным не только для разработчиков, но и для всех пользователей программы.
Вы можете посмотреть исходный код класса июляTranslator на GitHub. Это базовый класс, который хранит все словесные ассоциации в QHash. Этот класс может загружать и сохранять файлы перевода, а также переводить отдельные объекты интерфейса и загружать текст из интерфейса в файл.
Я даю каждому объекту интерфейса, который необходимо перевести, уникальный текстовый идентификатор с помощью setAccessibleName().
Функция переводаUi(QWidget *parent) класса июляTranslator обходит все дочерние виджеты родительского элемента из параметра функции.
Каждый виджет, который необходимо перевести, естественным образом должен вызывать функцию TranslateUi() в конструкторе или по сигналу.
Например, мы просматриваем все QPushButtons, проверяем, имеет ли доступное имя() значение, и, если да, получаем ассоциацию этого значения из класса QHash июляTranslator.
В результате получается класс, который загружает язык из файла и применяет его к интерфейсу.foreach(QPushButton* curButton, par->findChildren<QPushButton*>()) if(!curButton->accessibleName().
isEmpty()) curButton->setText(translateButton(curButton->accessibleName(),curButton->text()));
Поскольку мне не всегда нравится, как работает QLayout, после применения перевода я просматриваю каждый виджет, вычисляю минимальный размер, чтобы виджет выглядел подходящим, и задаю ему минимальную ширину.
Пример кнопки: foreach(QPushButton* pushButtons, par->findChildren<QPushButton*>())
Теги: #QtBitcoinTrader #Qt #bitcoin #Trader #MtGox #BTC-e #торговля на бирже #программирование #программное обеспечение #Криптография #программирование
-
Переадресация Vlan Через Juniper
19 Oct, 24 -
Твиттер На Тв
19 Oct, 24