修改Nonce值 - seconds/milliseconds/microseconds
默认的nonce是以秒计的32位unix时间戳。如果你希望进行更频繁的 私有请求,应该使用毫秒计的nonce来改写,否则最快才能每秒发一个请求。 当你达到交易所限流值时,大多数交易所都会进行节流,请参考具体 交易所的API文档。
要重设nonce值的话,更简单的方式是再创建一个用于访问私有api 的密钥对。
有些情况下你没办法创建新的密钥,比如没有权限或者其他原因。 这时也有办法改写nonce值,可以使用ccxt统一api中市场基类的以下方法:
- seconds (): 返回秒计的unix时间戳
- milliseconds (): 返回毫秒计的unix时间戳
- microseconds (): 返回微秒计的unix时间戳
有的交易所在API文档中搞混了毫秒和微秒,原谅他们吧。你可以使用 上面的这些方法重设nocne值。示例代码如下。
JavaScript:
// A: custom nonce redefined in constructor parameters
let nonce = 1
let kraken1 = new ccxt.kraken ({ nonce: () => nonce++ })
// B: nonce redefined explicitly
let kraken2 = new ccxt.kraken ()
kraken2.nonce = function () { return nonce++ } // uses same nonce as kraken1
// C: milliseconds nonce
let kraken3 = new ccxt.kraken ({
nonce: function () { return this.milliseconds () },
})
// D: newer ES syntax
let kraken4 = new ccxt.kraken ({
nonce () { return this.milliseconds () },
})
Python:
# A: the shortest
gdax = ccxt.gdax({'nonce': ccxt.Exchange.milliseconds})
# B: custom nonce
class MyKraken(ccxt.kraken):
n = 1
def nonce(self):
return self.n += 1
# C: milliseconds nonce
class MyBitfinex(ccxt.bitfinex):
def nonce(self):
return self.milliseconds()
# D: milliseconds nonce inline
hitbtc = ccxt.hitbtc({
'nonce': lambda: int(time.time() * 1000)
})
# E: milliseconds nonce
acx = ccxt.acx({'nonce': lambda: ccxt.Exchange.milliseconds()})
PHP:
// A: custom nonce value
class MyOKCoinUSD extends \ccxt\okcoinusd {
public function __construct ($options = array ()) {
parent::__construct (array_merge (array ('i' => 1), $options));
}
public function nonce () {
return $this->i++;
}
}
// B: milliseconds nonce
class MyZaif extends \ccxt\zaif {
public function __construct ($options = array ()) {
parent::__construct (array_merge (array ('i' => 1), $options));
}
public function nonce () {
return $this->milliseconds ();
}
}