You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行币安API脚本报错code=-1100 symbol参数含非法字符如何解决?

APIError(code=-1100): Illegal characters found in parameter 'symbol'; legal range is '^[A-Z0-9-_.]{1,20}$'

错误原因

  • 传参错误:调用get_symbol_ticker时你写的是symbol=(['moedas']),实际传入的是字符串'moedas',不是你前面定义的交易对列表变量moedas,这个字符串包含不符合规则的字符,直接触发报错。
  • 参数误用:get_symbol_ticker的symbol参数仅支持传入单个交易对的字符串,如果你要查询多个交易对,需要使用symbols参数传入列表,你同时用错了参数名和传参格式。
  • 后续逻辑漏洞:即使修好了传参问题,你后续直接把tickers['symbol']传入get_historical_klines也会报错,批量查询返回的tickers是列表格式,每个元素才是对应单个交易对的信息,无法直接取symbol字段。

修复方案

如果你需要拉取列表中所有交易对的5分钟K线,修正后的完整代码如下:

import binancekeys
from binance.client import Client
import pandas as pd

client = Client(binancekeys.api_key, binancekeys.api_secret, tld='com')
moedas = ['ETCUSDT', 'ADAUSDT', 'USDTBRL', 'BTCUSDT']

all_kline_data = []
# 逐个遍历交易对拉取K线
for trade_symbol in moedas:
    kline = client.get_historical_klines(trade_symbol, Client.KLINE_INTERVAL_5MINUTE, "5 minute ago UTC")
    # 给K线添加交易对标识,方便后续区分不同币种的数据
    for item in kline:
        item.insert(0, trade_symbol)
    all_kline_data.extend(kline)

# 生成DataFrame并设置表头
df = pd.DataFrame(all_kline_data)
tabela = df.set_axis(['Symbol','Time', 'Open', 'High','Low','Close','Volume','Close Time','Asset Volume','Number Of Trades','Buy Base','Buy Quote','Ignore'], axis=1)

print(tabela)

核心修改点

  • 去掉了moedas变量的引号,如果需要批量查ticker可使用正确的参数名symbols,也可以直接循环遍历交易对列表拉取K线,省去多余的ticker查询步骤。
  • 新增循环逻辑逐个拉取单个交易对的K线,符合get_historical_klines的传参要求。
  • 修正了原表头的拼写错误,把Buy Bae,改为Buy Base,删除多余逗号。

如果你只需要查询单个交易对的K线,直接指定单个交易对字符串即可,不需要循环:

# 示例:仅拉取BTCUSDT的5分钟K线
histo = client.get_historical_klines('BTCUSDT', Client.KLINE_INTERVAL_5MINUTE, "5 minute ago UTC")

内容的提问来源于stack exchange,提问作者Carlos Eduardo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 16:06:03