BITMEX:XBTUSD   Bitcoin / US Dollar Perpetual Inverse Swap Contract
Krokodilushka
bands 1.4 дня 3 у меня работает, пока в плюсик, с начала января показывает что могло бы быть ~100%. радостно. лучше чем я криворучка


Пост может быть интересен только алготрейдерам/программистам. Торговая идея состоит в том как же всё-таки поймать эту антикомиссию у BitMEX. Чем я последние пару суток и занимался, скушав несколько собачек, могу поделиться опытом. Сведениями о расположении подводных камней.

На первый взгляд всё просто: надо просто выставить лимитный ордер в стакан как можно ближе к цене и просто подождать. Но не тут то было. Ничего удивительного в том что такой подход работает примерно в половине случаев :) В другой половине случаев цена улетает подальше от твоего лимитника и возвращаться что-то не хотит. И это казалось бы тоже просто - надо просто постоянно пододвигать ордер поближе к спреду и рано или поздно он сработает. И это оказалось тоже не правда :) Сдвигая ордер постоянно происходит противная штука - выставляешь ордер, а спред то двигается, в итоге очень частое явление что ордер то переместил, но ты уже не мейкер, а тейкер, следовательно платишь комиссию 0.075%, и халява на -0.025% уже убежала. То есть не так то просто эту самую халяву поймать :) Ну это ладно если надо один ордер только выставить, а вот мне то надо выставлять более 100 ордеров одновременно, что кратно ухудшает все шансы на получение вожделенной.

Начал пробовать разные подходы в деле ловли халявы. Лучше всего сработала вот такая идея: перед тем как выставится ордер надо получить orderbook (стаканы), а делается оно так (нужна авторизация по ключу):

https://www.bitmex.com/api/v1/orderBook/...

Список выглядит примерно так:

{"symbol":"XBTUSD","id":8798927750,"side":"Sell","size":118313,"price":10722.5},
{"symbol":"XBTUSD","id":8798927800,"side":"Buy","size":2773,"price":10722},

Оттуда выдираем самую высокую цену для Buy и самую низкую цену для Sell. Это и есть крайние ордеры в стакане. К лучшей Sell-цене прибавляем 5 баксов, у лучшей Buy-цене убавляем 5 баксов - и вот по этим ценам должны выставляться ордеры нашим ботом. Но... этого мало. Так как спред то двигается постоянно, поэтому выставленные таким образом ордеры сработают с шансом в 50%. А что это значит? А значит что в половине случаев будет халява на -0.025%, и в половине комиссия 0.075%. В среднем получается мы платим комиссию 0.05%. Так цель не достигнута.

Решение в том чтобы софт постоянно двигал наш ордер на расстоянии 5 баксов от спреда. Скажем раз в секунду пусть передвигает ордер. Так с шансом более чем в 90% срабатывает лимитный ордер. Иногда всё равно получается маркет-ордер, так как спред может двигаться слишком быстро и наш софт просто не успеет обновить данные о стакане. Но впрочем, в 90% случаев входить лимиткой это уже антикомиссия в итоге. Ведь тогда на 9 лимитных входов будет лишь 1 маркет-вход. Или 9 * -0.025% + 1 * 0.075% = -0.15% за 10 ордеров. То есть биржа нам заплатит :)

Но без подводных камней было бы не интересно. Можно именно изменять цену в ордере ( API имеют такую функцию), а можно более тупо отменять ордер и выставлять новый. Но во втором варианте важно сначала именно отменять ордер, а уже потом выставлять новый. Не наоборот. Если действовать наоборот, сначала выставлять новый, а потом отменять старый, то из-за какой-то миллисекундой задержки софт просто не успеет отменить старый ордер, и его накроют. То есть сработают оба ордера. Вот поэтому надо сначала отменять старый.

И далее еще один камень под водой. Периодически биржа бывает перегружена и на несколько секунд API отваливаются, что не страшно. И возникает такая трабла: сначала сделана команда на отмену старого ордера, и она не проходит из-за перегруженности API биржи, а потом выставляется новый. Но так как старый то не отменился, то в итоге на бирже висит уже 2 ордера, вместо планируемого одного, ну и с шансом в 50% сработают оба опять :)
Комментарий: У этого камня решение тоже очевидно и простое - нельзя выставлять новый ордер, пока от биржи не получено подтверждение что старый она отменила.

Ну вот с этими камнями я уже разобрался. Теперь вот новых жду :) Робот сутки бегает по BitMEXу, пока стабильно вроде плюсуюет там. Причем чуть ли не половина прибыли получается от ловли этой антикомиссии, а не от самих прогнозов. Так что у меня даже мысль возникла попробовать создать какого-нибудь робота-лудомана, который вообще без прогнозов будет на авось просто антикомиссию ловить постоянно :) Вдруг сработает? )))
[бесплатная реклама] Рейтинг трейдеров криптовалют: https://alpha.mytrades.link/rating

[бесплатная реклама] Рейтинг трейдеров криптовалют: https://tradeprofile.net/rating

Комментарии

восхищаюсь вашим энтузиазмом, норо! и все больше уважаю за характер!
+1 Ответить
А как стратегию можно скачать, чтобы потестировать?
Ответить
Спасибо, интересная идея. Оптимизировать скорость работы с биржей можно через Web Socket.
Ответить
kstka kstka
@kstka, и то же самое для BitFinex. Тут они пишут, что для RESP API (то есть, через обычный http запрос), установлен лимит 90 обращений в минуту. А для Web Socket таких ограничений нет https://www.bitfinex.com/posts/188
А для BitMex ограничение 300 запросов в 5 минут. То есть, получается, что BitFinex все равно дает больше, потому что 90*5=450.
Но я сам это не проверял, говорю то, что вычитал.
Ответить
@kstka, неа, практика показала что у битфайнекса лимит динамически меняется, и он падал аж до 8 запросов в минуту. А битмекса этот лимит вообще включается только на время ддоса раз в пятилетку. Я неделю назад тест проводил специально - 600 ордеров в минуту выставлял и отменял более двух суток подряд - и все отлично работало. Так что пишут то одно, а на практике другое.
+1 Ответить
@kstka, да, но значительно сложнее :) Я планирую в будущем сокет освоить, пока не умею.
Ответить
Что за антикомиссия можно на пальцах? И причем тут последние 25 ордеров стакана?
Ответить
ROBO_Trading kostyanext
@kostyanext, BitMEX берет с тейкера (тот кто накрыл ордер) комиссию 0.075%, а мейкеру (тот кто создал ордер) доплачивает 0.025%. Таким образом, биржа всегда в плюсе, ведь сумма мейкера и тейкера всегда равна. Моя хотелка в том чтобы быть мейкером почти всегда, а не в половине случаев.
Ответить
kostyanext ROBO_Trading
@ROBO_Trading, просто ставь всегда лимитные ордера. мейкер - тот кто вносит ликвидность, тейкер - кто забирает.
Ответить
kostyanext kostyanext
@kostyanext, имеется ввиду лимитные но не по текущей цене рынка а чуть ниже/выше. см. buyprice/askprice в тикере.
Ответить
Домой Скринер акций Скринер форекс Скринер криптовалют Экономический календарь О проекте Особенности Цены Приведи друга Правила поведения Справочный центр Решения для сайтов и брокеров Виджеты Графики TradingView для сайтов Легкая версия графиков Блог и новости Твиттер
Профиль Настройка профиля Счёт и оплата Ваши друзья Монеты Мои запросы в поддержку Справочный центр Личные сообщения Чат Выйти