在股票量化市场上,大家可能对股票交易开放接口的意思不太理解,其实换个角度来看,就是关于由开发团队进行开发的股票交易开放接口,那么对于接口的开发原理跟代码是怎么样的呢?
一、股票交易开放接口函数的调用:
名称 |
功能 |
|
基本函数 |
Init |
|
Deinit |
||
Logon |
||
Logoff |
||
QueryData |
||
QueryHistoryData |
||
SendOrder |
||
CancelOrder |
||
GetQuote |
||
Repay |
||
GetExpireDate |
||
|
||
单账户批量函数 |
QueryDatas |
|
SendOrders |
||
CancelOrders |
||
GetQuotes |
||
|
||
多账户批量函数 |
QueryMultiAccountsDatas |
|
SendMultiAccountsOrders |
||
CancelMultiAccountsOrders |
||
GetMultiAccountsQuotes |
||
|
二、API 调用结果说明
相关函数 |
调用结果 |
Deinit Logoff |
无 |
|
|
Init |
返回值为授权成功的交易账户数量 返回值< 1 时, 无需调用 Deinit 接口, 也不能调用其它接口, 否则会出错! |
|
|
Logon |
调用成功: 返回值为 客户端 Id 调用失败: 返回值 <= 0 |
参数ErrorInfo 保存错误信息, 需要分配 256 字节的空间 |
|
|
|
GetExpireDate |
返回值为API 授权到期日期 |
|
格式为yyyymmdd 整数, 如 2018 年 5 月 1 日为 20180501 |
|
|
单项操作 |
调用成功: ErrorInfo 为空字符串 |
QueryData |
调用失败: ErrorInfo 为错误信息 |
QueryHistoryData |
参数Result 保存操作结果, 需要分配 1024*1024 字节的空间 |
SendOrder |
Result 格式为表格数据, 每一行通过换行符\n 分割,每一列通过制表符\t 分割 |
CancelOrder |
例子: |
GetQuote |
股东代码\t 股东名称\t 帐号类别\t 保留信息\n |
Repay |
12345678\t\t0\t 信息 1\n |
|
87654321\t\t2\t 信息 2 |
|
注: 不同券商返回的字段会有所不同 |
|
参数ErrorInfo 保存错误信息, 需要分配 256 字节的空间 |
|
|
批量操作 |
批量操作的参数通过数组方式传入, 用下标区分每项操作 |
QueryDatas |
第i 项操作调用成功: ErrorInfo[i]为空字符串 |
SendOrders |
第i 项操作调用失败: ErrorInfo[i]为错误信息 |
CancelOrders |
参数Result[]保存批量操作结果, Result[i]保存第 i 项操作结果 |
GetQuotes |
每项操作结果需要分配1024*1024 字节的空间 |
QueryMultiAccountsDatas |
每项操作结果的格式可参阅[Result 格式] |
SendMultiAccountsOrders |
参数ErrorInfo[]保存批量错误信息, ErrorInfo[i]保存第 i 项错误信息 |
CancelMultiAccountsOrders |
每项错误信息需要分配256 字节的空间 |
GetMultiAccountsQuotes |
|
|
三、股票交易开放接口api调用查询的开发源码分享:
// 查询各类交易数据
// 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;
那么,在股票交易开发接口执行这些数据源码中,就要注意有没有完善到位,然后在持股方面要做好一些个股数据的调查,在股票交易接口直接输入策略查询程序即可。