我使用以下代码访问 Binance API,拉取 BTC/USDT 的最后 200 个 k 线,然后尝试生成 EMA 50 作为数据帧中的一列:
client = Client('PUBLIC_KEY', 'PRIVATE_KEY')
client.API_URL = 'https://testnet.binance.vision/api'
#obtain historical data for indicator calculation
klines = client.get_historical_klines('BTCUSDT', '1d', limit=200)
klines = np.array(klines)
#convert bars to df
df = pd.DataFrame(klines.reshape(-1,12),dtype=float, columns = ('Open Time',
'Open',
'High',
'Low',
'Close',
'Volume',
'Close time',
'Quote asset volume',
'Number of trades',
'Taker buy base asset volume',
'Taker buy quote asset volume',
'Ignore'))
df['Open Time'] = pd.to_datetime(df['Open Time'], unit='ms')
#run indicators
df['ema50'] = ta.ema(df['Close'], length=50)
尽管有足够多的值来计算 EMA,但我在结果数据帧列中得到了所有 None 值。谁能告诉我我做错了什么?
在检查我的数据帧索引后我意识到,无论请求大小如何,币安测试网仅提供最多 20 条历史 K 线。通过切换到常规的 binance API,我能够获取所需的数据。