Думаю многие из вас могут сказать про себя «Два года назад я не верил в Bitcoin, поэтому не купил. Год назад я думал — ну теперь точно обвал и не купил...». Вы не одиноки.
Месяц назад я все таки решился и купил монет на одной из бирж. Какое было мое удивление, когда купленные по 4$ монеты, стали стоять 40$.
Но этот пост не об этом.
Я начал с небольшого анализа рынка, которые привел меня к умозаключению — «У LTC есть потенциал, как минимум он привлекателен для спекулянтов. Мало стоит — высокий доход при низких затратах. Для игры с BTC сейчас нужно куда больше вложений. Зря конечно в прошлом декабре я не начал майнить LTC, ну или хотя бы не купил.»
И вот я решился, купил немного монет, следил за колебаниями курсов, за спекулятивной игрой, тактикой и стратегией больших игроков. Начал постепенно втягиваться в кухню криптовалют. Тут сложно дать какой то определенный совет, но:
— Никогда нельзя спешить.
— Нельзя поддаваться панике.
— Чтобы не сжигать свои нервы, нужно заранее определиться что вы будете делать с той или иной частью активов.
После двух недель прошли эпилептические припадки при обвалах на бирже, я выбрал свою тактику поведения. Часть активов долгосрочных, а другая часть для игры на рынке. Я нашел как мне показалось достаточно удобную в плане использования биржу. Сайт позволял контролировать ситуацию по разным валютным парам, быстро делать ставки и получать прибыль. Игра на бирже за такой короткий промежуток времени стала чем то вроде зайти в свободную минутку на Хабрахабр и почитать новости. Это было легко сделать когда рядом ПК, но курсы могли значительно колебаться в любое время суток, мне нужен был контроль над активами и информация по состоянию рынка. Я начал искать клиент под Android, но тот что я нашел был очень не удобный, выглядел достаточно аляповато. Поэтому было принято решение, в свободное от работы время сделать свой клиент. Да, я люблю велосипеды, это мое хобби.
У выбранного для торгов рынка есть свое API, оно достаточно простое в использовании. Есть публичное и приватное API. Первое для получения показателей рынка, второе для торгов и запроса информации о пользователе. Данные предоставляются в формате JSON. Я написал несколько Java классов в качестве прослойки, для удобной работы с API, все они будут опубликованы в моем профиле на github.
Пример из кода, для получения информации по валютной паре, достаточно выполнить:
Это вернет вам объект JSON, такого вида:
Далее отправив этот объект другому методу того же класса, можно получить любое нужное значение.
Например, получим цену последней сделки:
По-моему вышло достаточно неплохо и прозрачно. Вопросы разве что к именованию классов у меня в проекте, но пусть это останется на моей совести. Напомню, классы для работы с API биржи я выложу чуть позже на github.
После того как все классы по работе с API были написаны, осталось дело за малым, оформить внешний вид приложения, надеть скелет на ранее написанный код, как следует все оттестировать, и выло��ить для всеобщего обозрения в сеть. Собственно вот что получилось:
Главная страница приложения, курсы:

Страница валютной пары:

Immersive mode для Android 4.4 + action bar снизу:

История сделок:

Доступна платная и бесплатная версии приложения. Отличия бесплатной версии:
— Нет ограничений, она полнофункциональная.
— Нет рекламы.
— Начиная с 14 дня использования, бесплатная версия при запуске будет говорить что она бесплатная. Это единственное отличие от платной.
Выглядит это так:

Поясню, таймер отсчитывает 15 секунд, оставшееся количество секунд видно на кнопке закрытия, после чего кнопка закрытия окна станет активной и можно работать с приложением в обычном режиме. Если ваши нервы не выдержат, возможно вы купите платную версию, ну или просто удалите бесплатную.
Для такого поведения, был написан небольшой метод который вызываетс�� при запуске. Он ставит метку типа long и пишет ее в SharedPreferences, затем при каждом запуске сверяет, если разница более 14 суток, то выводит AlertDialog.
Исходный код этого участка немного модифицирован, чтобы не казаться слишком раздутым. В IDE он выглядит симпатичней чем тут.
Если вы еще более несведущий в Java и Android чем я, то возможно вам пригодится этот кусок кода.
Платная версия:

Бесплатная версия:

