博客 / 詳情

返回

用一個API接口批量查詢A股、港股、美股的K線數據

在實際開發中,我們經常需要從多個股票市場中獲取行情數據,尤其是在構建交易所、量化交易系統或跨市場套利策略時,對接實時、多市場的行情接口幾乎是剛需。然而,市面上大部分的行情服務產品只支持單一市場,比如只提供 A 股或美股數據;即便支持多個市場,也往往需要分別調用不同的接口,增加了開發成本和維護複雜度。

特別是對於K線數據的實時獲取需求,不少接口要麼延遲大、要麼授權複雜、價格昂貴,真正能夠同時支持 A 股、港股和美股,並能批量返回多隻股票的實時K線數據的接口,可以説是少之又少。

在本文中,我們將使用Infoway的API接口,通過一次請求即可批量獲取三大市場(A股、港股、美股)的K線行情。這種接口特別適合用於:

  • 構建支持多市場的交易終端或交易所
  • 搭建量化交易系統(如 CTA、擇時、套利等)
  • 實時監控跨市場價格波動與機會

批量獲取K線

我們可以在一個HTTP請求中查詢A股、港股、和美股的K線:

package org.example.ws;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
 
public class HttpExample {
    public static void main(String[] args) {
        try {
            // 定義請求URL,包含A股、港股、美股代碼
            String apiUrl = "https://data.infoway.io/stock/batch_kline/1/10/000001.SZ%2C0700.HK%2CAMZN.US";
            URL url = new URL(apiUrl);
 
            // 創建HTTP連接
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
 
            // 設置請求方法為GET
            connection.setRequestMethod("GET");
 
            // 設置請求頭
            connection.setRequestProperty("User-Agent", "Mozilla/5.0");
            connection.setRequestProperty("Accept", "application/json");
 
            // 先在官網 https://infoway.io 申請免費API Key
            connection.setRequestProperty("apiKey", "yourApikey");
 
            // 獲取響應碼
            int responseCode = connection.getResponseCode();
            System.out.println("HTTP code: " + responseCode);
 
            // 讀取響應內容
            BufferedReader reader;
            if (responseCode == HttpURLConnection.HTTP_OK) {
                reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            } else {
                reader = new BufferedReader(new InputStreamReader(connection.getErrorStream()));
            }
 
            String line;
            StringBuilder response = new StringBuilder();
 
            while ((line = reader.readLine()) != null) {
                response.append(line);
            }
 
            reader.close();
 
            // 打印響應內容
            System.out.println("message: " + response);
 
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

返回示例

[
    {
        "s": "000001.SZ",        // 平安銀行 A股
        "o": "11.23",
        "h": "11.28",
        "l": "11.22",
        "c": "11.25",
        "pca": "0.02",
        "pfr": "0.18%",
        "v": "258400",
        "vw": "11.2458",
        "t": 1747550648097,
        "ty": 1
    },
    {
        "s": "0700.HK",          // 騰訊控股 港股
        "o": "385.50",
        "h": "386.90",
        "l": "383.20",
        "c": "384.10",
        "pca": "-1.40",
        "pfr": "-0.36%",
        "v": "923400",
        "vw": "384.93",
        "t": 1747550648097,
        "ty": 1
    },
    {
        "s": "AMZN.US",          // 亞馬遜 美股
        "o": "185.10",
        "h": "186.75",
        "l": "183.60",
        "c": "185.90",
        "pca": "0.80",
        "pfr": "0.43%",
        "v": "456200",
        "vw": "185.42",
        "t": 1747550648097,
        "ty": 1
    }
]
user avatar chazhoudeqingchun 頭像 fedl 頭像 teamcode 頭像 duokeli 頭像 codelogs 頭像 lindexi 頭像 kubesphere 頭像 shenlan_5f8fa163e8542 頭像 ourbmc 頭像 kinfuy 頭像 ZYPLJ 頭像 chengshudeyuechi_ewr3r2 頭像
28 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.