Latest commit

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

iTick C++ SDK

C++ 语言版本的 iTick API SDK,提供基础数据、股票IPO、股票市场假期、股票除权除息、股票实时数据、指数实时数据、期货实时数据、基金实时数据、外汇实时数据、加密货币实时数据的 REST API 查询和 WebSocket 实时数据订阅功能。

官网地址:https://itick.org

功能特性

  • 支持 REST API 查询基础、股票、指数、期货、基金、外汇、加密货币数据
  • 支持 WebSocket 实时数据订阅
  • 自动重连机制
  • 心跳保持连接
  • 回调式事件处理

系统要求

  • C++17 或更高版本
  • CMake 3.10 或更高版本
  • libcurl 7.x 或更高版本

安装

从源码构建

cd cpp
mkdir build
cd build
cmake ..
make

集成到您的项目

使用 CMake

将 SDK 目录复制到您的项目中,并在您的 CMakeLists.txt 中添加:

add_subdirectory(path/to/github-sdk)
target_link_libraries(your_targetPRIVATEgithub-sdk)
target_include_directories(your_targetPRIVATEpath/to/github-sdk/src)

手动集成

src/ 目录下的头文件和源文件添加到您的项目中,并链接 libcurl。

快速开始

初始化客户端

#include"client.h"usingnamespaceio::github::itick::sdk;intmain() {
std::string token = "your_api_token";
Client client(token);
return0;
}

REST API 使用

外汇数据查询

// 获取外汇实时成交
std::string tick = client.getForexTick("GB", "EURUSD");
std::cout << tick << std::endl;
// 获取外汇实时报价
std::string quote = client.getForexQuote("GB", "EURUSD");
std::cout << quote << std::endl;
// 获取外汇实时盘口
std::string depth = client.getForexDepth("GB", "EURUSD");
std::cout << depth << std::endl;
// 获取外汇历史K线
std::string kline = client.getForexKline("GB", "EURUSD", 2, 10);
std::cout << kline << std::endl;

股票数据查询

// 获取股票实时成交
std::string tick = client.getStockTick("US", "AAPL");
std::cout << tick << std::endl;
// 获取股票实时报价
std::string quote = client.getStockQuote("US", "AAPL");
std::cout << quote << std::endl;
// 获取股票实时盘口
std::string depth = client.getStockDepth("US", "AAPL");
std::cout << depth << std::endl;
// 获取股票历史K线
std::string kline = client.getStockKline("US", "AAPL", 2, 10);
std::cout << kline << std::endl;

加密货币数据查询

// 获取加密货币实时成交
std::string tick = client.getCryptoTick("BA", "BTCUSDT");
std::cout << tick << std::endl;
// 获取加密货币实时报价
std::string quote = client.getCryptoQuote("BA", "BTCUSDT");
std::cout << quote << std::endl;
// 获取加密货币实时盘口
std::string depth = client.getCryptoDepth("BA", "BTCUSDT");
std::cout << depth << std::endl;
// 获取加密货币历史K线
std::string kline = client.getCryptoKline("BA", "BTCUSDT", 2, 10);
std::cout << kline << std::endl;

WebSocket 使用

SDK 提供了增强的 WebSocket 功能,包括自动重连和心跳保持,用户无需手动管理连接状态。

设置回调函数

// 设置消息处理器
client.setMessageHandler([](const std::string& message) {
std::cout << "Received WebSocket message: " << message << std::endl;
});
// 设置错误处理器
client.setErrorHandler([](const std::string& error) {
std::cerr << "WebSocket error: " << error << std::endl;
});
// 设置打开处理器
client.setOpenHandler([]() {
std::cout << "WebSocket connected" << std::endl;
});
// 设置关闭处理器
client.setCloseHandler([]() {
std::cout << "WebSocket closed" << std::endl;
});

连接和订阅

// 连接外汇 WebSocket
client.connectForexWebSocket();
// 发送订阅消息
client.sendWebSocketMessage("{\"action\": \"subscribe\", \"codes\": [\"EURUSD\"]}");
// 等待一段时间std::this_thread::sleep_for(std::chrono::seconds(5));
// 检查连接状态
std::cout << "WebSocket connected: " << (client.isWebSocketConnected() ? "true" : "false") << std::endl;
// 关闭 WebSocket
client.closeWebSocket();

其他 WebSocket 连接

// 连接股票 WebSocket
client.connectStockWebSocket();
// 连接加密货币 WebSocket
client.connectCryptoWebSocket();

API 接口列表

基础 (Basics)

方法说明
getSymbolList获取符号列表
getSymbolHolidays获取节假日信息

股票 (Stock)

方法说明
getStockInfo获取股票信息
getStockIPO获取股票IPO信息
getStockSplit获取股票分拆信息
getStockTick获取股票实时成交
getStockQuote获取股票实时报价
getStockDepth获取股票实时盘口
getStockKline获取股票历史K线
getStockTicks获取股票批量实时成交
getStockQuotes获取股票批量实时报价
getStockDepths获取股票批量实时盘口
getStockKlines获取股票批量历史K线
connectStockWebSocket连接股票 WebSocket

指数 (Indices)

方法说明
getIndicesTick获取指数实时成交
getIndicesQuote获取指数实时报价
getIndicesDepth获取指数实时盘口
getIndicesKline获取指数历史K线
getIndicesTicks获取指数批量实时成交
getIndicesQuotes获取指数批量实时报价
getIndicesDepths获取指数批量实时盘口
getIndicesKlines获取指数批量历史K线
connectIndicesWebSocket连接指数 WebSocket

期货 (Futures)

方法说明
getFutureTick获取期货实时成交
getFutureQuote获取期货实时报价
getFutureDepth获取期货实时盘口
getFutureKline获取期货历史K线
getFutureTicks获取期货批量实时成交
getFutureQuotes获取期货批量实时报价
getFutureDepths获取期货批量实时盘口
getFutureKlines获取期货批量历史K线
connectFutureWebSocket连接期货 WebSocket

基金 (Funds)

方法说明
getFundTick获取基金实时成交
getFundQuote获取基金实时报价
getFundDepth获取基金实时盘口
getFundKline获取基金历史K线
getFundTicks获取基金批量实时成交
getFundQuotes获取基金批量实时报价
getFundDepths获取基金批量实时盘口
getFundKlines获取基金批量历史K线
connectFundWebSocket连接基金 WebSocket

外汇 (Forex)

方法说明
getForexTick获取外汇实时成交
getForexQuote获取外汇实时报价
getForexDepth获取外汇实时盘口
getForexKline获取外汇历史K线
getForexTicks获取外汇批量实时成交
getForexQuotes获取外汇批量实时报价
getForexDepths获取外汇批量实时盘口
getForexKlines获取外汇批量历史K线
connectForexWebSocket连接外汇 WebSocket

加密货币 (Crypto)

方法说明
getCryptoTick获取加密货币实时成交
getCryptoQuote获取加密货币实时报价
getCryptoDepth获取加密货币实时盘口
getCryptoKline获取加密货币历史K线
getCryptoTicks获取加密货币批量实时成交
getCryptoQuotes获取加密货币批量实时报价
getCryptoDepths获取加密货币批量实时盘口
getCryptoKlines获取加密货币批量历史K线
connectCryptoWebSocket连接加密货币 WebSocket

WebSocket 功能说明

自动重连

SDK 内置自动重连机制,当网络异常或连接断开时,会自动尝试重新连接:

  • 重连间隔:5 秒
  • 最大重连次数:10 次
  • 重连成功后自动恢复订阅

心跳保持

SDK 自动维护 WebSocket 连接的心跳:

  • 心跳间隔:30 秒
  • 自动发送 ping 消息保持连接活跃

连接状态检查

// 检查 WebSocket 是否连接bool connected = client.isWebSocketConnected();

完整示例

#include<iostream>
#include"client.h"
#include<thread>
#include<chrono>usingnamespaceio::github::itick::sdk;intmain() {
try {
// 初始化客户端
std::string token = "your_api_token";
Client client(token);
// 设置 WebSocket 消息处理器
client.setMessageHandler([](const std::string& message) {
std::cout << "Received WebSocket message: " << message << std::endl;
});
// 设置 WebSocket 错误处理器
client.setErrorHandler([](const std::string& error) {
std::cerr << "WebSocket error: " << error << std::endl;
});
// 设置 WebSocket 打开处理器
client.setOpenHandler([]() {
std::cout << "WebSocket connected" << std::endl;
});
// 设置 WebSocket 关闭处理器
client.setCloseHandler([]() {
std::cout << "WebSocket closed" << std::endl;
});
// 测试 REST API
std::cout << "Testing forex tick..." << std::endl;
std::string tick = client.getForexTick("GB", "EURUSD");
std::cout << tick << std::endl;
// 测试 WebSocket
std::cout << "\nTesting WebSocket..." << std::endl;
client.connectForexWebSocket();
// 发送订阅消息
client.sendWebSocketMessage("{\"action\": \"subscribe\", \"codes\": [\"EURUSD\"]}");
// 等待一段时间
std::cout << "Waiting for WebSocket messages..." << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(5));
// 检查连接状态
std::cout << "WebSocket connected: " << (client.isWebSocketConnected() ? "true" : "false") << std::endl;
// 关闭 WebSocket
client.closeWebSocket();
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return0;
}

依赖项

  • libcurl - HTTP 客户端库

文档

详细 API 文档请参考:https://docs.itick.org

许可证

MIT License

About

C++ 版本的 iTick API SDK,提供基础数据、股票IPO、股票市场假期、股票除权除息、股票实时数据、指数实时数据、期货实时数据、基金实时数据、外汇实时数据、加密货币实时数据的 REST API 查询和 WebSocket 实时数据订阅功能。

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

iTick C++ SDK

C++ 语言版本的 iTick API SDK,提供基础数据、股票IPO、股票市场假期、股票除权除息、股票实时数据、指数实时数据、期货实时数据、基金实时数据、外汇实时数据、加密货币实时数据的 REST API 查询和 WebSocket 实时数据订阅功能。

官网地址:https://itick.org

功能特性

  • 支持 REST API 查询基础、股票、指数、期货、基金、外汇、加密货币数据
  • 支持 WebSocket 实时数据订阅
  • 自动重连机制
  • 心跳保持连接
  • 回调式事件处理

系统要求

  • C++17 或更高版本
  • CMake 3.10 或更高版本
  • libcurl 7.x 或更高版本

安装

从源码构建

cd cpp
mkdir build
cd build
cmake ..
make

集成到您的项目

使用 CMake

将 SDK 目录复制到您的项目中,并在您的 CMakeLists.txt 中添加:

add_subdirectory(path/to/github-sdk)
target_link_libraries(your_targetPRIVATEgithub-sdk)
target_include_directories(your_targetPRIVATEpath/to/github-sdk/src)

手动集成

src/ 目录下的头文件和源文件添加到您的项目中,并链接 libcurl。

快速开始

初始化客户端

#include"client.h"usingnamespaceio::github::itick::sdk;intmain() {
std::string token = "your_api_token";
Client client(token);
return0;
}

REST API 使用

外汇数据查询

// 获取外汇实时成交
std::string tick = client.getForexTick("GB", "EURUSD");
std::cout << tick << std::endl;
// 获取外汇实时报价
std::string quote = client.getForexQuote("GB", "EURUSD");
std::cout << quote << std::endl;
// 获取外汇实时盘口
std::string depth = client.getForexDepth("GB", "EURUSD");
std::cout << depth << std::endl;
// 获取外汇历史K线
std::string kline = client.getForexKline("GB", "EURUSD", 2, 10);
std::cout << kline << std::endl;

股票数据查询

// 获取股票实时成交
std::string tick = client.getStockTick("US", "AAPL");
std::cout << tick << std::endl;
// 获取股票实时报价
std::string quote = client.getStockQuote("US", "AAPL");
std::cout << quote << std::endl;
// 获取股票实时盘口
std::string depth = client.getStockDepth("US", "AAPL");
std::cout << depth << std::endl;
// 获取股票历史K线
std::string kline = client.getStockKline("US", "AAPL", 2, 10);
std::cout << kline << std::endl;

加密货币数据查询

// 获取加密货币实时成交
std::string tick = client.getCryptoTick("BA", "BTCUSDT");
std::cout << tick << std::endl;
// 获取加密货币实时报价
std::string quote = client.getCryptoQuote("BA", "BTCUSDT");
std::cout << quote << std::endl;
// 获取加密货币实时盘口
std::string depth = client.getCryptoDepth("BA", "BTCUSDT");
std::cout << depth << std::endl;
// 获取加密货币历史K线
std::string kline = client.getCryptoKline("BA", "BTCUSDT", 2, 10);
std::cout << kline << std::endl;

WebSocket 使用

SDK 提供了增强的 WebSocket 功能,包括自动重连和心跳保持,用户无需手动管理连接状态。

设置回调函数

// 设置消息处理器
client.setMessageHandler([](const std::string& message) {
std::cout << "Received WebSocket message: " << message << std::endl;
});
// 设置错误处理器
client.setErrorHandler([](const std::string& error) {
std::cerr << "WebSocket error: " << error << std::endl;
});
// 设置打开处理器
client.setOpenHandler([]() {
std::cout << "WebSocket connected" << std::endl;
});
// 设置关闭处理器
client.setCloseHandler([]() {
std::cout << "WebSocket closed" << std::endl;
});

连接和订阅

// 连接外汇 WebSocket
client.connectForexWebSocket();
// 发送订阅消息
client.sendWebSocketMessage("{\"action\": \"subscribe\", \"codes\": [\"EURUSD\"]}");
// 等待一段时间std::this_thread::sleep_for(std::chrono::seconds(5));
// 检查连接状态
std::cout << "WebSocket connected: " << (client.isWebSocketConnected() ? "true" : "false") << std::endl;
// 关闭 WebSocket
client.closeWebSocket();

其他 WebSocket 连接

// 连接股票 WebSocket
client.connectStockWebSocket();
// 连接加密货币 WebSocket
client.connectCryptoWebSocket();

API 接口列表

基础 (Basics)

方法说明
getSymbolList获取符号列表
getSymbolHolidays获取节假日信息

股票 (Stock)

方法说明
getStockInfo获取股票信息
getStockIPO获取股票IPO信息
getStockSplit获取股票分拆信息
getStockTick获取股票实时成交
getStockQuote获取股票实时报价
getStockDepth获取股票实时盘口
getStockKline获取股票历史K线
getStockTicks获取股票批量实时成交
getStockQuotes获取股票批量实时报价
getStockDepths获取股票批量实时盘口
getStockKlines获取股票批量历史K线
connectStockWebSocket连接股票 WebSocket

指数 (Indices)

方法说明
getIndicesTick获取指数实时成交
getIndicesQuote获取指数实时报价
getIndicesDepth获取指数实时盘口
getIndicesKline获取指数历史K线
getIndicesTicks获取指数批量实时成交
getIndicesQuotes获取指数批量实时报价
getIndicesDepths获取指数批量实时盘口
getIndicesKlines获取指数批量历史K线
connectIndicesWebSocket连接指数 WebSocket

期货 (Futures)

方法说明
getFutureTick获取期货实时成交
getFutureQuote获取期货实时报价
getFutureDepth获取期货实时盘口
getFutureKline获取期货历史K线
getFutureTicks获取期货批量实时成交
getFutureQuotes获取期货批量实时报价
getFutureDepths获取期货批量实时盘口
getFutureKlines获取期货批量历史K线
connectFutureWebSocket连接期货 WebSocket

基金 (Funds)

方法说明
getFundTick获取基金实时成交
getFundQuote获取基金实时报价
getFundDepth获取基金实时盘口
getFundKline获取基金历史K线
getFundTicks获取基金批量实时成交
getFundQuotes获取基金批量实时报价
getFundDepths获取基金批量实时盘口
getFundKlines获取基金批量历史K线
connectFundWebSocket连接基金 WebSocket

外汇 (Forex)

方法说明
getForexTick获取外汇实时成交
getForexQuote获取外汇实时报价
getForexDepth获取外汇实时盘口
getForexKline获取外汇历史K线
getForexTicks获取外汇批量实时成交
getForexQuotes获取外汇批量实时报价
getForexDepths获取外汇批量实时盘口
getForexKlines获取外汇批量历史K线
connectForexWebSocket连接外汇 WebSocket

加密货币 (Crypto)

方法说明
getCryptoTick获取加密货币实时成交
getCryptoQuote获取加密货币实时报价
getCryptoDepth获取加密货币实时盘口
getCryptoKline获取加密货币历史K线
getCryptoTicks获取加密货币批量实时成交
getCryptoQuotes获取加密货币批量实时报价
getCryptoDepths获取加密货币批量实时盘口
getCryptoKlines获取加密货币批量历史K线
connectCryptoWebSocket连接加密货币 WebSocket

WebSocket 功能说明

自动重连

SDK 内置自动重连机制,当网络异常或连接断开时,会自动尝试重新连接:

  • 重连间隔:5 秒
  • 最大重连次数:10 次
  • 重连成功后自动恢复订阅

心跳保持

SDK 自动维护 WebSocket 连接的心跳:

  • 心跳间隔:30 秒
  • 自动发送 ping 消息保持连接活跃

连接状态检查

// 检查 WebSocket 是否连接bool connected = client.isWebSocketConnected();

完整示例

#include<iostream>
#include"client.h"
#include<thread>
#include<chrono>usingnamespaceio::github::itick::sdk;intmain() {
try {
// 初始化客户端
std::string token = "your_api_token";
Client client(token);
// 设置 WebSocket 消息处理器
client.setMessageHandler([](const std::string& message) {
std::cout << "Received WebSocket message: " << message << std::endl;
});
// 设置 WebSocket 错误处理器
client.setErrorHandler([](const std::string& error) {
std::cerr << "WebSocket error: " << error << std::endl;
});
// 设置 WebSocket 打开处理器
client.setOpenHandler([]() {
std::cout << "WebSocket connected" << std::endl;
});
// 设置 WebSocket 关闭处理器
client.setCloseHandler([]() {
std::cout << "WebSocket closed" << std::endl;
});
// 测试 REST API
std::cout << "Testing forex tick..." << std::endl;
std::string tick = client.getForexTick("GB", "EURUSD");
std::cout << tick << std::endl;
// 测试 WebSocket
std::cout << "\nTesting WebSocket..." << std::endl;
client.connectForexWebSocket();
// 发送订阅消息
client.sendWebSocketMessage("{\"action\": \"subscribe\", \"codes\": [\"EURUSD\"]}");
// 等待一段时间
std::cout << "Waiting for WebSocket messages..." << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(5));
// 检查连接状态
std::cout << "WebSocket connected: " << (client.isWebSocketConnected() ? "true" : "false") << std::endl;
// 关闭 WebSocket
client.closeWebSocket();
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return0;
}

依赖项

  • libcurl - HTTP 客户端库

文档

详细 API 文档请参考:https://docs.itick.org

许可证

MIT License

About

C++ 版本的 iTick API SDK,提供基础数据、股票IPO、股票市场假期、股票除权除息、股票实时数据、指数实时数据、期货实时数据、基金实时数据、外汇实时数据、加密货币实时数据的 REST API 查询和 WebSocket 实时数据订阅功能。

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

