Go 快速获取实时外汇行情方法
在开发 Go 项目时,获取稳定的外汇行情是常见需求。通过 WebSocket 或 REST 接口,可以实时获取汇率波动和历史数据。
建立 WebSocket 连接
Go 中使用 WebSocket 订阅外汇行情,可以获得低延迟的 tick 数据。以 AllTick API 为例,可以这样订阅常用货币对:
package main
import (
"log"
"github.com/gorilla/websocket"
)
func main() {
url := "wss://realtime.alltick.co/forex"
conn, _, err := websocket.DefaultDialer.Dial(url, nil)
if err != nil {
log.Fatal("连接失败:", err)
}
defer conn.Close()
// 订阅 EURUSD 和 USDJPY
subscribe := `{"action":"subscribe","symbols":["EURUSD","USDJPY"]}`
conn.WriteMessage(websocket.TextMessage, []byte(subscribe))
for {
_, msg, err := conn.ReadMessage()
if err != nil {
log.Println("读取错误:", err)
return
}
log.Printf("行情数据: %s\n", msg)
}
}
查询历史数据
有时需要分析趋势,可以通过 REST 接口获取历史 K 线数据:
package main
import (
"encoding/json"
"fmt"
"net/http"
)
func main() {
url := "https://apis.alltick.co/forex/kline?symbol=EURUSD&period=1h&limit=10"
resp, _ := http.Get(url)
defer resp.Body.Close()
var data []map[string]interface{}
json.NewDecoder(resp.Body).Decode(&data)
for _, item := range data {
fmt.Println(item)
}
}
汇率数据参考表
| 货币对 | 最新价 | 日涨跌幅 |
|---|---|---|
| EURUSD | 1.0865 | +0.12% |
| USDJPY | 134.12 | -0.05% |
| GBPUSD | 1.2501 | +0.08% |
这种方式可以快速在 Go 项目中获取实时和历史外汇数据。结合定时任务或 WebSocket 持续订阅,就能形成完整的数据流,支持策略分析和可视化展示。
本作品采用《CC 协议》,转载必须注明作者和本文链接
learnnnn 的个人博客
关于 LearnKu