一般来说通过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 = 1 ==========\n";
category = 1;
QueryData(clientId, category, result, errinfo);
if (NULL != errinfo[0]) {
std::cout << errinfo << std::endl;
} else {
std::cout << result << std::endl;
}
std::cout << std::endl;
进行查询如果获取不了数据,那一定是没有为参数 Result分配返回信息的内存空间。
参数 Result 保存操作结果, 需要分配 1024*1024 字节的空间Result 格式为表格数据, 每一行通过换行符\n 分割,每一列通过制表符\t分割例子: 股东代码\t 股东名称\t 帐号类别\t 保留信息\n 12345678\t\t0\t 信息 1\n 87654321\t\t2\t 信息 2 注: 不同券商返回的字段会有所不同
细节决定成败,设置错了就导致策略运行不了。而机会往往只有一瞬来触发。