iTick C++ SDK

C++ 语言版本的 iTick API SDK,提供基础数据、股票IPO、股票市场假期、股票除权除息、股票实时数据、指数实时数据、期货实时数据、基金实时数据、外汇实时数据、加密货币实时数据的 REST API 查询和 WebSocket 实时数据订阅功能。

官网地址:https://itick.org

功能特性

  • 支持 REST API 查询基础、股票、指数、期货、基金、外汇、加密货币数据
  • 支持 WebSocket 实时数据订阅
  • 自动重连机制
  • 心跳保持连接
  • 回调式事件处理

系统要求

  • C++17 或更高版本
  • CMake 3.10 或更高版本
  • libcurl 7.x 或更高版本

安装

从源码构建

cd cpp
mkdir build
cd build
cmake ..
make

集成到您的项目

使用 CMake

将 SDK 目录复制到您的项目中,并在您的 CMakeLists.txt 中添加:

add_subdirectory(path/to/github-sdk)
target_link_libraries(your_targetPRIVATEgithub-sdk)
target_include_directories(your_targetPRIVATEpath/to/github-sdk/src)

手动集成

src/ 目录下的头文件和源文件添加到您的项目中,并链接 libcurl。

快速开始

初始化客户端

#include"client.h"usingnamespaceio::github::itick::sdk;intmain() {
std::string token = "your_api_token";
Client client(token);
return0;
}

REST API 使用

外汇数据查询

// 获取外汇实时成交
std::string tick = client.getForexTick("GB", "EURUSD");
std::cout << tick << std::endl;
// 获取外汇实时报价
std::string quote = client.getForexQuote("GB", "EURUSD");
std::cout << quote << std::endl;
// 获取外汇实时盘口
std::string depth = client.getForexDepth("GB", "EURUSD");
std::cout << depth << std::endl;
// 获取外汇历史K线
std::string kline = client.getForexKline("GB", "EURUSD", 2, 10);
std::cout << kline << std::endl;

股票数据查询

// 获取股票实时成交
std::string tick = client.getStockTick("US", "AAPL");
std::cout << tick << std::endl;
// 获取股票实时报价
std::string quote = client.getStockQuote("US", "AAPL");
std::cout << quote << std::endl;
// 获取股票实时盘口
std::string depth = client.getStockDepth("US", "AAPL");
std::cout << depth << std::endl;
// 获取股票历史K线
std::string kline = client.getStockKline("US", "AAPL", 2, 10);
std::cout << kline << std::endl;

加密货币数据查询

// 获取加密货币实时成交
std::string tick = client.getCryptoTick("BA", "BTCUSDT");
std::cout << tick << std::endl;
// 获取加密货币实时报价
std::string quote = client.getCryptoQuote("BA", "BTCUSDT");
std::cout << quote << std::endl;
// 获取加密货币实时盘口
std::string depth = client.getCryptoDepth("BA", "BTCUSDT");
std::cout << depth << std::endl;
// 获取加密货币历史K线
std::string kline = client.getCryptoKline("BA", "BTCUSDT", 2, 10);
std::cout << kline << std::endl;

WebSocket 使用

SDK 提供了增强的 WebSocket 功能,包括自动重连和心跳保持,用户无需手动管理连接状态。

设置回调函数

// 设置消息处理器
client.setMessageHandler([](const std::string& message) {
std::cout << "Received WebSocket message: " << message << std::endl;
});
// 设置错误处理器
client.setErrorHandler([](const std::string& error) {
std::cerr << "WebSocket error: " << error << std::endl;
});
// 设置打开处理器
client.setOpenHandler([]() {
std::cout << "WebSocket connected" << std::endl;
});
// 设置关闭处理器
client.setCloseHandler([]() {
std::cout << "WebSocket closed" << std::endl;
});

连接和订阅

// 连接外汇 WebSocket
client.connectForexWebSocket();
// 发送订阅消息
client.sendWebSocketMessage("{\"action\": \"subscribe\", \"codes\": [\"EURUSD\"]}");
// 等待一段时间std::this_thread::sleep_for(std::chrono::seconds(5));
// 检查连接状态
std::cout << "WebSocket connected: " << (client.isWebSocketConnected() ? "true" : "false") << std::endl;
// 关闭 WebSocket
client.closeWebSocket();

其他 WebSocket 连接

// 连接股票 WebSocket
client.connectStockWebSocket();
// 连接加密货币 WebSocket
client.connectCryptoWebSocket();

API 接口列表

基础 (Basics)

方法说明
getSymbolList获取符号列表
getSymbolHolidays获取节假日信息

股票 (Stock)

方法说明
getStockInfo获取股票信息
getStockIPO获取股票IPO信息
getStockSplit获取股票分拆信息
getStockTick获取股票实时成交
getStockQuote获取股票实时报价
getStockDepth获取股票实时盘口
getStockKline获取股票历史K线
getStockTicks获取股票批量实时成交
getStockQuotes获取股票批量实时报价
getStockDepths获取股票批量实时盘口
getStockKlines获取股票批量历史K线
connectStockWebSocket连接股票 WebSocket

指数 (Indices)

方法说明
getIndicesTick获取指数实时成交
getIndicesQuote获取指数实时报价
getIndicesDepth获取指数实时盘口
getIndicesKline获取指数历史K线
getIndicesTicks获取指数批量实时成交
getIndicesQuotes获取指数批量实时报价
getIndicesDepths获取指数批量实时盘口
getIndicesKlines获取指数批量历史K线
connectIndicesWebSocket连接指数 WebSocket

期货 (Futures)

方法说明
getFutureTick获取期货实时成交
getFutureQuote获取期货实时报价
getFutureDepth获取期货实时盘口
getFutureKline获取期货历史K线
getFutureTicks获取期货批量实时成交
getFutureQuotes获取期货批量实时报价
getFutureDepths获取期货批量实时盘口
getFutureKlines获取期货批量历史K线
connectFutureWebSocket连接期货 WebSocket

基金 (Funds)

方法说明
getFundTick获取基金实时成交
getFundQuote获取基金实时报价
getFundDepth获取基金实时盘口
getFundKline获取基金历史K线
getFundTicks获取基金批量实时成交
getFundQuotes获取基金批量实时报价
getFundDepths获取基金批量实时盘口
getFundKlines获取基金批量历史K线
connectFundWebSocket连接基金 WebSocket

外汇 (Forex)

方法说明
getForexTick获取外汇实时成交
getForexQuote获取外汇实时报价
getForexDepth获取外汇实时盘口
getForexKline获取外汇历史K线
getForexTicks获取外汇批量实时成交
getForexQuotes获取外汇批量实时报价
getForexDepths获取外汇批量实时盘口
getForexKlines获取外汇批量历史K线
connectForexWebSocket连接外汇 WebSocket

加密货币 (Crypto)

方法说明
getCryptoTick获取加密货币实时成交
getCryptoQuote获取加密货币实时报价
getCryptoDepth获取加密货币实时盘口
getCryptoKline获取加密货币历史K线
getCryptoTicks获取加密货币批量实时成交
getCryptoQuotes获取加密货币批量实时报价
getCryptoDepths获取加密货币批量实时盘口
getCryptoKlines获取加密货币批量历史K线
connectCryptoWebSocket连接加密货币 WebSocket

WebSocket 功能说明

自动重连

SDK 内置自动重连机制,当网络异常或连接断开时,会自动尝试重新连接:

  • 重连间隔:5 秒
  • 最大重连次数:10 次
  • 重连成功后自动恢复订阅

心跳保持

SDK 自动维护 WebSocket 连接的心跳:

  • 心跳间隔:30 秒
  • 自动发送 ping 消息保持连接活跃

连接状态检查

// 检查 WebSocket 是否连接bool connected = client.isWebSocketConnected();

完整示例

#include<iostream>
#include"client.h"
#include<thread>
#include<chrono>usingnamespaceio::github::itick::sdk;intmain() {
try {
// 初始化客户端
std::string token = "your_api_token";
Client client(token);
// 设置 WebSocket 消息处理器
client.setMessageHandler([](const std::string& message) {
std::cout << "Received WebSocket message: " << message << std::endl;
});
// 设置 WebSocket 错误处理器
client.setErrorHandler([](const std::string& error) {
std::cerr << "WebSocket error: " << error << std::endl;
});
// 设置 WebSocket 打开处理器
client.setOpenHandler([]() {
std::cout << "WebSocket connected" << std::endl;
});
// 设置 WebSocket 关闭处理器
client.setCloseHandler([]() {
std::cout << "WebSocket closed" << std::endl;
});
// 测试 REST API
std::cout << "Testing forex tick..." << std::endl;
std::string tick = client.getForexTick("GB", "EURUSD");
std::cout << tick << std::endl;
// 测试 WebSocket
std::cout << "\nTesting WebSocket..." << std::endl;
client.connectForexWebSocket();
// 发送订阅消息
client.sendWebSocketMessage("{\"action\": \"subscribe\", \"codes\": [\"EURUSD\"]}");
// 等待一段时间
std::cout << "Waiting for WebSocket messages..." << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(5));
// 检查连接状态
std::cout << "WebSocket connected: " << (client.isWebSocketConnected() ? "true" : "false") << std::endl;
// 关闭 WebSocket
client.closeWebSocket();
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return0;
}

依赖项

  • libcurl - HTTP 客户端库

文档

详细 API 文档请参考:https://docs.itick.org

许可证

MIT License

About

C++ 版本的 iTick API SDK,提供基础数据、股票IPO、股票市场假期、股票除权除息、股票实时数据、指数实时数据、期货实时数据、基金实时数据、外汇实时数据、加密货币实时数据的 REST API 查询和 WebSocket 实时数据订阅功能。

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

