C++如何查询实时贵金属行情
一、API请求地址
贵金属的实时行情通过如下API获取:
代码语言:python
代码运行次数:0
运行
AI代码解释
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
代码运行次数:0
运行
AI代码解释
https://data.infoway.io/common/batch_kline/1/2/XAUUSD%2CXAGUSD
// 这个地址能返回黄金和白银最近的2根1分钟K线完整代码如下:
代码语言:python
代码运行次数:0
运行
AI代码解释
#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.ioconst std::string api_url = "https://data.infoway.io/common/batch_kline/1/2/XAUUSD%2CXAGUSD";// 初始化 libcurlcurl_global_init(CURL_GLOBAL_DEFAULT);curl = curl_easy_init();if (curl) {// 设置 URLcurl_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);}// 清理 libcurlcurl_global_cleanup();return 0;
}三、返回示例
代码语言:python
代码运行次数:0
运行
AI代码解释
{"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 | 是 | 成交时间 |
|
h | String | 是 | 最高价 |
|
o | String | 是 | 开盘价 |
|
l | String | 是 | 最低价 |
|
c | String | 是 | 收盘价 |
|
v | String | 是 | 成交量 |
|
vm | String | 是 | 成交额 |
|
pc | String | 是 | 涨跌幅 |
|
pca | String | 是 | 涨跌额 |
|
通过以上步骤,你可以使用C++轻松接入贵金属的实时行情接口,并获取需要的K线数据。该接口也支持WebSocket订阅,实现更低延时的数据查询,具体可用看官网对接文档。希望这个教程能帮助你更好地实现贵金属行情查询。
