btsnotifier


Здравствуйте, обновил торгового бота для bitshares сети. Ниже список обновлений.

Исходники

Прибрался в исходниках. Вернее вынес торговый функционал в отдельный класс Bot. Исходная версия была написана менее чем за неделю, не все было чудесно. Буду потихонечку убираться в исходниках. Это должно потом упростить развитие.

Watchdog

Добавил watchdog. По непонятным пока мне причинам, иногда бот зависает, если связь с сервером рвется. Почему то просто перестает реагировать и используемая библиотека ни как об этом не сообщает. Может и може, но я пока не разобрался. Сделал просто. По таймеру будет проверяться,  получает ли скрипт новые блоки или нет. Если в течении 9 секунд новых блоков не поступило, то скрипт будет полностью остановлен. Для запуска я использую pm2 который может перезапустить программу, если та по каким то причинам была остановлена. До этого я по крону перезапускал бота раз в несколько часов. Теперь надеюсь перерывов в работе не будет и бот не будет без нужды перезапускаться.

Brain

Добавил мозгов боту. Шутка конечно, мозгов у бота не прибавилось. Просто добавил новые параметры, для этого добавил новую секцию в конфигурационном файле. Так думаю будет проще добавлять параметры, не переделывая уже готовые части программы. Пришлось конечно переделать бота для этого.

Вот так выглядит новая секция

            "brain" : {
                "greedy" : {
                    "enabled" : true,
                    "base" : 30,
                    "quote" : 30
                },
                "limits" : {
                    "enabled" : false,
                    "bid" :  {
                        "min" : 0.0000305,
                        "max" : 0.00003202 
                    },
                    "ask": {
                        "min": 0.00001,
                        "max": 0.00003400
                    }
                },
                "basePrice" : {
                    "enabled" : true,
                    "strategy" : "avg",
                    "offset" : 5,
                    "count" : 3
                }
            }


greedy

Если включить greedy и задать проценты для base и quote, то бот будет резервировать ликвидные токены на сумму заданную в процентах от общей суммы токенов. Если сумма на счету будет увеличиваться, то и зарезервированная сумма будет соответственно увеличена. При уменьшении суммы токенов на счету, зарезервированная сумма не будет уменьшаться. Сделано в надежде, что бот будет накапливать токены, а не раздавать, при следующем падении или повышении.

limits

В секции limits можно задать границы в виде фиксированных цен. Если вычисленная цена ордера выйдет за пределы указанных границ, то цена будет установлена либо на минимальную или на максимальную заданную величину. Возможно это будет полезно на парах ассетов представляющих один и тот же актив. К примеру bitRUBLE и escrow.RUBLE. Можно задать максимальную цену в 1, которую бот не будет превышать.

Если вычисленная базовая (см. basePrice) цена, выйдет за пределы заданных границ, бот не будет больше создавать ордера, пока цена не вернется в заданные пределы.

basePrice

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

Параметр strategy можно установить в одно из следующих значений.

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

"avg" - в данном случае базовая цена будет определяться как средняя цена первых N ордеров сверху стакана. Количество ордеров задается дополнительным параметром “count”.

"offset" - при включенной стратегии offset в качестве базовой цены будет браться цена Nth ордера сверху. Номер ордера задается дополнительным параметром “offset”

 

Предупреждаю сразу, я еще не оттестировал все, пользуйтейсь на свой страх и риск. Деньги ваши, отвественность ваша!

Исходники торгового бота можно взять здесь

 


Comments 21


Ништяк))

20.01.2018 23:03
0

Блин нафиг, кто смотрит пост на golos.io, тот сам виноват. Надоело редактировать )

20.01.2018 23:09
0

Как это не странно, но на голосио лучше, чем на голдвойсе отображает сейчас))

20.01.2018 23:28
0

Да я потом вусмерть заредактировал, что бы на обоих одинаково хреново смотрелось. На goldvoice.club все же лучше выглядело. С подсветкой синтакса итп. Golos.io - каменный век.

21.01.2018 12:54
0

Кавычки в каменном веке лучше смотрелись))
Сейчас не знаю

21.01.2018 15:29
0

Я ничего не понял, но все равно круто! Хочу тоже роботов делать, но не умею!
Этому можно научиться в 40 лет или поздно уже и не стоит напрягаться?)) Вопрос конечно на половину риторический, но если ответите, буду признателен!)

21.01.2018 02:02
0

можно и нужно напрягаться, всё упирается в мотивацию.

21.01.2018 06:36
0

мне 46 и я до сих пор учусь

21.01.2018 12:44
0

Статистику бы по работе посмотреть :)

21.01.2018 06:41
0

Насчет greedy не очень понял. Если резервировать какую-то сумму на счете, то ведь уменьшается сумма токенов, которыми оперирует бот. Разве это не должно привести к недополучению маржи?

21.01.2018 06:52
0

Да бог его знает. Возможно. Дело в том, что бот бывает заработает монет, а потом цена начинает падать и он распродает все заработанное по дешёвке. Я у торгобота на голосе, если замечал, что он наторговал более 3000gbg в эквиваленте , я забирал у него излишки, пока он их не разбазарил. Вот я и думаю, как это реализовать. Это все эксперименты. Я только что сделал, но не гонял на реальных данных. Сегодня думаю запустить пару ботов с разными настройками и одинаковой исходной суммы и сравню.

21.01.2018 11:03
0

Да, спасибо тебе за этих ботов. Богатства они мне не принесли (наверное, правильных настроек не знаю :). Но все равно как-то приятно осознавать, занимаясь всякой жизненной ерундой, что где-то у меня есть электронная плантация и на ней трудятся диджитал-негры. )
Надо бы как-то делиться опытом удачных настроек, что ли. Вот у меня один из ботов довольно долгое время наращивал мое благосостояние. Не нарадовался на него. Щелкнул кнутом и поставил второго ему в пару, с теми же настройками. И сейчас они благополучно проели это благосостояние на 2/3 в шарах. ) Почему, непонятно. Вероятнее всего, просто сменился рынок - с бычьего на медвежий.

21.01.2018 11:16
0

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

Я подумываю добавить стратегию пересекающихся скользящих средних. 2MA. Она вроде простая и думаю поможет определить, когда играть в лонг боту.

21.01.2018 12:52
0

Не поможет. Средняя западнывает на половину своего периода.

21.01.2018 14:05
0

Довольно часто применяется стратегия "черепах" следование трендам. Почитайте.
Хотя не могу понять можно ли теханализ применять к криптам. ВСе таки график реальных активов и крипты должен отличаться.

30.01.2018 13:45
0

@kostikus

Ну я на графиках смотрю, вроде бы если быстрая кривая выше, то обычно совпадает с трендом вверх. И наоборот. По крайней мере с математической точки зрения понятно и алгоритмически реализуемо. Много легче вуду-анализа с молотами, повешенными и трубами. Сделаю, а потом буду пробовать.

Да и реализация думаю проще. С чего то надо начинать.

Я не трейдер, бог его знает как лучше, что сработает, а что нет.

Мне интересно, потому и занимаюсь. Если кто подскажет направление, то буду только рад.

21.01.2018 16:44
0

торговля на основании прошлых данных это как езда на автомобиле только по зеркалам заднего вида

24.01.2018 04:40
0

Предлагайте. Как я понимаю остаются моментальные и будущие данные.

24.01.2018 08:50
0

только вчера пытался найти про твоего бота инфу)

21.01.2018 09:15
0

@ropox Ваше приложение опубликовано в ChainStore.io - магазин и каталог для медиаблокчейна Голос:
http://chainstore.io/product/btsnotifier/

21.01.2018 09:52
0