p.s.: вот так и родился очередной мой велосипед.
Месяц назад я все таки решился и купил монет на одной из бирж. Какое было мое удивление, когда купленные по 4$ монеты, стали стоять 40$.
Но этот пост не об этом.
Предисловие
Я начал с небольшого анализа рынка, которые привел меня к умозаключению — «У LTC есть потенциал, как минимум он привлекателен для спекулянтов. Мало стоит — высокий доход при низких затратах. Для игры с BTC сейчас нужно куда больше вложений. Зря конечно в прошлом декабре я не начал майнить LTC, ну или хотя бы не купил.»
И вот я решился, купил немного монет, следил за колебаниями курсов, за спекулятивной игрой, тактикой и стратегией больших игроков. Начал постепенно втягиваться в кухню криптовалют. Тут сложно дать какой то определенный совет, но:
— Никогда нельзя спешить.
— Нельзя поддаваться панике.
— Чтобы не сжигать свои нервы, нужно заранее определиться что вы будете делать с той или иной частью активов.
Ближе к делу
После двух недель прошли эпилептические припадки при обвалах на бирже, я выбрал свою тактику поведения. Часть активов долгосрочных, а другая часть для игры на рынке. Я нашел как мне показалось достаточно удобную в плане использования биржу. Сайт позволял контролировать ситуацию по разным валютным парам, быстро делать ставки и получать прибыль. Игра на бирже за такой короткий промежуток времени стала чем то вроде зайти в свободную минутку на Хабрахабр и почитать новости. Это было легко сделать когда рядом ПК, но курсы могли значительно колебаться в любое время суток, мне нужен был контроль над активами и информация по состоянию рынка. Я начал искать клиент под Android, но тот что я нашел был очень не удобный, выглядел достаточно аляповато. Поэтому было принято решение, в свободное от работы время сделать свой клиент. Да, я люблю велосипеды, это мое хобби.
Работа с API и вклад в Open Source
У выбранного для торгов рынка есть свое API, оно достаточно простое в использовании. Есть публичное и приватное API. Первое для получения показателей рынка, второе для торгов и запроса информации о пользователе. Данные предоставляются в формате JSON. Я написал несколько Java классов в качестве прослойки, для удобной работы с API, все они будут опубликованы в моем профиле на github.
Пример из кода, для получения информации по валютной паре, достаточно выполнить:
BTCeTicker.getTicker(pair);
Это вернет вам объект JSON, такого вида:
{
"ticker":{
"high":1021,
"low":928.09998,
"avg":974.54999,
"vol":15334566.88449,
"vol_cur":15600.23488,
"last":996.001,
"buy":999.995,
"sell":996.093,
"updated":1386107758,
"server_time":1386107759
}
}
Далее отправив этот объект другому методу того же класса, можно получить любое нужное значение.
Например, получим цену последней сделки:
BTCeTicker.getLast(Ticker);
По-моему вышло достаточно неплохо и прозрачно. Вопросы разве что к именованию классов у меня в проекте, но пусть это останется на моей совести. Напомню, классы для работы с API биржи я выложу чуть позже на github.
После того как все классы по работе с API были написаны, осталось дело за малым, оформить внешний вид приложения, надеть скелет на ранее написанный код, как следует все оттестировать, и выло��ить для всеобщего обозрения в сеть. Собственно вот что получилось:
Скриншоты
Главная страница приложения, курсы:

Страница валютной пары:

Immersive mode для Android 4.4 + action bar снизу:

История сделок:

Мотивирующая на покупку бесплатная версия
Доступна платная и бесплатная версии приложения. Отличия бесплатной версии:
— Нет ограничений, она полнофункциональная.
— Нет рекламы.
— Начиная с 14 дня использования, бесплатная версия при запуске будет говорить что она бесплатная. Это единственное отличие от платной.
Выглядит это так:

Поясню, таймер отсчитывает 15 секунд, оставшееся количество секунд видно на кнопке закрытия, после чего кнопка закрытия окна станет активной и можно работать с приложением в обычном режиме. Если ваши нервы не выдержат, возможно вы купите платную версию, ну или просто удалите бесплатную.
Для такого поведения, был написан небольшой метод который вызываетс�� при запуске. Он ставит метку типа long и пишет ее в SharedPreferences, затем при каждом запуске сверяет, если разница более 14 суток, то выводит AlertDialog.
public static void checkTrial(){
FIRST_RUN = prefs.getLong("FIRST_RUN",0);
if(FIRST_RUN==0){
prefs.edit().putLong("FIRST_RUN", System.currentTimeMillis()).commit();
FIRST_RUN = prefs.getLong("FIRST_RUN",0);
}
CURRENT_TIME = System.currentTimeMillis();
if(CURRENT_TIME/1000 - FIRST_RUN/1000 > 1209600){
AlertDialog.Builder action_dialog = new AlertDialog.Builder(bm_MainContext);
action_dialog.setTitle(R.string.about));
LayoutInflater inflater = bm_MainState.getLayoutInflater();
View layer = inflater.inflate(R.layout.trial,null);
final Button btnCancel = (Button) layer.findViewById(R.id.btnCancelTrial);
Button btnBuyApp = (Button) layer.findViewById(R.id.btnAppBuy);
btnCancel.setEnabled(false);
btnBuyApp.setText(R.string.close + " (15)");
action_dialog.setCancelable(false);
action_dialog.setView(layer);
final AlertDialog AboutDialog = action_dialog.create();
btnCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AboutDialog.dismiss();
}
});
btnBuyApp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Uri uri = Uri.parse("https://play.google.com/store/apps/details?id=com.zlab.btcmonitor");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
bm_MainState.startActivity(intent);
}
});
AboutDialog.show();
Thread thread = new Thread()
{
@Override
public void run() {
int i=14;
while(i>0){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
final int c=i;
runOnUiThread(new Runnable() {
@Override
public void run() {
btnCancel.setText(R.string.close) + " ("+c+")"); }});
i--;
}
runOnUiThread(new Runnable() {
@Override
public void run() {
btnCancel.setText(R.string.close);
btnCancel.setEnabled(true);}});}
};
thread.start();
}
}
Исходный код этого участка немного модифицирован, чтобы не казаться слишком раздутым. В IDE он выглядит симпатичней чем тут.
Если вы еще более несведущий в Java и Android чем я, то возможно вам пригодится этот кусок кода.
Ссылки
Платная версия:

Бесплатная версия:

p.s.: вот так и родился очередной мой велосипед.