iTick C++ SDK

C++ 语言版本的 iTick API SDK,提供基础数据、股票IPO、股票市场假期、股票除权除息、股票实时数据、指数实时数据、期货实时数据、基金实时数据、外汇实时数据、加密货币实时数据的 REST API 查询和 WebSocket 实时数据订阅功能。

官网地址:https://itick.org

功能特性

  • 支持 REST API 查询基础、股票、指数、期货、基金、外汇、加密货币数据
  • 支持 WebSocket 实时数据订阅
  • 自动重连机制
  • 心跳保持连接
  • 回调式事件处理

系统要求

  • C++17 或更高版本
  • CMake 3.10 或更高版本
  • libcurl 7.x 或更高版本

安装

从源码构建

cd cpp
mkdir build
cd build
cmake ..
make

集成到您的项目

使用 CMake

将 SDK 目录复制到您的项目中,并在您的 CMakeLists.txt 中添加:

add_subdirectory(path/to/github-sdk)
target_link_libraries(your_targetPRIVATEgithub-sdk)
target_include_directories(your_targetPRIVATEpath/to/github-sdk/src)

手动集成

src/ 目录下的头文件和源文件添加到您的项目中,并链接 libcurl。

快速开始

初始化客户端

#include"client.h"usingnamespaceio::github::itick::sdk;intmain() {
std::string token = "your_api_token";
Client client(token);
return0;
}

REST API 使用

外汇数据查询

// 获取外汇实时成交
std::string tick = client.getForexTick("GB", "EURUSD");
std::cout << tick << std::endl;
// 获取外汇实时报价
std::string quote = client.getForexQuote("GB", "EURUSD");
std::cout << quote << std::endl;
// 获取外汇实时盘口
std::string depth = client.getForexDepth("GB", "EURUSD");
std::cout << depth << std::endl;
// 获取外汇历史K线
std::string kline = client.getForexKline("GB", "EURUSD", 2, 10);
std::cout << kline << std::endl;

股票数据查询

// 获取股票实时成交
std::string tick = client.getStockTick("US", "AAPL");
std::cout << tick << std::endl;
// 获取股票实时报价
std::string quote = client.getStockQuote("US", "AAPL");
std::cout << quote << std::endl;
// 获取股票实时盘口
std::string depth = client.getStockDepth("US", "AAPL");
std::cout << depth << std::endl;
// 获取股票历史K线
std::string kline = client.getStockKline("US", "AAPL", 2, 10);
std::cout << kline << std::endl;

加密货币数据查询

// 获取加密货币实时成交
std::string tick = client.getCryptoTick("BA", "BTCUSDT");
std::cout << tick << std::endl;
// 获取加密货币实时报价
std::string quote = client.getCryptoQuote("BA", "BTCUSDT");
std::cout << quote << std::endl;
// 获取加密货币实时盘口
std::string depth = client.getCryptoDepth("BA", "BTCUSDT");
std::cout << depth << std::endl;
// 获取加密货币历史K线
std::string kline = client.getCryptoKline("BA", "BTCUSDT", 2, 10);
std::cout << kline << std::endl;

WebSocket 使用

SDK 提供了增强的 WebSocket 功能,包括自动重连和心跳保持,用户无需手动管理连接状态。

设置回调函数

// 设置消息处理器
client.setMessageHandler([](const std::string& message) {
std::cout << "Received WebSocket message: " << message << std::endl;
});
// 设置错误处理器
client.setErrorHandler([](const std::string& error) {
std::cerr << "WebSocket error: " << error << std::endl;
});
// 设置打开处理器
client.setOpenHandler([]() {
std::cout << "WebSocket connected" << std::endl;
});
// 设置关闭处理器
client.setCloseHandler([]() {
std::cout << "WebSocket closed" << std::endl;
});

连接和订阅

// 连接外汇 WebSocket
client.connectForexWebSocket();
// 发送订阅消息
client.sendWebSocketMessage("{\"action\": \"subscribe\", \"codes\": [\"EURUSD\"]}");
// 等待一段时间std::this_thread::sleep_for(std::chrono::seconds(5));
// 检查连接状态
std::cout << "WebSocket connected: " << (client.isWebSocketConnected() ? "true" : "false") << std::endl;
// 关闭 WebSocket
client.closeWebSocket();

其他 WebSocket 连接

// 连接股票 WebSocket
client.connectStockWebSocket();
// 连接加密货币 WebSocket
client.connectCryptoWebSocket();

API 接口列表

基础 (Basics)

方法说明
getSymbolList获取符号列表
getSymbolHolidays获取节假日信息

股票 (Stock)

方法说明
getStockInfo获取股票信息
getStockIPO获取股票IPO信息
getStockSplit获取股票分拆信息
getStockTick获取股票实时成交
getStockQuote获取股票实时报价
getStockDepth获取股票实时盘口
getStockKline获取股票历史K线
getStockTicks获取股票批量实时成交
getStockQuotes获取股票批量实时报价
getStockDepths获取股票批量实时盘口
getStockKlines获取股票批量历史K线
connectStockWebSocket连接股票 WebSocket

指数 (Indices)

方法说明
getIndicesTick获取指数实时成交
getIndicesQuote获取指数实时报价
getIndicesDepth获取指数实时盘口
getIndicesKline获取指数历史K线
getIndicesTicks获取指数批量实时成交
getIndicesQuotes获取指数批量实时报价
getIndicesDepths获取指数批量实时盘口
getIndicesKlines获取指数批量历史K线
connectIndicesWebSocket连接指数 WebSocket

期货 (Futures)

方法说明
getFutureTick获取期货实时成交
getFutureQuote获取期货实时报价
getFutureDepth获取期货实时盘口
getFutureKline获取期货历史K线
getFutureTicks获取期货批量实时成交
getFutureQuotes获取期货批量实时报价
getFutureDepths获取期货批量实时盘口
getFutureKlines获取期货批量历史K线
connectFutureWebSocket连接期货 WebSocket

基金 (Funds)

方法说明
getFundTick获取基金实时成交
getFundQuote获取基金实时报价
getFundDepth获取基金实时盘口
getFundKline获取基金历史K线
getFundTicks获取基金批量实时成交
getFundQuotes获取基金批量实时报价
getFundDepths获取基金批量实时盘口
getFundKlines获取基金批量历史K线
connectFundWebSocket连接基金 WebSocket

外汇 (Forex)

方法说明
getForexTick获取外汇实时成交
getForexQuote获取外汇实时报价
getForexDepth获取外汇实时盘口
getForexKline获取外汇历史K线
getForexTicks获取外汇批量实时成交
getForexQuotes获取外汇批量实时报价
getForexDepths获取外汇批量实时盘口
getForexKlines获取外汇批量历史K线
connectForexWebSocket连接外汇 WebSocket

加密货币 (Crypto)

方法说明
getCryptoTick获取加密货币实时成交
getCryptoQuote获取加密货币实时报价
getCryptoDepth获取加密货币实时盘口
getCryptoKline获取加密货币历史K线
getCryptoTicks获取加密货币批量实时成交
getCryptoQuotes获取加密货币批量实时报价
getCryptoDepths获取加密货币批量实时盘口
getCryptoKlines获取加密货币批量历史K线
connectCryptoWebSocket连接加密货币 WebSocket

WebSocket 功能说明

自动重连

SDK 内置自动重连机制,当网络异常或连接断开时,会自动尝试重新连接:

  • 重连间隔:5 秒
  • 最大重连次数:10 次
  • 重连成功后自动恢复订阅

心跳保持

SDK 自动维护 WebSocket 连接的心跳:

  • 心跳间隔:30 秒
  • 自动发送 ping 消息保持连接活跃

连接状态检查

// 检查 WebSocket 是否连接bool connected = client.isWebSocketConnected();

完整示例

#include<iostream>
#include"client.h"
#include<thread>
#include<chrono>usingnamespaceio::github::itick::sdk;intmain() {
try {
// 初始化客户端
std::string token = "your_api_token";
Client client(token);
// 设置 WebSocket 消息处理器
client.setMessageHandler([](const std::string& message) {
std::cout << "Received WebSocket message: " << message << std::endl;
});
// 设置 WebSocket 错误处理器
client.setErrorHandler([](const std::string& error) {
std::cerr << "WebSocket error: " << error << std::endl;
});
// 设置 WebSocket 打开处理器
client.setOpenHandler([]() {
std::cout << "WebSocket connected" << std::endl;
});
// 设置 WebSocket 关闭处理器
client.setCloseHandler([]() {
std::cout << "WebSocket closed" << std::endl;
});
// 测试 REST API
std::cout << "Testing forex tick..." << std::endl;
std::string tick = client.getForexTick("GB", "EURUSD");
std::cout << tick << std::endl;
// 测试 WebSocket
std::cout << "\nTesting WebSocket..." << std::endl;
client.connectForexWebSocket();
// 发送订阅消息
client.sendWebSocketMessage("{\"action\": \"subscribe\", \"codes\": [\"EURUSD\"]}");
// 等待一段时间
std::cout << "Waiting for WebSocket messages..." << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(5));
// 检查连接状态
std::cout << "WebSocket connected: " << (client.isWebSocketConnected() ? "true" : "false") << std::endl;
// 关闭 WebSocket
client.closeWebSocket();
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return0;
}

依赖项

  • libcurl - HTTP 客户端库

文档

详细 API 文档请参考:https://docs.itick.org

许可证

MIT License

About

C++ 版本的 iTick API SDK,提供基础数据、股票IPO、股票市场假期、股票除权除息、股票实时数据、指数实时数据、期货实时数据、基金实时数据、外汇实时数据、加密货币实时数据的 REST API 查询和 WebSocket 实时数据订阅功能。

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

