Go实战:如何在项目中高效获取美股行情API数据
在做Go项目时,常常会遇到需要获取美股行情数据的情况。刚开始,我也觉得“获取实时行情”听起来挺抽象的,但实践下来其实挺有规律可循的。关键是找一个接口稳定、响应快的来源。
我平时会同时用HTTP和WebSocket两种方式去拿数据。HTTP适合快速拉一批最新数据,比如一次性想看看多只股票的当日价格。WebSocket则更适合实时更新,当价格一变动就能马上收到,这在一些策略或者展示页面上特别有用。
下面是一个简单的Go示例,用HTTP获取多只股票的最新价格:
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://apis.alltick.co/market/stock/latest?symbols=AAPL,MSFT,GOOGL&token=你的Token"
resp, err := http.Get(url)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
如果想要实时接收行情变化,可以切换到WebSocket:
package main
import (
"log"
"github.com/gorilla/websocket"
)
func main() {
wsURL := "wss://apis.alltick.co/realtime/stock?token=你的Token"
conn, _, err := websocket.DefaultDialer.Dial(wsURL, nil)
if err != nil {
log.Fatal("连接失败:", err)
}
defer conn.Close()
subscribeMsg := `{"type":"subscribe","symbols":["AAPL","MSFT"]}`
conn.WriteMessage(websocket.TextMessage, []byte(subscribeMsg))
for {
_, message, err := conn.ReadMessage()
if err != nil {
log.Println("读取消息失败:", err)
break
}
log.Printf("行情更新: %s\n", message)
}
}
拿到数据后,我通常会先简单整理成表格,方便自己快速浏览:
| 股票代码 | 最新价 | 涨跌幅 |
|---|---|---|
| AAPL | 172.34 | +0.45% |
| MSFT | 314.22 | -0.12% |
| GOOGL | 132.18 | +0.78% |
在项目里,把数据先拿到本地或者缓存起来,再做分析或展示,整个流程会顺很多。像 AllTick API 这样的服务,文档清晰,HTTP和WebSocket都覆盖,直接用起来就比较省心。
总的来说,Go项目里结合HTTP和WebSocket获取美股行情,不光效率高,而且对后续数据处理和展示都很友好。稍微动动手,就能把行情数据随时放在自己想要的位置。
本作品采用《CC 协议》,转载必须注明作者和本文链接
learnnnn 的个人博客
关于 LearnKu
推荐文章: