Python bittrex几个市场

时间:2017-10-28 00:25:36

标签: python python-requests

我使用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

但是在输出中,这就像它们相交一样。有时,另一种货币的价格是针对一种货币给出的。有人能告诉我我做错了吗?

1 个答案:

答案 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文档中找不到支持请求频率的任何内容。