我使用API bittrex。我获得所选市场的出价值。这段代码适用于一个市场。
import requests
import time
def get_current_Bid(managed_currency, money_currency, session):
url = 'https://bittrex.com/api/v1.1/public/getticker'
req = requests.Request('GET', url, data={'market': money_currency + '-' + managed_currency})
prepped = session.prepare_request(req)
resp = session.send(prepped)
try:
return float(resp.json()['result']['Bid'])
except TypeError:
print('Error, try get_current_Bid in 1 sec.')
return get_current_Bid(managed_currency, money_currency, session)
session = requests.Session()
while True:
bid1 = get_current_Bid('OMG', 'BTC', session)
print(bid1,'OMG-BTC')
我得到了输出:
0.00130001 OMG-BTC
0.00130001 OMG-BTC
0.00130001 OMG-BTC
0.00130001 OMG-BTC
0.00130001 OMG-BTC
0.00130001 OMG-BTC
0.00130001 OMG-BTC
行。这是目前对OMG-BTC的实际出价。 但如果我想与2个或更多市场合作,我会得到非常奇怪的结果。略微改变了代码以适应两个市场。
while True:
bid1 = get_current_Bid('OMG', 'BTC', session)
print(bid1,'OMG-BTC')
bid2 = get_current_Bid('BTC', 'USDT', session)
print(bid2, 'BTC-USDT')
我有这个输出:
0.00127796 OMG-BTC
0.00127796 BTC-USDT
0.00127796 OMG-BTC
5800.00000001 BTC-USDT
5800.00000001 OMG-BTC
5800.00000001 BTC-USDT
5800.00000001 OMG-BTC
5800.00000001 BTC-USDT
如您所见, 0.00127796 是 OMG-BTC 的奖品, BTC-USDT p>
5800.00000001 是 BTC-USDT 的奖品, OMG-BTC 的
但是在输出中,这就像它们相交一样。有时,另一种货币的价格是针对一种货币给出的。有人能告诉我我做错了吗?
答案 0 :(得分:0)
问题可能在于对API的请求频率。如果我在请求之间放置5秒的时间延迟,则每次都会出现不同的值(如预期的那样):
while True:
bid1 = get_current_Bid('OMG', 'BTC', session)
print(bid1,'OMG-BTC')
time.sleep(5)
bid2 = get_current_Bid('BTC', 'USDT', session)
print(bid2, 'BTC-USDT')
time.sleep(5)
给我输出:
(0.00117711,'OMG-BTC')
(6087.0,'BTC-USDT')
(0.00117613,'OMG-BTC')
(6087.0,'BTC-USDT')
(0.00117613,'OMG-BTC')
(6087.0,'BTC-USDT')
我不确定你做错了什么,但是API无法跟上请求(这似乎是一个错误,因为成功条目仍然回来了True)。您可能希望使用Bittrex的支持来提交此文件,因为我在API文档中找不到支持请求频率的任何内容。