在本文中,我们将通过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线:
11分钟k线25分钟k线315分钟k线430分钟k线51小时k线62小时k线74小时k线81日k线91周k线101月k线111季k线121年k线{klineNum} 是需要的K线数量,这个接口支持能查询最近的500根K线。
{codes} 是资产代码,比如黄金是XAUUSD
二、代码示例
假设我们需要查询黄金和白银的1分钟K线,请求地址是:- https://data.infoway.io/common/batch_kline/1/2/XAUUSD%2CXAGUSD
- // 这个地址能返回黄金和白银最近的2根1分钟K线
复制代码 完整代码如下:
[code]#include #include #include // 回调函数,用来接收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 |