noro

Охота на антикомиссию

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/L2?symbol=XBTUSD&depth=25

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

{"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у, пока стабильно вроде плюсуюет там. Причем чуть ли не половина прибыли получается от ловли этой антикомиссии, а не от самих прогнозов. Так что у меня даже мысль возникла попробовать создать какого-нибудь робота-лудомана, который вообще без прогнозов будет на авось просто антикомиссию ловить постоянно :) Вдруг сработает? )))
А как стратегию можно скачать, чтобы потестировать?
Ответить
восхищаюсь вашим энтузиазмом, норо! и все больше уважаю за характер!
+1 Ответить
Спасибо, интересная идея. Оптимизировать скорость работы с биржей можно через Web Socket.
Ответить
youniverse youniverse
@youniverse, и то же самое для BitFinex. Тут они пишут, что для RESP API (то есть, через обычный http запрос), установлен лимит 90 обращений в минуту. А для Web Socket таких ограничений нет https://www.bitfinex.com/posts/188
А для BitMex ограничение 300 запросов в 5 минут. То есть, получается, что BitFinex все равно дает больше, потому что 90*5=450.
Но я сам это не проверял, говорю то, что вычитал.
Ответить
noro youniverse
@youniverse, неа, практика показала что у битфайнекса лимит динамически меняется, и он падал аж до 8 запросов в минуту. А битмекса этот лимит вообще включается только на время ддоса раз в пятилетку. Я неделю назад тест проводил специально - 600 ордеров в минуту выставлял и отменял более двух суток подряд - и все отлично работало. Так что пишут то одно, а на практике другое.
+1 Ответить
noro youniverse
@youniverse, да, но значительно сложнее :) Я планирую в будущем сокет освоить, пока не умею.
Ответить
Что за антикомиссия можно на пальцах? И причем тут последние 25 ордеров стакана?
Ответить
noro kostyanext
@kostyanext, BitMEX берет с тейкера (тот кто накрыл ордер) комиссию 0.075%, а мейкеру (тот кто создал ордер) доплачивает 0.025%. Таким образом, биржа всегда в плюсе, ведь сумма мейкера и тейкера всегда равна. Моя хотелка в том чтобы быть мейкером почти всегда, а не в половине случаев.
Ответить
@noro, просто ставь всегда лимитные ордера. мейкер - тот кто вносит ликвидность, тейкер - кто забирает.
Ответить
kostyanext kostyanext
@kostyanext, имеется ввиду лимитные но не по текущей цене рынка а чуть ниже/выше. см. buyprice/askprice в тикере.
Ответить
RU Русский
EN English
EN English (UK)
EN English (IN)
DE Deutsch
FR Français
ES Español
IT Italiano
PL Polski
SV Svenska
TR Türkçe
PT Português
ID Bahasa Indonesia
MS Bahasa Melayu
TH ภาษาไทย
VI Tiếng Việt
JA 日本語
KO 한국어
ZH 简体中文
ZH 繁體中文
AR العربية
HE עברית
Домой Скринер акций Скринер Форекс Скринер криптовалют Экономический календарь О проекте Особенности Правила поведения Модераторы Решения для сайтов и брокеров Виджеты Компонент графиков Отзывы и предложения Блог и новости ЧаВо Справка и Wiki Твиттер
Профиль Настройки профиля Счёт и оплата Мои запросы в поддержку Связаться с поддержкой Опубликовано идей Подписчики Подписан Личные сообщения Чат Выйти