基本功能示例

老虎 Open API C++ SDK 提供了丰富的接口来调用老虎的服务,本章节将对老虎 API 的核心功能进行一一演示:包括查询行情,订阅行情,以及调用 API 进行交易

查询行情

以下为一个最简单的调用老虎 API 的示例,演示了如何调用 Open API 来主动查询股票行情。

#include "tigerapi/quote_client.h"
#include "tigerapi/client_config.h"

using namespace TIGER_API;
using namespace web::json;

int main() {
    // 初始化配置
    ClientConfig config(false, U("your_config_directory_path"));

    // 初始化行情客户端
    QuoteClient quote_client(config);

    // 查询股票行情快照
    value symbols = value::array();
    symbols[0] = value::string(U("00700"));
    value result = quote_client.get_brief(symbols);

    // 输出结果
    ucout << result.serialize() << std::endl;

    return 0;
}

响应来源

get_brief 返回未建模的 web::json::value,SDK 仓库没有此示例的已验证 fixture,因此不提供合成行情价格。

订阅行情

除了选择主动查询的方式,Open API 还支持订阅-接受推送的方式来接收行情等信息。此示例实现了订阅苹果与 AMD 股票行情,将行情快照输出在控制台,持续 30 秒后取消订阅,并且断开与服务器的连接。

#include <iostream>
#include <thread>
#include <chrono>
#include "tigerapi/push_client.h"
#include "tigerapi/client_config.h"

using namespace TIGER_API;

int main() {
    // 初始化配置
    ClientConfig config(false, U("your_config_directory_path"));

    // 创建推送客户端
    auto push_client = IPushClient::create_push_client(config);

    // 设置连接回调
    push_client->set_connected_callback([]() {
        std::cout << "Connected" << std::endl;
    });

    // 设置断开回调
    push_client->set_disconnected_callback([]() {
        std::cout << "Disconnected" << std::endl;
    });

    // 设置行情变动回调
    push_client->set_quote_changed_callback([](const tigeropen::push::pb::QuoteBasicData& data) {
        std::cout << "Symbol: " << data.symbol()
                  << " Price: " << data.latestprice()
                  << " Volume: " << data.volume()
                  << std::endl;
    });

    // 建立连接
    push_client->connect();

    // 订阅行情
    std::vector<std::string> symbols = {"AAPL", "AMD"};
    push_client->subscribe_quote(symbols);

    // 等待推送
    std::this_thread::sleep_for(std::chrono::seconds(30));

    // 取消订阅
    push_client->unsubscribe_quote(symbols);

    // 断开连接
    push_client->disconnect();

    return 0;
}

交易下单

交易是 Open API 的另一个主要功能。此例展示了如何使用 Open API 对美股老虎证券 TIGR 下限价单:

#include "tigerapi/trade_client.h"
#include "tigerapi/client_config.h"
#include "tigerapi/contract_util.h"
#include "tigerapi/order_util.h"

using namespace TIGER_API;

int main() {
    // 初始化配置
    ClientConfig config(false, U("your_config_directory_path"));

    // 初始化交易客户端
    TradeClient trade_client(config);

    // 方法1: 本地构造合约对象
    Contract contract = ContractUtil::stock_contract(U("TIGR"), U("USD"));

    // 方法2: 通过接口查询获取合约信息
    // value contract_json = trade_client.get_contract(U("TIGR"), U("STK"));

    // 创建限价单
    Order order = OrderUtil::limit_order(
        config.account,  // 下单账户
        contract,        // 合约对象
        U("BUY"),        // 买入方向
        100,             // 数量
        5.0              // 限价
    );

    // 提交订单
    value result = trade_client.place_order(order);
    ucout << result.serialize() << std::endl;

    // 下单成功后,order.id 会被填充为实际的订单号
    std::cout << "Order ID: " << order.id << std::endl;

    return 0;
}

SDK model shape

下单传入和更新的 Order 模型定义在 include/tigerapi/model.h;关键字段包括 idaccountcontractactionorder_typetotal_quantitylimit_pricestatus。SDK 仓库没有该下单响应的已验证 fixture,因此不提供合成订单号或账户。

补充说明

对于支持的其他类型的订单,请参考文档交易类-下单交易部分中的说明


Did this page help you?