北屋教程网

专注编程知识分享,从入门到精通的编程学习平台

C++如何查询实时贵金属行情(贵金属行情实时报价表)

在本文中,我们将通过C++接入贵金属实时行情数据接口,帮助你获取黄金和白银等贵金属的K线数据。我们会使用 libcurl 库进行HTTP请求,并处理API返回的数据。

一、API请求地址

贵金属的实时行情通过如下API获取:

https://data.infoway.io/common/batch_kline/{klineType}/{klineNum}/{codes}
// 申请API Key: www.infoway.io

入参说明:

{klineType} 是K线的时间周期,传入不同的值代表不同周期的K线:

1

1分钟k线

2

5分钟k线

3

15分钟k线

4

30分钟k线

5

1小时k线

6

2小时k线

7

4小时k线

8

1日k线

9

1周k线

10

1月k线

11

1季k线

12

1年k线

{klineNum} 是需要的K线数量,这个接口支持能查询最近的500根K线。

{codes} 是资产代码,比如黄金是XAUUSD

二、代码示例

假设我们需要查询黄金和白银的1分钟K线,请求地址是:

https://data.infoway.io/common/batch_kline/1/2/XAUUSD%2CXAGUSD
// 这个地址能返回黄金和白银最近的2根1分钟K线

完整代码如下:

#include <iostream>
#include <string>
#include <curl/curl.h>

// 回调函数,用来接收HTTP响应的数据
size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* out) {
    size_t total_size = size * nmemb;
    out->append((char*)contents, total_size);
    return total_size;
}

int main() {
    CURL* curl;
    CURLcode res;
    
    // 设置 API URL 和请求头
    // 申请API Key: www.infoway.io
    const std::string api_url = "https://data.infoway.io/common/batch_kline/1/2/XAUUSD%2CXAGUSD";
    
    // 初始化 libcurl
    curl_global_init(CURL_GLOBAL_DEFAULT);
    curl = curl_easy_init();
    
    if (curl) {
        // 设置 URL
        curl_easy_setopt(curl, CURLOPT_URL, api_url.c_str());
        
        // 设置请求头
        struct curl_slist* headers = NULL;
        headers = curl_slist_append(headers, "User-Agent: Mozilla/5.0");
        headers = curl_slist_append(headers, "Accept: application/json");
        headers = curl_slist_append(headers, "apiKey: yourApikey");
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
        
        // 存储响应结果
        std::string response_string;
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response_string);
        
        // 发送 GET 请求
        res = curl_easy_perform(curl);
        
        if (res != CURLE_OK) {
            std::cerr << "Curl request failed: " << curl_easy_strerror(res) << std::endl;
        } else {
            // 输出 HTTP 状态码
            long http_code = 0;
            curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http_code);
            std::cout << "HTTP code: " << http_code << std::endl;
            std::cout << "Message: " << response_string << std::endl;
        }
        
        // 清理请求头
        curl_slist_free_all(headers);
        curl_easy_cleanup(curl);
    }
    
    // 清理 libcurl
    curl_global_cleanup();
    
    return 0;
}

三、返回示例

{
  "ret": 200,
  "msg": "success",
  "traceId": "43fe7163-abb2-4a59-b6b2-2af4dc8c4141",
  "data": [
    {
      "s": "XAUUSD",
      "respList": [
        {
          "t": "1750177320",
          "h": "1950.07400",
          "o": "1949.17600",
          "l": "1948.17600",
          "c": "1950.07400",
          "v": "15.0",
          "vw": "1950.7220",
          "pc": "0.12%",
          "pca": "2.78600"
        },
        {
          "t": "1750177260",
          "h": "1949.41400",
          "o": "1948.28800",
          "l": "1948.28800",
          "c": "1949.41400",
          "v": "10.0",
          "vw": "1949.1220",
          "pc": "0.03%",
          "pca": "0.52400"
        }
      ]
    },
    {
      "s": "XAGUSD",
      "respList": [
        {
          "t": "1750177320",
          "h": "25.07400",
          "o": "25.17600",
          "l": "25.17600",
          "c": "25.07400",
          "v": "30.0",
          "vw": "25.7220",
          "pc": "0.10%",
          "pca": "0.78600"
        },
        {
          "t": "1750177260",
          "h": "25.01400",
          "o": "25.04800",
          "l": "25.04800",
          "c": "25.01400",
          "v": "20.0",
          "vw": "25.3220",
          "pc": "0.02%",
          "pca": "0.52400"
        }
      ]
    }
  ]
}

字段说明:

返回的字段包含周期内的高开低收数据,比如我们查询的是1分钟K线,那么返回的数据就是1分钟内的高开低收。

字段名

类型

必填

描述

示例值

t

String

成交时间

1747382898892

h

String

最高价

18.01

o

String

开盘价

18.01

l

String

最低价

18.01

c

String

收盘价

18.01

v

String

成交量

18000

vm

String

成交额

20000

pc

String

涨跌幅

0.12%

pca

String

涨跌额

0.11

通过以上步骤,你可以使用C++轻松接入贵金属的实时行情接口,并获取需要的K线数据。该接口也支持WebSocket订阅,实现更低延时的数据查询,具体可用看官网对接文档。希望这个教程能帮助你更好地实现贵金属行情查询。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言