ReqUserLogin
用户登录请求,对应响应OnRspUserLogin。
◇ 1.函数原型
virtual int ReqUserLogin(CThostFtdcReqUserLoginField *pReqUserLoginField, int nRequestID) = 0;
◇ 2.参数
pReqUserLoginField:用户登录请求
struct CThostFtdcReqUserLoginField
{
///交易日
TThostFtdcDateType TradingDay;
///经纪公司代码
TThostFtdcBrokerIDType BrokerID;
///用户代码
TThostFtdcUserIDType UserID;
///密码
TThostFtdcPasswordType Password;
///用户端产品信息
TThostFtdcProductInfoType UserProductInfo;
///接口端产品信息
TThostFtdcProductInfoType InterfaceProductInfo;
///协议信息
TThostFtdcProtocolInfoType ProtocolInfo;
///Mac地址
TThostFtdcMacAddressType MacAddress;
///动态密码
TThostFtdcPasswordType OneTimePassword;
///终端IP地址
TThostFtdcIPAddressType ClientIPAddress;
///登录备注
TThostFtdcLoginRemarkType LoginRemark;
///终端IP端口
TThostFtdcIPPortType ClientIPPort;
};
UserID:操作员代码,之后的investorid需要属于该操作员管理下。
UserProductInfo:客户端的产品信息,如软件开发商、版本号等。
例如:SFITTraderV100。
LoginRemark:可以写登录备注,能够被交易系统的日志查询到。
OneTimePassword:如果期货公司启用了动态口令,客户会有一个电子口令牌,把生成的值,输入到登录报文里的OneTimePassword(动态密码)这个字段中去即可
ClientIPAddress:CTP前置主动获取,填写无效。
MacAddress:CTP前置主动获取,填写无效。
nRequestID:请求ID,对应响应里的nRequestID,无递增规则,由用户自行维护。
◇ 3.返回
0,代表成功。
-1,表示网络连接失败;
-2,表示未处理请求超过许可数;
-3,表示每秒发送请求数超过许可数。
◇ 4.调用示例
CThostFtdcReqUserLoginField reqUserLogin = { 0 };
strcpy_s(reqUserLogin.BrokerID, “0000”);
strcpy_s(reqUserLogin.UserID, “00001”);
strcpy_s(reqUserLogin.Password, “123456”);
m_pUserApi->ReqUserLogin(&reqUserLogin, nRequestID++);
◇ 5.FAQ
现在投资者登录的时候,有时候会被锁定,请问会有什么原因?
CTP有单独锁IP的功能。被锁定的情况下继续登录会报“CTP:登录失败次数超限,IP被禁止”。目前这个阈值一般设置为5000,单个交易日内累积计算。 CTP有锁IP+账号的功能。被锁定的情况下继续登录会报“CTP:连续登录失败次数超限,登录被禁止”。目前这个阈值一般设置为6-10,注意这里的登录错误次数CTP是连续计算的。 具体的阈值以期货公司设置的为准。 |
首次登陆如果提示修改密码,如何修改?
首次登陆如果提示修改密码,则必须在 |
“CTP:用户在线会话超出上限”是什么意思?
表示该UserID的同时在线会话数超出了期货公司设置的阈值,具体阈值咨询期货公司柜台设置。 |
登录报“CTP:重复的登录”,是什么原因?
正常情况下,收到登录成功的响应后再发起登录,是没有响应的,这是因为如果前置收到登陆成功的响应,则会过滤后续的相同Session的登陆请求。 极端情况下,当前置还没收到核心返回的登录成功响应,而此时又再次收到来自客户端的登录请求,就不会过滤,核心收到重复的登录请求后就会返回“CTP:重复的登录”的错误响应。 |
登录时候报错:“CTP:连续登录失败数超限,登录被禁止”,为什么?
此报错说明用户连续输错密码被禁止登录了,ip被锁定。此时用户换ip或者联系期货公司解锁即可。 |