0

一个 python 脚本正在运行,但现在没有。

                public_client = bitstamp.client.Public()

                data=backTestBitCoin.getHistoricalPrices();

                trading_client = bitstamp.client.Trading(username='AAA', key='BBB', secret='CCC')
                tick=trading_client.ticker();

                lastBid = float(tick['bid']);
                lastAsk = float(tick['ask']);
                balances = trading_client.account_balance(); #error thrown from this line

我收到以下错误:

                    return self._post("balance/", return_json=True)
                  File "/Library/Python/2.7/site-packages/bitstamp/client.py", line 47, in _post
                    return self._request(requests.post, *args, **kwargs)
                  File "/Library/Python/2.7/site-packages/bitstamp/client.py", line 80, in _request
                    raise BitstampError(error)
                bitstamp.client.BitstampError: Invalid nonce

有没有人经历过这个?对图书馆不太熟悉,因此不确定是什么原因造成的。

4

1 回答 1

1

生成一个新的 api 密钥/秘密解决了这个问题。我相信这是由混合使用 php api 和 python api 或 iphone Bitstamp 应用程序引起的。我会证实这个怀疑,但整体解决方案是拔下它并重新插入。


缩写解决方案:我的问题来自使用以下 php 和 python 库,

php 蟒蛇

两者都是 A+ 优秀且易于使用。

错误的产生是因为他们创建随机数的方法存在以下差异(在我看来,两者都不是更“正确”,只是不同)。

php

                // generate a nonce as microtime, with as-string handling to avoid problems with 32bits systems
                $mt = explode(' ', microtime());
                $req['nonce'] = $mt[1] . substr($mt[0], 2, 6);
                $req['key'] = $key;
                $req['signature'] = $this->get_signature($req['nonce']);

蟒蛇

                self._nonce = max(int(time.time()), nonce)

哪里time.time()给你:1403366728.072785microtime()给你:1403366859731819。

我提出的解决方案是将python代码更改为:

self._nonce = max(int(time.time()*1000000), nonce)错误就解决了。

于 2014-06-19T12:26:07.280 回答