亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Go 如何接入實時外匯行情 API

標簽:
Go 資訊 API

如果你在用 Go 写交易系统、监控工具或市场数据采集模块,很可能会遇到通过 WebSocket 实时获取外汇行情的需求。下面是一份实用的接入教程,使用的是
提供的实时行情 API。本文以 EURUSD 的 1 分钟 K 线为例。

第一步:准备工作

确保你已安装 Go 环境,并获取了 API Key(可在官网免费申请)。

安装 WebSocket 客户端库:

go get nhooyr.io/websocket

我们使用的是 nhooyr.io/websocket,它轻量、现代、支持上下文控制。

第二步:建立连接

WebSocket 地址如下:

wss://data.infoway.io/ws?business=forex&apikey=YourAPIKey

你需要在地址中替换为你自己的 API key。

连接代码:

conn, _, err := websocket.Dial(ctx, url, nil)
if err != nil {
	log.Fatalf("WebSocket连接失败: %v", err)
}
defer conn.Close(websocket.StatusNormalClosure, "关闭连接")

第三步:发送订阅消息

你需要发送一条初始化消息,告诉服务器你要订阅哪个品种、哪种周期的 K 线。例如,订阅 EURUSD 的 1 分钟 K 线:

initMsg := map[string]interface{}{
	"code":  10004,
	"trace": "your-trace-id", // 可使用uuid
	"data": map[string]interface{}{
		"arr": []map[string]interface{}{
			{
				"type":  1,
				"codes": "EURUSD",
			},
		},
	},
}
msgBytes, _ := json.Marshal(initMsg)
conn.Write(ctx, websocket.MessageText, msgBytes)

第四步:设置心跳 Ping

WebSocket 连接需要保持活跃状态,推荐每 30 秒发送一次 ping:

go func() {
	ticker := time.NewTicker(30 * time.Second)
	defer ticker.Stop()
	for range ticker.C {
		pingMsg := map[string]interface{}{
			"code":  10010,
			"trace": "your-trace-id",
		}
		pingBytes, _ := json.Marshal(pingMsg)
		conn.Write(ctx, websocket.MessageText, pingBytes)
	}
}()

第五步:接收行情数据

WebSocket 会持续推送行情数据。你只需监听并处理消息:

for {
	_, msg, err := conn.Read(ctx)
	if err != nil {
		log.Printf("读取消息失败: %v", err)
		break
	}
	fmt.Printf("收到消息: %s\n", string(msg))
}

收到的 JSON 格式数据包含开盘价、最高价、最低价、收盘价、时间戳等字段。

常见问题

连接失败:检查 API key 是否正确,网络是否支持 WebSocket。

收不到数据:确认订阅的品种代码无误,例如 EURUSD,并确保服务器返回了确认消息。

连接断开:可能是长时间无 Ping 消息,确保 Ping 机制正确运行。

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消