通达信交易接口以什么形式执行下单的?

通达信程交易接口 以API形式来执行下单接口,一般不再需要通过接口系统之间进行连接,通过直接调用通达信dll交易函数的方式直接进行交易,包括下单,撤单,查询资金股份、当日委托、当日成交等方面都能很快的执行出来。

以api的形式调用接口来办理执行下单,比如借用开发的api接口的开发文档:

一、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

二、通达信交易接口执行下单程序源码分享:

// 加载DLL

HINSTANCE hDLL = LoadLibraryA("MetaTrade.dll");

assert(hDLL);

// 初始化

typedef int (*InitProc)();

const auto Init = reinterpret_cast<InitProc>(GetProcAddress(hDLL, "Init"));

assert(Init);

const int authorizedCount = Init(); // 已授权账号数量

assert(authorizedCount > 0);

std::cout << "已授权账号数量: " << authorizedCount << std::endl;

std::cout << std::endl;

// 接收缓冲区, 用于接收返回结果和错误信息

auto resultBuf = std::make_unique<char[]>(1024 * 1024);

auto errinfoBuf = std::make_unique<char[]>(256);

char *const result = resultBuf.get();

char *const errinfo = errinfoBuf.get();

// 登录 接口支持普通交易和两融交易账号, 以下例子使用两融账号

typedef int (*LogonProc)(const char *ip, short port, const char *version,

short yybid, const char *account,

const char *tradeAccount, const char *jyPassword,

const char *txPassword, char *errinfo);

const auto Logon = reinterpret_cast<LogonProc>(GetProcAddress(hDLL, "Logon"));

assert(Logon);

std::string ip = "1.2.3.4"; // 券商IP(注意区分两融和普通)

short port = 5678; // 券商端口(注意区分两融和普通)

std::string version = ""; // 版本号: 一般填空

short yybid = 0; // 营业部ID: 一般填0

std::string account = "12345678.C"; // 登录账号: 两融账号需添加.C结尾

std::string tradeAccount = "12345678"; // 交易账号: 一般与登录账号相同, 但不需添加.C结尾

std::string jyPassword = "password"; // 交易密码

std::string txPassword = ""; // 通讯密码: 一般填空

const int clientId = Logon(ip.c_str(), port, version.c_str(), yybid,

account.c_str(), tradeAccount.c_str(),

jyPassword.c_str(), txPassword.c_str(), errinfo);

assert(clientId >= 0);

std::cout << "登录成功, client = " << clientId << std::endl;

std::cout << std::endl;

猜你喜欢

转载自blog.csdn.net/Q_121463726/article/details/129044900