Загрузка с KuCoin всех цен через WebSocket и Get REST API

Поділитися
Вставка
  • Опубліковано 26 лис 2024
  • #python #code #visualstudio #mysql #bitcoin #websocket #xampp #mysqlclient #request #restapi #get #kucoin #who
    Показываю как написать на Python подключение через WebSocket и REST API к KuCoin .
    Получаем поток всех торгов в режиме реального времени и сохраняем его в базу данных.
    XAMPP - www.apachefrie...
    websocket-client - pypi.org/proje...
    mysqlclient - pypi.org/proje...
    Requests - pypi.org/proje...
    Git - github.com/mem...
    API KuCoin WebSocket - docs.kucoin.co...
    API KuCoin REST - api.kucoin.com...

КОМЕНТАРІ • 14

  • @MegaZigzag69
    @MegaZigzag69 Рік тому +2

    Спасибо тебе!

  • @maria_zhuzha
    @maria_zhuzha Рік тому

    На времени 9:23 у вас в браузере "читабельное" отображение всех словарей. Скажите, это особое расширение для браузера? В моём всё сплошным текстом, а хотелось бы структурировано.
    А так подключение заработало - большое спасибо за работающий пример! Но пишу просто в текстовый файл. Сейчас буду разбираться с получением секретных АПИ-ключей, шифрованием и тем, как из них состряпать уникальный код...

    • @itshtuchki
      @itshtuchki  Рік тому +1

      Он так отображается в Mozille Firefox . В остальных браузерах как текст.
      В каждом браузере есть свои нюансы. Поэтому вам нужно использовать все известные.

    • @maria_zhuzha
      @maria_zhuzha Рік тому

      @@itshtuchki в Гугл-Хроме установила расширение "JSON-handle" и пришло счастье в мой браузер))) Теперь всё разноцветное и структурированное, приятно посмотреть. Огнелис был классным и моим любимым обозревателем до версии 3.5, потом, увы, мы разминулись.

    • @itshtuchki
      @itshtuchki  Рік тому

      Да, такое же отношение к нему.
      Максимум для работы и тестов.
      Основной конечно Гугл.

  • @miriantagroup3435
    @miriantagroup3435 2 роки тому

    Привет, у тебя в этом пример часто обрывы? У меня регулярно

    • @itshtuchki
      @itshtuchki  2 роки тому

      Через API частенько бывает, именно с этой биржей. По web socket не тестировал долго. Поэтому выбрал для себя в последнем видео, загрузку в отдельном потоке каждое обращение к бирже. По web socket слишком много данных, мне столько не нужно.

  • @maria_zhuzha
    @maria_zhuzha Рік тому

    Здравствуйте!
    Есть несколько конкретных вопросов, вроде читала, но пока не нашла про них на сайте биржи. Благодаря вашему видео удалось запросить книгу ордеров с полной глубиной, настроить её обновление через вебсокет, всё прекрасно заработало. Сейчас хочу дополнительно получить историю торгов, но мне выдаёт не более сотни позиций - этого мало. Хотелось бы понять:
    1) Постоянно ли можно дёргать GET-запросы /api/v1/market/histories?symbol=*торговая-пара* или распространяется ограничение (100 per 10 seconds)?
    2) Можно ли подписаться на получение обновлений истории свершившихся сделок через вебсокет? (не нашла, на что подписаться, плохо искала?)
    До этого с другой биржи скачивала историю, чтобы оценить динамику торгов, так там при большом маркет-ордере до 1100 сделок в секунду на всякую мелочь проходит. Из 50 купленных биткоинов только 1 заявка на 8 монет была, около 10 на 2-4 биткоина и в течении нескольких секунд отрабатывались по 0,0001 битка. Поэтому очень интересно было бы такое отслеживать в режиме реального времени. Не подскажете, как оперативно это делать на Кукоине?

    • @itshtuchki
      @itshtuchki  Рік тому

      Для личных ордеров использую GET запросы.
      Ограничения на все api запросы одинаковы и считаются в сумме.
      Сама биржа всегда рекомендует работать именно с WebSocket
      Для личных ордеров есть приватный канал docs.kucoin.com/#private-channels
      Это нужно что бы не дергать постоянно get api.
      Но я хожу на биржу каждые 20-30 сек.
      Для сделок используйте WebSocket Public Channels - там поток данных. Вот только не знаю полный ли он.
      Вы можете не успевать его обрабатывать. Используйте базу данных в памяти, если будите такое записывать себе.

    • @maria_zhuzha
      @maria_zhuzha Рік тому

      ​@@itshtuchki Благодарю за ответ! Естественно, всё будет держаться в памяти, там одна книга ордеров около мегабайта получилась. Почитаю завтра ещё раз, подробнее, а пока нашли лишь такое: "...using the get_trade_histories() method. ...The method returns past 100 sequences containing the sequence id, time, price, size, and side for the ticker."
      Но пришла в голову иная мысль: по моим оценкам в секунду я не смогу послать больше сотни запросов, зато сейчас код отлично отлавливает обновления книги ордеров (второго уровня) с нулевыми значениями объёма монет. Если пойдёт вал обновлений с обнулением количества предлагаемого/покупаемого у мейкеров - это и будет означать исполнение чьей-то крупной маркет-заявки, которая в "стакан" не попадает.

  • @mr.senmax6185
    @mr.senmax6185 Рік тому

    На каждом сообщении высчитывать время для пинг - да вы гоните? Применяйте асинхронщину и будет вам счастье.

  • @maria_zhuzha
    @maria_zhuzha Рік тому

    Комментарий к вопросу, касающемуся формирования POST-запроса на размещение хотя бы самого простого лимитного ордера. Открываю Trade - Orders - PRICE, там есть строчка: "The price must be specified in priceIncrement symbol units." Получается, чтобы правильно округлить вычисленную цену и без проблем разместить ордер, мне надо знать 2 параметра: priceIncrement (шаг по цене) и quoteIncrement (шаг по покупаемой крипте). Потому что там написано (перевожу): "price в ордере должна быть положительным целым числом, кратным шагу цены priceIncrement (т. е. если шаг равен 0,01, ордера с ценами 0,001 и 0,021 будут отклонены)".
    Ответ на запрос /api/v2/symbols?market=BTC - показывает что нужно, но там нет пары BTC-USDT. Там вообще нет USDT. Для новичков неочевидно, что надо запросить у биржи /api/v2/symbols?market=USDS перед размещением ордера на покупку биткоинов за доллары, и там будет пара "BTC-USDT", priceIncrement = 0,1USDT и quoteIncrement = 0.000001BTC. Вроде так.
    Ещё прикол: запросила /api/v1/market/allTickers, а там есть такие строчки: takerFeeRate = 0.001, takerCoefficient = 2, makerCoefficient = 2, из чего следует вывод, что по некоторым парам комиссия ни разу не 0,1%, а больше, 0,2%. Хе-хе))

    • @itshtuchki
      @itshtuchki  Рік тому +1

      На этой бирже на низко ликвидные торговые пары комиссия больше.
      Я беру инфу отсюда. api.kucoin.com/api/v1/symbols/
      Один раз забрал к себе в базу и пользуюсь.
      Раз в сутки обновляю.

    • @maria_zhuzha
      @maria_zhuzha Рік тому +1

      @@itshtuchki благодарю, это действительно проще - сохраню в текстовый файл)) Ура! Кажется это было последнее, с чем надо было разобраться, теперь от блок-схем перейду к написанию самого кода. До этого проверялись лишь отдельные его небольшие кусочки. Даже не верится, что получилось "с нуля" буквально за месяц понемногу разложить всё по полочкам и получить перед собой ясную картину. До этого программа только помогала тем, что сообщала о появлении "вкусной цены". Ещё раз огромное спасибо за труд: это и другие видео! Изучив их, многое для себя прояснила. Примите мои искренние благодарности!