如何在Excel中获取Binance和FTX实时价格及VBA代码报错修复
代码报错修复方案
- 依赖库缺失报错
你当前使用的代码依赖3类外部组件,未正确配置就会直接报错,按以下步骤修复:- 启用Scripting运行库:打开VBA编辑器(快捷键
Alt+F11),点击「工具」→「引用」,勾选「Microsoft Scripting Runtime」,解决Dictionary对象无法创建的问题。 - 导入JSON解析库:代码中使用的
JsonConverter来自VBA-Json组件,需要将对应的bas文件导入当前VBA工程,否则无法解析接口返回的JSON数据。 - 补全辅助函数:代码中调用的
DictToString、ComputeHash_C、WebRequestURL均为原仓库的工具函数,你仅复制了业务逻辑代码未复制工具模块,直接运行会报「子程序或函数未定义」错误,需要把原仓库所有辅助模块的代码完整复制到你的工程中。
- 启用Scripting运行库:打开VBA编辑器(快捷键
- 未定义变量报错
代码中Apikey = apikey_binance2、secretKey = secretkey_binance2两行引用了未定义的公共常量,直接删除这两行,将你自己的Binance API密钥填写到上方Apikey = "your api key here"、secretKey = "your secret key here"的对应位置即可。 - 接口请求报错
- 原代码使用的Binance v1接口已部分下线,将
PublicBinance函数中的/api/v1/路径替换为/api/v3/即可解决404问题。 - 私有接口签名要求参数按ASCII码升序排列,如果你的
DictToString函数未实现排序逻辑,会触发Binance返回签名无效错误,调整参数序列化逻辑按规则排序即可。
- 原代码使用的Binance v1接口已部分下线,将
轻量化实现方案(推荐)
你仅需要获取实时价格,不需要调用交易类私有接口,也不需要冗余的测试逻辑,使用以下极简代码即可实现每秒自动刷新Binance加密货币价格,无需API密钥:
' 提前导入VBA-Json库并启用Microsoft Scripting Runtime Public refreshInterval As Double ' 启动自动刷新 Sub StartRefreshPrice() refreshInterval = Now + TimeValue("00:00:01") GetCryptoPrice Application.OnTime refreshInterval, "StartRefreshPrice" End Sub ' 停止自动刷新 Sub StopRefreshPrice() On Error Resume Next Application.OnTime EarliestTime:=refreshInterval, Procedure:="StartRefreshPrice", Schedule:=False End Sub ' 获取实时价格并写入单元格 Sub GetCryptoPrice() Dim http As Object, json As Object, symbol As String Set http = CreateObject("MSXML2.XMLHTTP.6.0") ' 可修改symbol获取对应交易对价格,例如BTCUSDT、ETHUSDT symbol = "BTCUSDT" http.Open "GET", "https://api.binance.com/api/v3/ticker/price?symbol=" & symbol, False http.Send Set json = JsonConverter.ParseJson(http.ResponseText) ' 将价格写入Sheet1的A1单元格,可自行调整位置 ThisWorkbook.Sheets("Sheet1").Range("A1").Value = json("price") Set http = Nothing Set json = Nothing End Sub
注意:FTX交易所已停止运营,无法对接接口获取实时价格,如需对接其他交易所可替换对应公共行情接口即可。
内容的提问来源于stack exchange,提问作者Ali Ahmer Rahil
相关产品推荐
相关产品推荐

