首页 > 解决方案 > APIError(code=-1100): 在参数'symbol'中发现非法字符;合法范围是 '^[A-Z0-9-_.]{1,20}$'

问题描述

import binancekeys
from binance.client import Client
from datetime import datetime
from twisted.internet import reactor
import pandas as pd

client = Client(binancekeys.api_key, binancekeys.api_secret, tld='com')
moedas = ['ETCUSDT', 'ADAUSDT', 'USDTBRL', 'BTCUSDT']
tickers = client.get_symbol_ticker(symbol=(['moedas']))
histo = client.get_historical_klines(tickers['symbol'], Client.KLINE_INTERVAL_5MINUTE, "5 minute ago UTC")

df = pd.DataFrame(histo)

tabela = df.set_axis(['Time', 'Open', 'High','Low','Close','Volume','Close Time','Asset Volume','Number Of Trades','Buy Bae,','Buy Quote','Ignore'], axis=1)

print(tabela)

当我执行这个脚本时,我收到了这个错误: APIError(code=-1100): Illegal characters found in parameter 'symbol'; 合法范围是 '^[A-Z0-9-_.]{1,20}$' - 知道吗?

标签: pythonbinancebinance-api-client

解决方案


您收到此错误,因为您get_symbol_tickers()使用列表调用(而不是单个符号,请查看文档文档)。

如果您想要多个符号,我建议在get_symbol_tickers()不指定任何符号的情况下调用,然后在进一步的步骤中过滤所需的符号。

在下面,您可以找到解决问题的可能方法:

from binance.client import Client
import pandas as pd

# Selection of symbols
moedas = ['ETCUSDT', 'ADAUSDT', 'USDTBRL', 'BTCUSDT']

# Initialize client, no key or secret needed.
client = Client()

# Get all tickers and keep only the ones in moedas list
r = client.get_symbol_ticker()
tickers = {i['symbol']: i['price'] for i in r if i['symbol'] in moedas}

# Create empty dict and get klines in iteration
columns = [
    'Time', 'Open', 'High', 'Low', 'Close', 'Volume', 'Close Time', 'Asset Volume',
    'Number Of Trades', 'Buy Base', 'Buy Quote', 'Ignore',
]
klines = {}
for symbol in moedas:
    r_klines = client.get_historical_klines(
        symbol, Client.KLINE_INTERVAL_5MINUTE,
        "5 minute ago UTC"
    )
    df = pd.DataFrame(r_klines, columns=columns)
    klines[symbol] = df

这将使用 as 键的符号和 kline 数据框作为值返回变量klinesdictmoedas不确定,如果这是您要查找的输出)。


推荐阅读