iTick C++ SDK

C++ 语言版本的 iTick API SDK,提供基础数据、股票IPO、股票市场假期、股票除权除息、股票实时数据、指数实时数据、期货实时数据、基金实时数据、外汇实时数据、加密货币实时数据的 REST API 查询和 WebSocket 实时数据订阅功能。

官网地址:https://itick.org

功能特性

  • 支持 REST API 查询基础、股票、指数、期货、基金、外汇、加密货币数据
  • 支持 WebSocket 实时数据订阅
  • 自动重连机制
  • 心跳保持连接
  • 回调式事件处理

系统要求

  • C++17 或更高版本
  • CMake 3.10 或更高版本
  • libcurl 7.x 或更高版本

安装

从源码构建

cd cpp
mkdir build
cd build
cmake ..
make

集成到您的项目

使用 CMake

将 SDK 目录复制到您的项目中,并在您的 CMakeLists.txt 中添加:

add_subdirectory(path/to/github-sdk)
target_link_libraries(your_targetPRIVATEgithub-sdk)
target_include_directories(your_targetPRIVATEpath/to/github-sdk/src)

手动集成

src/ 目录下的头文件和源文件添加到您的项目中,并链接 libcurl。

快速开始

初始化客户端

#include"client.h"usingnamespaceio::github::itick::sdk;intmain() {
std::string token = "your_api_token";
Client client(token);
return0;
}

REST API 使用

外汇数据查询

// 获取外汇实时成交
std::string tick = client.getForexTick("GB", "EURUSD");
std::cout << tick << std::endl;
// 获取外汇实时报价
std::string quote = client.getForexQuote("GB", "EURUSD");
std::cout << quote << std::endl;
// 获取外汇实时盘口
std::string depth = client.getForexDepth("GB", "EURUSD");
std::cout << depth << std::endl;
// 获取外汇历史K线
std::string kline = client.getForexKline("GB", "EURUSD", 2, 10);
std::cout << kline << std::endl;

股票数据查询

// 获取股票实时成交
std::string tick = client.getStockTick("US", "AAPL");
std::cout << tick << std::endl;
// 获取股票实时报价
std::string quote = client.getStockQuote("US", "AAPL");
std::cout << quote << std::endl;
// 获取股票实时盘口
std::string depth = client.getStockDepth("US", "AAPL");
std::cout << depth << std::endl;
// 获取股票历史K线
std::string kline = client.getStockKline("US", "AAPL", 2, 10);
std::cout << kline << std::endl;

加密货币数据查询

// 获取加密货币实时成交
std::string tick = client.getCryptoTick("BA", "BTCUSDT");
std::cout << tick << std::endl;
// 获取加密货币实时报价
std::string quote = client.getCryptoQuote("BA", "BTCUSDT");
std::cout << quote << std::endl;
// 获取加密货币实时盘口
std::string depth = client.getCryptoDepth("BA", "BTCUSDT");
std::cout << depth << std::endl;
// 获取加密货币历史K线
std::string kline = client.getCryptoKline("BA", "BTCUSDT", 2, 10);
std::cout << kline << std::endl;

WebSocket 使用

SDK 提供了增强的 WebSocket 功能,包括自动重连和心跳保持,用户无需手动管理连接状态。

设置回调函数

// 设置消息处理器
client.setMessageHandler([](const std::string& message) {
std::cout << "Received WebSocket message: " << message << std::endl;
});
// 设置错误处理器
client.setErrorHandler([](const std::string& error) {
std::cerr << "WebSocket error: " << error << std::endl;
});
// 设置打开处理器
client.setOpenHandler([]() {
std::cout << "WebSocket connected" << std::endl;
});
// 设置关闭处理器
client.setCloseHandler([]() {
std::cout << "WebSocket closed" << std::endl;
});

连接和订阅

// 连接外汇 WebSocket
client.connectForexWebSocket();
// 发送订阅消息
client.sendWebSocketMessage("{\"action\": \"subscribe\", \"codes\": [\"EURUSD\"]}");
// 等待一段时间std::this_thread::sleep_for(std::chrono::seconds(5));
// 检查连接状态
std::cout << "WebSocket connected: " << (client.isWebSocketConnected() ? "true" : "false") << std::endl;
// 关闭 WebSocket
client.closeWebSocket();

其他 WebSocket 连接

// 连接股票 WebSocket
client.connectStockWebSocket();
// 连接加密货币 WebSocket
client.connectCryptoWebSocket();

API 接口列表

基础 (Basics)

方法说明
getSymbolList获取符号列表
getSymbolHolidays获取节假日信息

股票 (Stock)

方法说明
getStockInfo获取股票信息
getStockIPO获取股票IPO信息
getStockSplit获取股票分拆信息
getStockTick获取股票实时成交
getStockQuote获取股票实时报价
getStockDepth获取股票实时盘口
getStockKline获取股票历史K线
getStockTicks获取股票批量实时成交
getStockQuotes获取股票批量实时报价
getStockDepths获取股票批量实时盘口
getStockKlines获取股票批量历史K线
connectStockWebSocket连接股票 WebSocket

指数 (Indices)

方法说明
getIndicesTick获取指数实时成交
getIndicesQuote获取指数实时报价
getIndicesDepth获取指数实时盘口
getIndicesKline获取指数历史K线
getIndicesTicks获取指数批量实时成交
getIndicesQuotes获取指数批量实时报价
getIndicesDepths获取指数批量实时盘口
getIndicesKlines获取指数批量历史K线
connectIndicesWebSocket连接指数 WebSocket

期货 (Futures)

方法说明
getFutureTick获取期货实时成交
getFutureQuote获取期货实时报价
getFutureDepth获取期货实时盘口
getFutureKline获取期货历史K线
getFutureTicks获取期货批量实时成交
getFutureQuotes获取期货批量实时报价
getFutureDepths获取期货批量实时盘口
getFutureKlines获取期货批量历史K线
connectFutureWebSocket连接期货 WebSocket

基金 (Funds)

方法说明
getFundTick获取基金实时成交
getFundQuote获取基金实时报价
getFundDepth获取基金实时盘口
getFundKline获取基金历史K线
getFundTicks获取基金批量实时成交
getFundQuotes获取基金批量实时报价
getFundDepths获取基金批量实时盘口
getFundKlines获取基金批量历史K线
connectFundWebSocket连接基金 WebSocket

外汇 (Forex)

方法说明
getForexTick获取外汇实时成交
getForexQuote获取外汇实时报价
getForexDepth获取外汇实时盘口
getForexKline获取外汇历史K线
getForexTicks获取外汇批量实时成交
getForexQuotes获取外汇批量实时报价
getForexDepths获取外汇批量实时盘口
getForexKlines获取外汇批量历史K线
connectForexWebSocket连接外汇 WebSocket

加密货币 (Crypto)

方法说明
getCryptoTick获取加密货币实时成交
getCryptoQuote获取加密货币实时报价
getCryptoDepth获取加密货币实时盘口
getCryptoKline获取加密货币历史K线
getCryptoTicks获取加密货币批量实时成交
getCryptoQuotes获取加密货币批量实时报价
getCryptoDepths获取加密货币批量实时盘口
getCryptoKlines获取加密货币批量历史K线
connectCryptoWebSocket连接加密货币 WebSocket

WebSocket 功能说明

自动重连

SDK 内置自动重连机制,当网络异常或连接断开时,会自动尝试重新连接:

  • 重连间隔:5 秒
  • 最大重连次数:10 次
  • 重连成功后自动恢复订阅

心跳保持

SDK 自动维护 WebSocket 连接的心跳:

  • 心跳间隔:30 秒
  • 自动发送 ping 消息保持连接活跃

连接状态检查

// 检查 WebSocket 是否连接bool connected = client.isWebSocketConnected();

完整示例

#include<iostream>
#include"client.h"
#include<thread>
#include<chrono>usingnamespaceio::github::itick::sdk;intmain() {
try {
// 初始化客户端
std::string token = "your_api_token";
Client client(token);
// 设置 WebSocket 消息处理器
client.setMessageHandler([](const std::string& message) {
std::cout << "Received WebSocket message: " << message << std::endl;
});
// 设置 WebSocket 错误处理器
client.setErrorHandler([](const std::string& error) {
std::cerr << "WebSocket error: " << error << std::endl;
});
// 设置 WebSocket 打开处理器
client.setOpenHandler([]() {
std::cout << "WebSocket connected" << std::endl;
});
// 设置 WebSocket 关闭处理器
client.setCloseHandler([]() {
std::cout << "WebSocket closed" << std::endl;
});
// 测试 REST API
std::cout << "Testing forex tick..." << std::endl;
std::string tick = client.getForexTick("GB", "EURUSD");
std::cout << tick << std::endl;
// 测试 WebSocket
std::cout << "\nTesting WebSocket..." << std::endl;
client.connectForexWebSocket();
// 发送订阅消息
client.sendWebSocketMessage("{\"action\": \"subscribe\", \"codes\": [\"EURUSD\"]}");
// 等待一段时间
std::cout << "Waiting for WebSocket messages..." << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(5));
// 检查连接状态
std::cout << "WebSocket connected: " << (client.isWebSocketConnected() ? "true" : "false") << std::endl;
// 关闭 WebSocket
client.closeWebSocket();
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return0;
}

依赖项

  • libcurl - HTTP 客户端库

文档

详细 API 文档请参考:https://docs.itick.org

许可证

MIT License

About

C++ 版本的 iTick API SDK,提供基础数据、股票IPO、股票市场假期、股票除权除息、股票实时数据、指数实时数据、期货实时数据、基金实时数据、外汇实时数据、加密货币实时数据的 REST API 查询和 WebSocket 实时数据订阅功能。

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

