0
import ccxt
import time
import re

exchanges = {'mercado', 'bitfinex', 'quadrigacx','binance'}

limit = 10

def get_order_book(key,symbol):
    exchange = eval('ccxt.' + key + '()' )
    orderbook = exchange.fetch_order_book(symbol,limit)
    print (list(orderbook.keys()))

    bid = orderbook['bids']
    print (bid)

get_order_book('bitfinex', 'BTC/USD')

>>['bids', 'asks', 'timestamp', 'datetime', 'nonce']
[[6603.6, 0.02189108], [6603.1, 0.15613008], [6602.7, 1.508], [6602.0, 0.05], [6601.3, 1.0], [6601.0, 0.00499], [6600.5, 0.63660326], [6600.3, 1.5094], [6600.0, 9.0], [6598.1, 0.18676835]]

该函数bids返回一个列表,其中每个索引都有两个值,第一个是price,第二个是amount

可以将此列表分成两个列表,一个带有price,另一个带有amount?

或者把它放到一个嵌套的 dict 键中,供我以后使用?

它不会返回一个列表,而是将列表上每个索引的两个值分配给一个嵌套的字典

喜欢new_orderbook['bids']['price']第一个数字
new_orderbook['bids']['amount']第二个数字

4

1 回答 1

0

@ekhumoro 是正确的。

zip()您可以通过传递包含在运算符前面的迭代器来解压缩这些对*

>>> bid
[[4030.1, 0.17328499], [4030.0, 0.73859736], [4029.7, 1.921567], [4027.9, 0.31081552], [4027.3, 0.05842284], [4027.2, 1.26534116], [4027.0, 0.19425388], [4026.9, 0.04], [4026.7, 0.0133796], [4026.3, 0.93483375]]
>>> prices, amounts = zip(*bid)
>>> list(prices)
[4030.1, 4030.0, 4029.7, 4027.9, 4027.3, 4027.2, 4027.0, 4026.9, 4026.7, 4026.3]
>>> list(amounts)
[0.17328499, 0.73859736, 1.921567, 0.31081552, 0.05842284, 1.26534116, 0.19425388, 0.04, 0.0133796, 0.93483375]
于 2018-12-28T19:11:48.373 回答