Я начинаю работать с mtgox api. Я в основном использую эту страницу , чтобы рассказать мне, как ее использовать.
Что у меня сейчас есть, так это то, что я могу получить глубину, а затем поместить биды и аски в «сегменты» (каждый из которых представляет собой диапазон цен) и могу сказать вам объем в каждом сегменте.
Теперь я хочу иметь возможность обновлять это каждую секунду или около того.
Поэтому мне нужно было бы отслеживать:
Совершаемые сделки (т. е. удовлетворяются заявки/аски).
Новые биды/аски.
Биды/аски отменяются.
Похоже, что старая версия API могла показывать чистое изменение на каждом томе, но это не относится к новой версии.
Как мне это сделать?
Есть два способа сделать это.
1) API опроса MtGox V2. Вы звоните, getFullDepth
чтобы загрузить полную книгу заказов. Затем вы запрашиваете getPartialDepth
обновления, заменяя все заказы в своей master
книге заказов. Этот метод не очень эффективен, и вы можете опрашивать только в ограниченном темпе.
Вот демонстрация из проекта с открытым исходным кодом XChange для простого опроса частичной книги заказов и создания диаграммы книги заказов.
2) MtGox Polling API V2 + потоковая передача. Вы звоните, getFullDepth
чтобы загрузить полную книгу заказов. Затем вы используете потоковый API для получения depth
событий и соответствующим образом обновляете свою master
книгу заказов. Обновления глубины с нулевой суммой означают, что ордера были отменены или исполнены, т.е. они больше не существуют и их можно удалить.
Вот демо из проекта с открытым исходным кодом XChange.
Ваша ссылка на «старую версию API» на самом деле ведет к потоковому API , который все еще доступен. Была обновлена только http-версия, и оттуда трудно получить точную информацию о глубине за точные периоды времени.
Так что я бы остановился на стриминге. Обновлено гораздо больше в режиме реального времени для ваших требований.
Теперь они устарели от поля depth:volume, но у них все еще есть volume_int, который является изменением громкости * 1E8, поэтому вы можете получить объем из этого:
//js for example
var volume = volume_int * Math.pow(10,-8);
Ознакомьтесь с примерами github в нижней части вики-страницы, чтобы начать работу. Например, этот