Функция на Python 3, обращающаяся к API бирж
Цена договорная
•
безналичный расчёт, электронные деньги
Нужен функция (модуль) на Python 3, которая принимала бы в качестве аргумента (словарь) имена и соответствующие адреса API криптобирж и возвращала:
1. Словарь с bids, где:
1.1. key - exhange_name (наименования бирж)
1.2. value - list c релевантными rate (цена) и amount (объем)
Пример: rates_bids = {'bitfinex': [1017, 0.12], 'poloniex':[1016.0, 0.52], 'bittrex': [1014, 1.21]}, количество ключей == количество бирж
2. Словарь asks, где:
2.1. key - exhange_name (наименования бирж)
2.2. value - list c релевантными rate(цена) и amount (объем)
Пример: rates_asks = {'bittrex': [1015, 0.41], 'poloniex': [1016.0, 0.52]}, количество ключей == количество бирж
В словари rates_bids и rates_asks записывают по одной (верхней, лучшей) котировке из каждой биржи.
3. Минимальный ask_min = ['poloniex', 1016.0, 0.52] (exhange_name, rate, amount - имя биржи с минимальной котировкой продажи, собственно котировка (цена) и объем котировки). Вместо list можно и словарь. Пример: ask_min = {'bitfinex': [1017, 0.12]}
4. Максимальный bid_max = ['bitfinex', 1015.5, 0.342] (exhange_name, rate, amount - имя биржи с максимальной котировкой покупки, собственно котировка (цена) и объем котировки). Вместо list можно и словарь. Пример: bid_max = {'bitfinex': [1017, 0.12]}
Время работы - 0.4 sec * n, n - количество url
Успешным считается сценарий (success_counter >=n - n*0.4), когда количество бирж, с которых получены полные котировки, - не менее 0.6 от имеющихся в списке.
if success_counter >=n - n*0.4: success = True
Полными считаются котировки, в которых есть корректные значения и по bid (rate and amount), и по ask (rate and amount).
if success != True: bid_max = "", ask_min = "" => переменным присвается значение '"" и запускается еще один цикл.
В противном случае возвращаются корректные значения bid_max и ask_min, функция завершается.
Вряд ли получится написать код, программно разбирающий json-ответы от каждой из бирж и приводящий эти ответы к единому формату, из-за существенных различий в отдаваемых биржами ответах. Поэтому на данный момент обсуждается только десять бирж из приложенного списка. Но функция на вход должна принимать именно словарь с ключами - именами бирж и значениями - url запроса. Причина: удобство редактирования будущих запросов (изменение валютной пары, например).
Список бирж:
https://www.quoine.com/, https://www.okcoin.com/, https://www.bitfinex.com/, https://www.kraken.com/,
https://cex.io/, https://btc-e.nz, https://bittrex.com/, https://www.gdax.com/, https://www.bitstamp.net/,
https://gemini.com/
request_link = {'https://cex.io/': 'https://cex.io/api/order_book/BTC/USD/?depth=1', 'https://www.okcoin.com/': 'https://api.bitfinex.com/v1/book/BTCUSD?limit_b...', 'https://www.kraken.com/': 'https://api.kraken.com/0/public/Depth?pair=XXBT...', 'https://www.gdax.com/': 'https://api.gdax.com/products/BTC-USD/book?level=1', 'https://www.bitstamp.net/': 'https://www.bitstamp.net/api/v2/ticker/btcusd/', 'https://www.quoine.com/': 'https://api.quoine.com/products/1/price_levels?0', 'https://bittrex.com/': 'https://bittrex.com/api/v1.1/public/getorderboo...', 'https://btc-e.nz': 'https://btc-e.nz/api/3/depth/btc_usd?limit=1', 'https://gemini.com/': '\xa0https://api.gemini.com/v1/book/btcusd', 'https://www.bitfinex.com/': 'https://api.bitfinex.com/v1/book/BTCUSD?limit_b...}
1. Словарь с bids, где:
1.1. key - exhange_name (наименования бирж)
1.2. value - list c релевантными rate (цена) и amount (объем)
Пример: rates_bids = {'bitfinex': [1017, 0.12], 'poloniex':[1016.0, 0.52], 'bittrex': [1014, 1.21]}, количество ключей == количество бирж
2. Словарь asks, где:
2.1. key - exhange_name (наименования бирж)
2.2. value - list c релевантными rate(цена) и amount (объем)
Пример: rates_asks = {'bittrex': [1015, 0.41], 'poloniex': [1016.0, 0.52]}, количество ключей == количество бирж
В словари rates_bids и rates_asks записывают по одной (верхней, лучшей) котировке из каждой биржи.
3. Минимальный ask_min = ['poloniex', 1016.0, 0.52] (exhange_name, rate, amount - имя биржи с минимальной котировкой продажи, собственно котировка (цена) и объем котировки). Вместо list можно и словарь. Пример: ask_min = {'bitfinex': [1017, 0.12]}
4. Максимальный bid_max = ['bitfinex', 1015.5, 0.342] (exhange_name, rate, amount - имя биржи с максимальной котировкой покупки, собственно котировка (цена) и объем котировки). Вместо list можно и словарь. Пример: bid_max = {'bitfinex': [1017, 0.12]}
Время работы - 0.4 sec * n, n - количество url
Успешным считается сценарий (success_counter >=n - n*0.4), когда количество бирж, с которых получены полные котировки, - не менее 0.6 от имеющихся в списке.
if success_counter >=n - n*0.4: success = True
Полными считаются котировки, в которых есть корректные значения и по bid (rate and amount), и по ask (rate and amount).
if success != True: bid_max = "", ask_min = "" => переменным присвается значение '"" и запускается еще один цикл.
В противном случае возвращаются корректные значения bid_max и ask_min, функция завершается.
Вряд ли получится написать код, программно разбирающий json-ответы от каждой из бирж и приводящий эти ответы к единому формату, из-за существенных различий в отдаваемых биржами ответах. Поэтому на данный момент обсуждается только десять бирж из приложенного списка. Но функция на вход должна принимать именно словарь с ключами - именами бирж и значениями - url запроса. Причина: удобство редактирования будущих запросов (изменение валютной пары, например).
Список бирж:
https://www.quoine.com/, https://www.okcoin.com/, https://www.bitfinex.com/, https://www.kraken.com/,
https://cex.io/, https://btc-e.nz, https://bittrex.com/, https://www.gdax.com/, https://www.bitstamp.net/,
https://gemini.com/
request_link = {'https://cex.io/': 'https://cex.io/api/order_book/BTC/USD/?depth=1', 'https://www.okcoin.com/': 'https://api.bitfinex.com/v1/book/BTCUSD?limit_b...', 'https://www.kraken.com/': 'https://api.kraken.com/0/public/Depth?pair=XXBT...', 'https://www.gdax.com/': 'https://api.gdax.com/products/BTC-USD/book?level=1', 'https://www.bitstamp.net/': 'https://www.bitstamp.net/api/v2/ticker/btcusd/', 'https://www.quoine.com/': 'https://api.quoine.com/products/1/price_levels?0', 'https://bittrex.com/': 'https://bittrex.com/api/v1.1/public/getorderboo...', 'https://btc-e.nz': 'https://btc-e.nz/api/3/depth/btc_usd?limit=1', 'https://gemini.com/': '\xa0https://api.gemini.com/v1/book/btcusd', 'https://www.bitfinex.com/': 'https://api.bitfinex.com/v1/book/BTCUSD?limit_b...}
Отзывы
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.
Ответственный и инициативный, вникает в задачу и по-настоящему пробует ее решить.
И, конечно, он - хороший разработчик.
Спасибо, Дмитрий!