C++如何查询实时贵金属行情

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

一、API请求地址

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

python 复制代码
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线,请求地址是:

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

完整代码如下:

python 复制代码
#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;
}

三、返回示例

python 复制代码
{
  "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订阅,实现更低延时的数据查询,具体可用看官网对接文档。希望这个教程能帮助你更好地实现贵金属行情查询。

相关推荐
xiaolang_8616_wjl4 小时前
c++文字游戏_闯关打怪2.0(开源)
开发语言·c++·开源
夜月yeyue4 小时前
设计模式分析
linux·c++·stm32·单片机·嵌入式硬件
无小道5 小时前
c++-引用(包括完美转发,移动构造,万能引用)
c语言·开发语言·汇编·c++
FirstFrost --sy6 小时前
数据结构之二叉树
c语言·数据结构·c++·算法·链表·深度优先·广度优先
Tanecious.7 小时前
C++--map和set的使用
开发语言·c++
Yingye Zhu(HPXXZYY)7 小时前
Codeforces 2021 C Those Who Are With Us
数据结构·c++·算法
liulilittle8 小时前
LinkedList 链表数据结构实现 (OPENPPP2)
开发语言·数据结构·c++·链表
无聊的小坏坏8 小时前
三种方法详解最长回文子串问题
c++·算法·回文串
山河木马8 小时前
前端学习C++之:.h(.hpp)与.cpp文件
前端·javascript·c++
2401_891957318 小时前
list的一些特性(C++)
开发语言·c++