You need to enable JavaScript to run this app. AutoHotkey对接UpBit WebSocket获取加密货币交易数据的实现咨询
优惠活动
大模型
产品
解决方案
定价
更多

AutoHotkey对接UpBit WebSocket获取加密货币交易数据的实现咨询

AutoHotkey对接Upbit WebSocket实时行情实现

先修正你目前踩的两个基础坑

  • 你写的订阅报文存在JSON语法错误:原报文重复嵌套了{"type":"trade"}字段,属于非法格式,Upbit服务端会直接拒绝连接,修正后的可用订阅报文为[{"ticket":"ahk_local_test_789"},{"type":"trade","codes":["KRW-BTC","KRW-ETH"]}]
  • 你参考的示例代码存在逻辑bug:原示例是针对公开echo测试站写的,里面在OnMessage回调中每收到一条消息就重新实例化WebSocket对象,会造成连接无限嵌套创建,运行后很快内存占满,必须删掉这行多余的实例化代码
  • 注意:echo测试站会原样返回你发送的内容,但Upbit的正式接口只会在收到合法订阅报文后才会推送对应行情,不能像原示例那样弹输入框让用户随便发内容

修改后可直接运行的完整代码

#Include, Websocket.Ahk

class UpbitTradeStream extends WebSocket
{
    ; 连接成功触发,自动发送订阅请求
    OnOpen(Event)
    {
        SubscribePayload := '[{"ticket":"ahk_local_test_789"},{"type":"trade","codes":["KRW-BTC","KRW-ETH"]}]'
        this.Send(SubscribePayload)
        ToolTip, Upbit WebSocket 连接成功,已获取实时行情推送权限
    }

    ; 收到服务端行情推送时触发
    OnMessage(Event)
    {
        ; 从推送的JSON中提取交易对、实时成交价字段,可直接复用你之前WinHTTP方案的正则提取逻辑
        RegExMatch(Event.data, "`"code`":`"(.*?)`"", TradingPair)
        RegExMatch(Event.data, "`"tradePrice`":(\d+\.?\d*)", CurrentTradePrice)
        ; 用屏幕角落提示代替弹窗,避免高频推送打断正常操作
        ToolTip, % TradingPair " 实时成交价: " CurrentTradePrice "`n连接状态: 正常运行"
    }

    ; 连接断开时触发
    OnClose(Event)
    {
        ToolTip, Upbit WebSocket 连接已断开
        this.Disconnect()
        ; 如需断线重连,可在此处添加延迟重新实例化连接的逻辑
    }
}

; 脚本启动后直接连接Upbit WebSocket端点
new UpbitTradeStream("wss://api.upbit.com/websocket/v1")

日常使用调整说明

  • 需要新增订阅币种时,直接修改订阅报文里的codes数组内容即可,比如要追加DOGE的行情,就把数组改成"codes":["KRW-BTC","KRW-ETH","KRW-DOGE"]
  • 如果收到的推送内容是乱码,检查所用Websocket.Ahk库的配置,确保消息接收模式为文本解析,Upbit默认返回UTF-8编码的JSON文本,不需要额外解压二进制帧
  • 原有基于WinHTTP的轮询逻辑可以保留,WebSocket作为实时推送的补充,两者获取的行情字段结构完全一致,之前写的正则提取价格的逻辑可以直接复用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 21:54:04