iTick C++ SDK

C++ 语言版本的 iTick API SDK,提供基础数据、股票IPO、股票市场假期、股票除权除息、股票实时数据、指数实时数据、期货实时数据、基金实时数据、外汇实时数据、加密货币实时数据的 REST API 查询和 WebSocket 实时数据订阅功能。

官网地址:https://itick.org

功能特性

  • 支持 REST API 查询基础、股票、指数、期货、基金、外汇、加密货币数据
  • 支持 WebSocket 实时数据订阅
  • 自动重连机制
  • 心跳保持连接
  • 回调式事件处理

系统要求

  • C++17 或更高版本
  • CMake 3.10 或更高版本
  • libcurl 7.x 或更高版本

安装

从源码构建

cd cpp
mkdir build
cd build
cmake ..
make

集成到您的项目

使用 CMake

将 SDK 目录复制到您的项目中,并在您的 CMakeLists.txt 中添加:

add_subdirectory(path/to/github-sdk)
target_link_libraries(your_targetPRIVATEgithub-sdk)
target_include_directories(your_targetPRIVATEpath/to/github-sdk/src)

手动集成

src/ 目录下的头文件和源文件添加到您的项目中,并链接 libcurl。

快速开始

初始化客户端

#include"client.h"usingnamespaceio::github::itick::sdk;intmain() {
std::string token = "your_api_token";
Client client(token);
return0;
}

REST API 使用

外汇数据查询

// 获取外汇实时成交
std::string tick = client.getForexTick("GB", "EURUSD");
std::cout << tick << std::endl;
// 获取外汇实时报价
std::string quote = client.getForexQuote("GB", "EURUSD");
std::cout << quote << std::endl;
// 获取外汇实时盘口
std::string depth = client.getForexDepth("GB", "EURUSD");
std::cout << depth << std::endl;
// 获取外汇历史K线
std::string kline = client.getForexKline("GB", "EURUSD", 2, 10);
std::cout << kline << std::endl;

股票数据查询

// 获取股票实时成交
std::string tick = client.getStockTick("US", "AAPL");
std::cout << tick << std::endl;
// 获取股票实时报价
std::string quote = client.getStockQuote("US", "AAPL");
std::cout << quote << std::endl;
// 获取股票实时盘口
std::string depth = client.getStockDepth("US", "AAPL");
std::cout << depth << std::endl;
// 获取股票历史K线
std::string kline = client.getStockKline("US", "AAPL", 2, 10);
std::cout << kline << std::endl;

加密货币数据查询

// 获取加密货币实时成交
std::string tick = client.getCryptoTick("BA", "BTCUSDT");
std::cout << tick << std::endl;
// 获取加密货币实时报价
std::string quote = client.getCryptoQuote("BA", "BTCUSDT");
std::cout << quote << std::endl;
// 获取加密货币实时盘口
std::string depth = client.getCryptoDepth("BA", "BTCUSDT");
std::cout << depth << std::endl;
// 获取加密货币历史K线
std::string kline = client.getCryptoKline("BA", "BTCUSDT", 2, 10);
std::cout << kline << std::endl;

WebSocket 使用

SDK 提供了增强的 WebSocket 功能,包括自动重连和心跳保持,用户无需手动管理连接状态。

设置回调函数

// 设置消息处理器
client.setMessageHandler([](const std::string& message) {
std::cout << "Received WebSocket message: " << message << std::endl;
});
// 设置错误处理器
client.setErrorHandler([](const std::string& error) {
std::cerr << "WebSocket error: " << error << std::endl;
});
// 设置打开处理器
client.setOpenHandler([]() {
std::cout << "WebSocket connected" << std::endl;
});
// 设置关闭处理器
client.setCloseHandler([]() {
std::cout << "WebSocket closed" << std::endl;
});

连接和订阅

// 连接外汇 WebSocket
client.connectForexWebSocket();
// 发送订阅消息
client.sendWebSocketMessage("{\"action\": \"subscribe\", \"codes\": [\"EURUSD\"]}");
// 等待一段时间std::this_thread::sleep_for(std::chrono::seconds(5));
// 检查连接状态
std::cout << "WebSocket connected: " << (client.isWebSocketConnected() ? "true" : "false") << std::endl;
// 关闭 WebSocket
client.closeWebSocket();

其他 WebSocket 连接

// 连接股票 WebSocket
client.connectStockWebSocket();
// 连接加密货币 WebSocket
client.connectCryptoWebSocket();

API 接口列表

基础 (Basics)

方法说明
getSymbolList获取符号列表
getSymbolHolidays获取节假日信息

股票 (Stock)

方法说明
getStockInfo获取股票信息
getStockIPO获取股票IPO信息
getStockSplit获取股票分拆信息
getStockTick获取股票实时成交
getStockQuote获取股票实时报价
getStockDepth获取股票实时盘口
getStockKline获取股票历史K线
getStockTicks获取股票批量实时成交
getStockQuotes获取股票批量实时报价
getStockDepths获取股票批量实时盘口
getStockKlines获取股票批量历史K线
connectStockWebSocket连接股票 WebSocket

指数 (Indices)

方法说明
getIndicesTick获取指数实时成交
getIndicesQuote获取指数实时报价
getIndicesDepth获取指数实时盘口
getIndicesKline获取指数历史K线
getIndicesTicks获取指数批量实时成交
getIndicesQuotes获取指数批量实时报价
getIndicesDepths获取指数批量实时盘口
getIndicesKlines获取指数批量历史K线
connectIndicesWebSocket连接指数 WebSocket

期货 (Futures)

方法说明
getFutureTick获取期货实时成交
getFutureQuote获取期货实时报价
getFutureDepth获取期货实时盘口
getFutureKline获取期货历史K线
getFutureTicks获取期货批量实时成交
getFutureQuotes获取期货批量实时报价
getFutureDepths获取期货批量实时盘口
getFutureKlines获取期货批量历史K线
connectFutureWebSocket连接期货 WebSocket

基金 (Funds)

方法说明
getFundTick获取基金实时成交
getFundQuote获取基金实时报价
getFundDepth获取基金实时盘口
getFundKline获取基金历史K线
getFundTicks获取基金批量实时成交
getFundQuotes获取基金批量实时报价
getFundDepths获取基金批量实时盘口
getFundKlines获取基金批量历史K线
connectFundWebSocket连接基金 WebSocket

外汇 (Forex)

方法说明
getForexTick获取外汇实时成交
getForexQuote获取外汇实时报价
getForexDepth获取外汇实时盘口
getForexKline获取外汇历史K线
getForexTicks获取外汇批量实时成交
getForexQuotes获取外汇批量实时报价
getForexDepths获取外汇批量实时盘口
getForexKlines获取外汇批量历史K线
connectForexWebSocket连接外汇 WebSocket

加密货币 (Crypto)

方法说明
getCryptoTick获取加密货币实时成交
getCryptoQuote获取加密货币实时报价
getCryptoDepth获取加密货币实时盘口
getCryptoKline获取加密货币历史K线
getCryptoTicks获取加密货币批量实时成交
getCryptoQuotes获取加密货币批量实时报价
getCryptoDepths获取加密货币批量实时盘口
getCryptoKlines获取加密货币批量历史K线
connectCryptoWebSocket连接加密货币 WebSocket

WebSocket 功能说明

自动重连

SDK 内置自动重连机制,当网络异常或连接断开时,会自动尝试重新连接:

  • 重连间隔:5 秒
  • 最大重连次数:10 次
  • 重连成功后自动恢复订阅

心跳保持

SDK 自动维护 WebSocket 连接的心跳:

  • 心跳间隔:30 秒
  • 自动发送 ping 消息保持连接活跃

连接状态检查

// 检查 WebSocket 是否连接bool connected = client.isWebSocketConnected();

完整示例

#include<iostream>
#include"client.h"
#include<thread>
#include<chrono>usingnamespaceio::github::itick::sdk;intmain() {
try {
// 初始化客户端
std::string token = "your_api_token";
Client client(token);
// 设置 WebSocket 消息处理器
client.setMessageHandler([](const std::string& message) {
std::cout << "Received WebSocket message: " << message << std::endl;
});
// 设置 WebSocket 错误处理器
client.setErrorHandler([](const std::string& error) {
std::cerr << "WebSocket error: " << error << std::endl;
});
// 设置 WebSocket 打开处理器
client.setOpenHandler([]() {
std::cout << "WebSocket connected" << std::endl;
});
// 设置 WebSocket 关闭处理器
client.setCloseHandler([]() {
std::cout << "WebSocket closed" << std::endl;
});
// 测试 REST API
std::cout << "Testing forex tick..." << std::endl;
std::string tick = client.getForexTick("GB", "EURUSD");
std::cout << tick << std::endl;
// 测试 WebSocket
std::cout << "\nTesting WebSocket..." << std::endl;
client.connectForexWebSocket();
// 发送订阅消息
client.sendWebSocketMessage("{\"action\": \"subscribe\", \"codes\": [\"EURUSD\"]}");
// 等待一段时间
std::cout << "Waiting for WebSocket messages..." << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(5));
// 检查连接状态
std::cout << "WebSocket connected: " << (client.isWebSocketConnected() ? "true" : "false") << std::endl;
// 关闭 WebSocket
client.closeWebSocket();
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return0;
}

依赖项

  • libcurl - HTTP 客户端库

文档

详细 API 文档请参考:https://docs.itick.org

许可证

MIT License

About

C++ 版本的 iTick API SDK,提供基础数据、股票IPO、股票市场假期、股票除权除息、股票实时数据、指数实时数据、期货实时数据、基金实时数据、外汇实时数据、加密货币实时数据的 REST API 查询和 WebSocket 实时数据订阅功能。

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

