L2行情推送接口是一种实时行情数据接口,用于获取股票市场深度行情数据(Level 2行情数据)。下面是L2行情推送接口的一般过程:
1. 接口订阅:开发者需要先与数据服务提供商或股票交易所建立连接,并订阅L2行情数据接口。订阅接口时,开发者需要提供相关的账号信息和权限验证。
2. 数据传输协议:在建立连接后,开发者需要使用数据传输协议与数据源进行通信。常见的数据传输协议包括TCP/IP、UDP、WebSocket等。协议的选择取决于数据服务提供商或交易所的要求。
3. 数据接收与处理:开发者通过接口订阅感兴趣的股票代码或市场板块,并开始接收实时的L2行情数据。接收到的数据包括买卖档位的报价和委托量,买卖方向标识,成交量,最近成交价等。比如以下分析事项:
-
- OrderQueueRecord (逐笔委托)
字段名 | 类型 | 备注 |
stock_exchange | uint32 | 证券市场,1-SH,2-SZ |
stock_code | string | 证券代码 |
created_at | int64 | 委托日期时间戳(毫秒) |
code | string | 委托编号 |
price | uint32 | 委托单价 |
volume | uint64 | 委托数量 |
amount | uint64 | 成交金额 |
tx_dir | uint32 | 交易方向:0-未知,1-买入,2-卖出 |
tx_kind | uint32 | 交易类型:1-市价,2-限价,3-本方优先,10-撤单, 11-暂不清楚( 基金/ 债券有此值) |
4. 数据解析和处理:开发者需要解析接收到的数据,并将其进行处理,以便进一步分析或应用。解析过程包括解包数据的结构、提取关键字段、转换数据格式等。
5. 行情推送和更新:一旦有新的行情数据产生,数据服务提供商会将相应的数据通过接口推送给开发者。开发者需要及时处理并更新相应的数据,以保持数据的实时性。比如执行源代码:
created_at | int64 | 快照日期时间戳(毫秒) |
status | uint32 | 状态:0-开盘前,1-开盘集合竞价,2-集合竞价至连续竞价,3-连续竞价, 4-中午休市,5-收盘集合竞价,6-闭市 |
prev_close_price | uint32 | 前收盘价 |
open_price | uint32 | 开盘价 |
latest_price | uint32 | 最新价 |
high_price | uint32 | 最高价 |
low_price | uint32 | 最低价 |
limit_up_price | uint32 | 涨停价 |
limit_down_price | uint32 | 跌停价 |
order_quantity | uint32 | 成交笔数 |
volume | uint64 | 成交数量 |
amount | uint64 | 成交金额 |
bid_volume | uint64 | 委托买入数量 |
bid_price | uint32 | 委托买入加权平均价 |
ask_volume | uint64 | 委托卖出数量 |
ask_price | uint32 | 委托卖出加权平均价 |
bid_price_detail | repeated uint32 | 委托买入价格明细(十档) |
bid_volume_detail | repeated uint32 | 委托买入数量明细(十档) |
ask_price_detail | repeated uint32 | 委托卖出价格明细(十档) |
ask_volume_detail | repeated uint32 | 委托卖出数量明细(十档) |
代码部分:
// 查询各类交易数据
// category: 0=>资金, 1=>股份, 2=>当日委托, 3=>当日成交, 4=>可撤单,
// 5=>股东代码, 6=>融资余额, 7=>融券余额, 8=>可融证券,
// 12=>可申购新股, 13=>新股申购额度, 14=>配号, 15=>中签,
// 16=>未平仓融资合约, 17=>未平仓融券合约, 18=>未平仓两融合约
typedef void (*QueryDataProc)(int clientId, int category, char *result, char *errinfo);
const auto QueryData = reinterpret_cast<QueryDataProc>(GetProcAddress(hDLL, "QueryData"));
assert(QueryData);
std::cout << "========== 查询资金: category = 0 ==========\n";
int category = 0;
QueryData(clientId, category, result, errinfo);
if (NULL != errinfo[0]) {
std::cout << errinfo << std::endl;
} else {
std::cout << result << std::endl;
}
std::cout << std::endl;
6. 业务应用:开发者可以根据实时的L2行情数据进行行情分析、交易决策、量化交易等业务应用。根据需求,开发者可以编写相关的算法和策略,自动化执行相关的交易操作。
需要注意的是,具体的L2行情推送接口过程可能会因数据源和数据服务提供商的不同而有所差异。开发者在使用L2行情推送接口前,建议仔细查阅相关的文档和接口说明,以了解具体的接口规范和使用方法。