iTick C++ SDK

C++ 语言版本的 iTick API SDK,提供基础数据、股票IPO、股票市场假期、股票除权除息、股票实时数据、指数实时数据、期货实时数据、基金实时数据、外汇实时数据、加密货币实时数据的 REST API 查询和 WebSocket 实时数据订阅功能。

官网地址:https://itick.org

功能特性

  • 支持 REST API 查询基础、股票、指数、期货、基金、外汇、加密货币数据
  • 支持 WebSocket 实时数据订阅
  • 自动重连机制
  • 心跳保持连接
  • 回调式事件处理

系统要求

  • C++17 或更高版本
  • CMake 3.10 或更高版本
  • libcurl 7.x 或更高版本

安装

从源码构建

cd cpp
mkdir build
cd build
cmake ..
make

集成到您的项目

使用 CMake

将 SDK 目录复制到您的项目中,并在您的 CMakeLists.txt 中添加:

add_subdirectory(path/to/github-sdk)
target_link_libraries(your_targetPRIVATEgithub-sdk)
target_include_directories(your_targetPRIVATEpath/to/github-sdk/src)

手动集成

src/ 目录下的头文件和源文件添加到您的项目中,并链接 libcurl。

快速开始

初始化客户端

#include"client.h"usingnamespaceio::github::itick::sdk;intmain() {
std::string token = "your_api_token";
Client client(token);
return0;
}

REST API 使用

外汇数据查询

// 获取外汇实时成交
std::string tick = client.getForexTick("GB", "EURUSD");
std::cout << tick << std::endl;
// 获取外汇实时报价
std::string quote = client.getForexQuote("GB", "EURUSD");
std::cout << quote << std::endl;
// 获取外汇实时盘口
std::string depth = client.getForexDepth("GB", "EURUSD");
std::cout << depth << std::endl;
// 获取外汇历史K线
std::string kline = client.getForexKline("GB", "EURUSD", 2, 10);
std::cout << kline << std::endl;

股票数据查询

// 获取股票实时成交
std::string tick = client.getStockTick("US", "AAPL");
std::cout << tick << std::endl;
// 获取股票实时报价
std::string quote = client.getStockQuote("US", "AAPL");
std::cout << quote << std::endl;
// 获取股票实时盘口
std::string depth = client.getStockDepth("US", "AAPL");
std::cout << depth << std::endl;
// 获取股票历史K线
std::string kline = client.getStockKline("US", "AAPL", 2, 10);
std::cout << kline << std::endl;

加密货币数据查询

// 获取加密货币实时成交
std::string tick = client.getCryptoTick("BA", "BTCUSDT");
std::cout << tick << std::endl;
// 获取加密货币实时报价
std::string quote = client.getCryptoQuote("BA", "BTCUSDT");
std::cout << quote << std::endl;
// 获取加密货币实时盘口
std::string depth = client.getCryptoDepth("BA", "BTCUSDT");
std::cout << depth << std::endl;
// 获取加密货币历史K线
std::string kline = client.getCryptoKline("BA", "BTCUSDT", 2, 10);
std::cout << kline << std::endl;

WebSocket 使用

SDK 提供了增强的 WebSocket 功能,包括自动重连和心跳保持,用户无需手动管理连接状态。

设置回调函数

// 设置消息处理器
client.setMessageHandler([](const std::string& message) {
std::cout << "Received WebSocket message: " << message << std::endl;
});
// 设置错误处理器
client.setErrorHandler([](const std::string& error) {
std::cerr << "WebSocket error: " << error << std::endl;
});
// 设置打开处理器
client.setOpenHandler([]() {
std::cout << "WebSocket connected" << std::endl;
});
// 设置关闭处理器
client.setCloseHandler([]() {
std::cout << "WebSocket closed" << std::endl;
});

连接和订阅

// 连接外汇 WebSocket
client.connectForexWebSocket();
// 发送订阅消息
client.sendWebSocketMessage("{\"action\": \"subscribe\", \"codes\": [\"EURUSD\"]}");
// 等待一段时间std::this_thread::sleep_for(std::chrono::seconds(5));
// 检查连接状态
std::cout << "WebSocket connected: " << (client.isWebSocketConnected() ? "true" : "false") << std::endl;
// 关闭 WebSocket
client.closeWebSocket();

其他 WebSocket 连接

// 连接股票 WebSocket
client.connectStockWebSocket();
// 连接加密货币 WebSocket
client.connectCryptoWebSocket();

API 接口列表

基础 (Basics)

方法说明
getSymbolList获取符号列表
getSymbolHolidays获取节假日信息

股票 (Stock)

方法说明
getStockInfo获取股票信息
getStockIPO获取股票IPO信息
getStockSplit获取股票分拆信息
getStockTick获取股票实时成交
getStockQuote获取股票实时报价
getStockDepth获取股票实时盘口
getStockKline获取股票历史K线
getStockTicks获取股票批量实时成交
getStockQuotes获取股票批量实时报价
getStockDepths获取股票批量实时盘口
getStockKlines获取股票批量历史K线
connectStockWebSocket连接股票 WebSocket

指数 (Indices)

方法说明
getIndicesTick获取指数实时成交
getIndicesQuote获取指数实时报价
getIndicesDepth获取指数实时盘口
getIndicesKline获取指数历史K线
getIndicesTicks获取指数批量实时成交
getIndicesQuotes获取指数批量实时报价
getIndicesDepths获取指数批量实时盘口
getIndicesKlines获取指数批量历史K线
connectIndicesWebSocket连接指数 WebSocket

期货 (Futures)

方法说明
getFutureTick获取期货实时成交
getFutureQuote获取期货实时报价
getFutureDepth获取期货实时盘口
getFutureKline获取期货历史K线
getFutureTicks获取期货批量实时成交
getFutureQuotes获取期货批量实时报价
getFutureDepths获取期货批量实时盘口
getFutureKlines获取期货批量历史K线
connectFutureWebSocket连接期货 WebSocket

基金 (Funds)

方法说明
getFundTick获取基金实时成交
getFundQuote获取基金实时报价
getFundDepth获取基金实时盘口
getFundKline获取基金历史K线
getFundTicks获取基金批量实时成交
getFundQuotes获取基金批量实时报价
getFundDepths获取基金批量实时盘口
getFundKlines获取基金批量历史K线
connectFundWebSocket连接基金 WebSocket

外汇 (Forex)

方法说明
getForexTick获取外汇实时成交
getForexQuote获取外汇实时报价
getForexDepth获取外汇实时盘口
getForexKline获取外汇历史K线
getForexTicks获取外汇批量实时成交
getForexQuotes获取外汇批量实时报价
getForexDepths获取外汇批量实时盘口
getForexKlines获取外汇批量历史K线
connectForexWebSocket连接外汇 WebSocket

加密货币 (Crypto)

方法说明
getCryptoTick获取加密货币实时成交
getCryptoQuote获取加密货币实时报价
getCryptoDepth获取加密货币实时盘口
getCryptoKline获取加密货币历史K线
getCryptoTicks获取加密货币批量实时成交
getCryptoQuotes获取加密货币批量实时报价
getCryptoDepths获取加密货币批量实时盘口
getCryptoKlines获取加密货币批量历史K线
connectCryptoWebSocket连接加密货币 WebSocket

WebSocket 功能说明

自动重连

SDK 内置自动重连机制,当网络异常或连接断开时,会自动尝试重新连接:

  • 重连间隔:5 秒
  • 最大重连次数:10 次
  • 重连成功后自动恢复订阅

心跳保持

SDK 自动维护 WebSocket 连接的心跳:

  • 心跳间隔:30 秒
  • 自动发送 ping 消息保持连接活跃

连接状态检查

// 检查 WebSocket 是否连接bool connected = client.isWebSocketConnected();

完整示例

#include<iostream>
#include"client.h"
#include<thread>
#include<chrono>usingnamespaceio::github::itick::sdk;intmain() {
try {
// 初始化客户端
std::string token = "your_api_token";
Client client(token);
// 设置 WebSocket 消息处理器
client.setMessageHandler([](const std::string& message) {
std::cout << "Received WebSocket message: " << message << std::endl;
});
// 设置 WebSocket 错误处理器
client.setErrorHandler([](const std::string& error) {
std::cerr << "WebSocket error: " << error << std::endl;
});
// 设置 WebSocket 打开处理器
client.setOpenHandler([]() {
std::cout << "WebSocket connected" << std::endl;
});
// 设置 WebSocket 关闭处理器
client.setCloseHandler([]() {
std::cout << "WebSocket closed" << std::endl;
});
// 测试 REST API
std::cout << "Testing forex tick..." << std::endl;
std::string tick = client.getForexTick("GB", "EURUSD");
std::cout << tick << std::endl;
// 测试 WebSocket
std::cout << "\nTesting WebSocket..." << std::endl;
client.connectForexWebSocket();
// 发送订阅消息
client.sendWebSocketMessage("{\"action\": \"subscribe\", \"codes\": [\"EURUSD\"]}");
// 等待一段时间
std::cout << "Waiting for WebSocket messages..." << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(5));
// 检查连接状态
std::cout << "WebSocket connected: " << (client.isWebSocketConnected() ? "true" : "false") << std::endl;
// 关闭 WebSocket
client.closeWebSocket();
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return0;
}

依赖项

  • libcurl - HTTP 客户端库

文档

详细 API 文档请参考:https://docs.itick.org

许可证

MIT License

About

C++ 版本的 iTick API SDK,提供基础数据、股票IPO、股票市场假期、股票除权除息、股票实时数据、指数实时数据、期货实时数据、基金实时数据、外汇实时数据、加密货币实时数据的 REST API 查询和 WebSocket 实时数据订阅功能。

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

iTick C++ SDK

C++ 语言版本的 iTick API SDK,提供基础数据、股票IPO、股票市场假期、股票除权除息、股票实时数据、指数实时数据、期货实时数据、基金实时数据、外汇实时数据、加密货币实时数据的 REST API 查询和 WebSocket 实时数据订阅功能。

官网地址:https://itick.org

功能特性

  • 支持 REST API 查询基础、股票、指数、期货、基金、外汇、加密货币数据
  • 支持 WebSocket 实时数据订阅
  • 自动重连机制
  • 心跳保持连接
  • 回调式事件处理

系统要求

  • C++17 或更高版本
  • CMake 3.10 或更高版本
  • libcurl 7.x 或更高版本

安装

从源码构建

cd cpp
mkdir build
cd build
cmake ..
make

集成到您的项目

使用 CMake

将 SDK 目录复制到您的项目中,并在您的 CMakeLists.txt 中添加:

add_subdirectory(path/to/github-sdk)
target_link_libraries(your_targetPRIVATEgithub-sdk)
target_include_directories(your_targetPRIVATEpath/to/github-sdk/src)

手动集成

src/ 目录下的头文件和源文件添加到您的项目中,并链接 libcurl。

快速开始

初始化客户端

#include"client.h"usingnamespaceio::github::itick::sdk;intmain() {
std::string token = "your_api_token";
Client client(token);
return0;
}

REST API 使用

外汇数据查询

// 获取外汇实时成交
std::string tick = client.getForexTick("GB", "EURUSD");
std::cout << tick << std::endl;
// 获取外汇实时报价
std::string quote = client.getForexQuote("GB", "EURUSD");
std::cout << quote << std::endl;
// 获取外汇实时盘口
std::string depth = client.getForexDepth("GB", "EURUSD");
std::cout << depth << std::endl;
// 获取外汇历史K线
std::string kline = client.getForexKline("GB", "EURUSD", 2, 10);
std::cout << kline << std::endl;

股票数据查询

// 获取股票实时成交
std::string tick = client.getStockTick("US", "AAPL");
std::cout << tick << std::endl;
// 获取股票实时报价
std::string quote = client.getStockQuote("US", "AAPL");
std::cout << quote << std::endl;
// 获取股票实时盘口
std::string depth = client.getStockDepth("US", "AAPL");
std::cout << depth << std::endl;
// 获取股票历史K线
std::string kline = client.getStockKline("US", "AAPL", 2, 10);
std::cout << kline << std::endl;

加密货币数据查询

// 获取加密货币实时成交
std::string tick = client.getCryptoTick("BA", "BTCUSDT");
std::cout << tick << std::endl;
// 获取加密货币实时报价
std::string quote = client.getCryptoQuote("BA", "BTCUSDT");
std::cout << quote << std::endl;
// 获取加密货币实时盘口
std::string depth = client.getCryptoDepth("BA", "BTCUSDT");
std::cout << depth << std::endl;
// 获取加密货币历史K线
std::string kline = client.getCryptoKline("BA", "BTCUSDT", 2, 10);
std::cout << kline << std::endl;

WebSocket 使用

SDK 提供了增强的 WebSocket 功能,包括自动重连和心跳保持,用户无需手动管理连接状态。

设置回调函数

// 设置消息处理器
client.setMessageHandler([](const std::string& message) {
std::cout << "Received WebSocket message: " << message << std::endl;
});
// 设置错误处理器
client.setErrorHandler([](const std::string& error) {
std::cerr << "WebSocket error: " << error << std::endl;
});
// 设置打开处理器
client.setOpenHandler([]() {
std::cout << "WebSocket connected" << std::endl;
});
// 设置关闭处理器
client.setCloseHandler([]() {
std::cout << "WebSocket closed" << std::endl;
});

连接和订阅

// 连接外汇 WebSocket
client.connectForexWebSocket();
// 发送订阅消息
client.sendWebSocketMessage("{\"action\": \"subscribe\", \"codes\": [\"EURUSD\"]}");
// 等待一段时间std::this_thread::sleep_for(std::chrono::seconds(5));
// 检查连接状态
std::cout << "WebSocket connected: " << (client.isWebSocketConnected() ? "true" : "false") << std::endl;
// 关闭 WebSocket
client.closeWebSocket();

其他 WebSocket 连接

// 连接股票 WebSocket
client.connectStockWebSocket();
// 连接加密货币 WebSocket
client.connectCryptoWebSocket();

API 接口列表

基础 (Basics)

方法说明
getSymbolList获取符号列表
getSymbolHolidays获取节假日信息

股票 (Stock)

方法说明
getStockInfo获取股票信息
getStockIPO获取股票IPO信息
getStockSplit获取股票分拆信息
getStockTick获取股票实时成交
getStockQuote获取股票实时报价
getStockDepth获取股票实时盘口
getStockKline获取股票历史K线
getStockTicks获取股票批量实时成交
getStockQuotes获取股票批量实时报价
getStockDepths获取股票批量实时盘口
getStockKlines获取股票批量历史K线
connectStockWebSocket连接股票 WebSocket

指数 (Indices)

方法说明
getIndicesTick获取指数实时成交
getIndicesQuote获取指数实时报价
getIndicesDepth获取指数实时盘口
getIndicesKline获取指数历史K线
getIndicesTicks获取指数批量实时成交
getIndicesQuotes获取指数批量实时报价
getIndicesDepths获取指数批量实时盘口
getIndicesKlines获取指数批量历史K线
connectIndicesWebSocket连接指数 WebSocket

期货 (Futures)

方法说明
getFutureTick获取期货实时成交
getFutureQuote获取期货实时报价
getFutureDepth获取期货实时盘口
getFutureKline获取期货历史K线
getFutureTicks获取期货批量实时成交
getFutureQuotes获取期货批量实时报价
getFutureDepths获取期货批量实时盘口
getFutureKlines获取期货批量历史K线
connectFutureWebSocket连接期货 WebSocket

基金 (Funds)

方法说明
getFundTick获取基金实时成交
getFundQuote获取基金实时报价
getFundDepth获取基金实时盘口
getFundKline获取基金历史K线
getFundTicks获取基金批量实时成交
getFundQuotes获取基金批量实时报价
getFundDepths获取基金批量实时盘口
getFundKlines获取基金批量历史K线
connectFundWebSocket连接基金 WebSocket

外汇 (Forex)

方法说明
getForexTick获取外汇实时成交
getForexQuote获取外汇实时报价
getForexDepth获取外汇实时盘口
getForexKline获取外汇历史K线
getForexTicks获取外汇批量实时成交
getForexQuotes获取外汇批量实时报价
getForexDepths获取外汇批量实时盘口
getForexKlines获取外汇批量历史K线
connectForexWebSocket连接外汇 WebSocket

加密货币 (Crypto)

方法说明
getCryptoTick获取加密货币实时成交
getCryptoQuote获取加密货币实时报价
getCryptoDepth获取加密货币实时盘口
getCryptoKline获取加密货币历史K线
getCryptoTicks获取加密货币批量实时成交
getCryptoQuotes获取加密货币批量实时报价
getCryptoDepths获取加密货币批量实时盘口
getCryptoKlines获取加密货币批量历史K线
connectCryptoWebSocket连接加密货币 WebSocket

WebSocket 功能说明

自动重连

SDK 内置自动重连机制,当网络异常或连接断开时,会自动尝试重新连接:

  • 重连间隔:5 秒
  • 最大重连次数:10 次
  • 重连成功后自动恢复订阅

心跳保持

SDK 自动维护 WebSocket 连接的心跳:

  • 心跳间隔:30 秒
  • 自动发送 ping 消息保持连接活跃

连接状态检查

// 检查 WebSocket 是否连接bool connected = client.isWebSocketConnected();

完整示例

#include<iostream>
#include"client.h"
#include<thread>
#include<chrono>usingnamespaceio::github::itick::sdk;intmain() {
try {
// 初始化客户端
std::string token = "your_api_token";
Client client(token);
// 设置 WebSocket 消息处理器
client.setMessageHandler([](const std::string& message) {
std::cout << "Received WebSocket message: " << message << std::endl;
});
// 设置 WebSocket 错误处理器
client.setErrorHandler([](const std::string& error) {
std::cerr << "WebSocket error: " << error << std::endl;
});
// 设置 WebSocket 打开处理器
client.setOpenHandler([]() {
std::cout << "WebSocket connected" << std::endl;
});
// 设置 WebSocket 关闭处理器
client.setCloseHandler([]() {
std::cout << "WebSocket closed" << std::endl;
});
// 测试 REST API
std::cout << "Testing forex tick..." << std::endl;
std::string tick = client.getForexTick("GB", "EURUSD");
std::cout << tick << std::endl;
// 测试 WebSocket
std::cout << "\nTesting WebSocket..." << std::endl;
client.connectForexWebSocket();
// 发送订阅消息
client.sendWebSocketMessage("{\"action\": \"subscribe\", \"codes\": [\"EURUSD\"]}");
// 等待一段时间
std::cout << "Waiting for WebSocket messages..." << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(5));
// 检查连接状态
std::cout << "WebSocket connected: " << (client.isWebSocketConnected() ? "true" : "false") << std::endl;
// 关闭 WebSocket
client.closeWebSocket();
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return0;
}

依赖项

  • libcurl - HTTP 客户端库

文档

详细 API 文档请参考:https://docs.itick.org

许可证

MIT License

About

C++ 版本的 iTick API SDK,提供基础数据、股票IPO、股票市场假期、股票除权除息、股票实时数据、指数实时数据、期货实时数据、基金实时数据、外汇实时数据、加密货币实时数据的 REST API 查询和 WebSocket 实时数据订阅功能。

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages