期货量化交易入门系列四——什么是穿透式监管,需要投资者做什么?

背景穿透式监管是中国证监会为强化市场风险防控、保护投资者权益而实施的一项重要监管机制。其核心是通过技术手段采集交易终端的底层信息,实现对交易行为的透明化监控。

一句话总结下就是:监控中心为了方便监管,需采集所有通过期货公司入场交易的客户的本地终端信息。

详细背景可以参考证监会《关于进一步加强期货经营机构客户交易终端信息采集有关事项的公告》及期货市场监控中心《期货公司客户交易终端信息采集及接入认证技术规范》这两篇公告。

以下是详细说明及投资者需注意的事项:


一、穿透式监管的定义与目的

  1. 定义
    穿透式监管要求期货公司通过交易系统接口(如CTP API)采集投资者交易终端的硬件和软件信息,包括但不限于IP地址、MAC地址、操作系统版本、硬盘序列号等,并将这些信息加密后报送至期货市场监控中心,确保监管部门能够“穿透”多层交易结构,直接掌握交易主体的真实信息。

  2. 监管目标

    • 防范风险:识别异常交易行为(如高频交易、对敲操纵等),防止市场操纵和系统性风险。
    • 保护投资者:通过实名制管理和大数据分析,维护中小投资者合法权益。
    • 合规性:确保交易终端软件合法合规,避免非法接入或未经备案的交易行为。

二、穿透式监管的技术实现

  1. 数据采集范围
    包括终端设备的硬件标识(如MAC地址)、操作系统信息、网络环境等,但不涉及用户文件内容扫描

  2. 加密与隐私保护
    采集的信息通过监控中心下发的公钥加密,仅监控中心可通过私钥解密,期货公司、交易所等中间环节无法查看明文。

  3. 监管版本要求

    • CTP API必须使用穿透式监管兼容的版本(如生产版6.3.15及以上),旧版本(如6.3.11及以前)无法连接升级后的交易系统。
    • 若使用错误版本,可能导致无法触发OnFrontConnected回调,需通过期货公司获取最新API。

三、投资者需配合的事项

1. 使用第三方交易软件的投资者
  • 无需额外操作:如直接使用快期、博易等已备案的软件,厂商已内置合规采集功能。这些是什么都不需要做的,因为第三方厂商已经向期货公司报备APPID,在软件内部逻辑已经写好。
2. 自研程序化交易系统的投资者(直连模式)

使用CTP API自开发交易程序的直连投资者,其实很简单,一句话就是,在ReqUserLogin之前需要先调用ReqAuthenticate。下面详细讲一下步骤。

自己查看开户期货公司官网,或者联系对应的经纪经理,申请认证码。通常来说会让你填一张表,表中有需要填写客户号例如:000001、软件名称 例如:**量化系统、APPID例如:abcdef_ghijkl_1.6.0、连接方式例如直连类型终端等信息。

注意:

客户号就是你的交易账号
APPID是你自己命名的,命名监控中心给出了规范,如下图:
给出几个范例:
个人开发终端:client_xxx_1.0.0
第三方终端:xxx_xx_1.4.0.0
中继厂商:xxxAPP_isssle_2.0.0.0

申请通过后,期货公司就会发送Authcode给投资者。

  • 申请认证码(AuthCode)
    需向期货公司提交以下信息申请唯一授权码:
    • AppID:按规范命名(如client_软件名_版本号),用于标识终端软件。
    • 客户号:交易账号。
    • 软件名称及版本:需符合监控中心格式要求。
  • 修改登录逻辑
    在代码中增加认证流程:
    • 连接交易系统后,先调用ReqAuthenticate()函数,提交AppID和AuthCode。
    • 认证通过后,再发起ReqUserLogin()登录请求。

step1:在API连接后发起认证

// 示例代码(C++)
void CUser::OnFrontConnected()
{
    cout << "OnFrontConnected." << endl;
    static const char *version = m_pUserApi->GetApiVersion();
    cout << "------当前版本号 :" << version << " ------" << endl;
    ReqAuthenticate();  // 先认证
}
int CUser::ReqAuthenticate()
{
    CThostFtdcReqAuthenticateField field;
    memset(&field, 0, sizeof(field));
    strcpy(field.BrokerID, "8000");
    strcpy(field.UserID, "001888");
    strcpy(field.AppID, "XY_Q7_V1.0.0");
    strcpy(field.AuthCode, "5A5P4V7AZ5LCFEAK");
    return m_pUserApi->ReqAuthenticate(&field, 5);
}

注意:
AppID就是客户申请时自己命名的,AuthCode是期货公司发给客户,两者是一一对应的。其实ReqAuthenticate函数早就有了,但以前是通过UserProductInfo和AuthCode这两个字段绑定验证,现在UserProductInfo废弃不用,改为AppID了,填写时注意不要出错。

step2:认证成功后发起登录

void CUser::OnRspAuthenticate(CThostFtdcRspAuthenticateField *pRspAuthenticateField, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
{
    printf("OnRspAuthenticate\n");
    if (pRspInfo != NULL && pRspInfo->ErrorID == 0)
    {
        printf("认证成功,ErrorID=0x%04x, ErrMsg=%s\n\n", pRspInfo->ErrorID, pRspInfo->ErrorMsg);
        ReqUserLogin();
    }
    else
    {
        cout << "认证失败," << "ErrorID=" << pRspInfo->ErrorID << "  ,ErrMsg=" << pRspInfo->ErrorMsg << endl;
    }
}
int CUser::ReqUserLogin()
{
    printf("====ReqUserLogin====,用户登录中...\n\n");
    CThostFtdcReqUserLoginField reqUserLogin;
    memset(&reqUserLogin, 0, sizeof(reqUserLogin));
    strcpy(reqUserLogin.BrokerID, "8000");
    strcpy(reqUserLogin.UserID, "001888");
    strcpy(reqUserLogin.Password, "1");
    return m_pUserApi->ReqUserLogin(&reqUserLogin, ++RequestID);
}

然后就可以在OnRspUserLogin看是否登录成功了。

3. 使用中继模式的投资者
  • 由第三方服务商负责信息采集与上报(如通过DataCollect.h接口),投资者需确保服务商合规。
  • 这种主要是第三方软件厂商的工作。而且如果是程序化客户,投资者使用的是不同的第三方厂商提供API,用法也不一致,这里就不细说了。总之,第三方厂商提供的API会用到CTP API包中的DataCollect.h中的函数来采集客户端信息,再在服务器上注册提交给CTP柜台。

四、违规风险与合规建议

  1. 违规后果

    • 使用未授权API版本或泄露AuthCode可能导致交易中断,甚至面临监管处罚(如上海韦纳因公开授权码被查处)。
    • 高频交易需遵守特定报备规则,禁止通过手续费减免等方式变相鼓励投机。
  2. 合规建议

    • 定期更新API:跟踪期货公司通知,及时升级至穿透式监管兼容版本。
    • 严格管理授权码:避免公开或共享AuthCode,防止非法接入。
    • 测试环境验证:通过SimNow或期货公司提供的仿真系统(如东吴期货仿真环境)测试策略合规性。

五、穿透式监管的未来发展

根据2024年国务院发布的《关于加强监管防范风险促进期货市场高质量发展的意见》,穿透式监管将进一步强化,包括:

  1. 全流程监控:从账户开立到交易行为,实现“一看到底”的持续监管。
  2. 技术升级:推动数字化、智能化风险预警系统,加强对高频交易的动态监测。

六、相关术语

直连模式

是指客户直接连到期货公司的柜台进行交易。投资者直接用CTP的API开发交易程序,连到期货公司的CTP系统交易,这就是典型的直连模式。也就是说,市场上大多数程序化交易投资者,直接使用柜台提供的API交易的,都是属于这种直连模式。另外像快期这种终端,也是直接连到CTP交易,所以也属于直连模式。

中继模式

是指客户通过第三方软件,向期货公司CTP系统报单交易,这时客户在第三方软件上下单,首先订单是到了第三方软件厂商的服务器,然后第三方软件厂商再调用CTP系统的API,将这笔订单发往CTP系统。这第三方软件厂商便称之为中继。

多对多中继模式

第三方软件厂商服务器为每个投资者都调用CTP API创建与CTP之间的单独的链接就是多对多的中继模式。例如文华财经的云条件单的功能,其实是将投资者的订单保存到了文华的云服务器上,投资者虽然退出文华终端,但文华服务器与CTP的链接仍然在,所以条件达到就可以把订单发送到CTP。

多对一中继模式

第三方软件厂商只创建一个与CTP之间的链接,用这个链接为所有投资者报单,这就是多对一模式。这种情况下需要第三方软件商以交易员用户登录CTP系统,而且只能为该交易员底下的投资者报单。这种模式多是用于期货公司内部软件和境外中介。


七、常见问题

1. API包中多了的DataCollect.h和LinuxDataCollect.so有什么用?

参见上文3.3,是转为中继模式准备的。同样API头文件中新增的两个函数RegisterUserSystemInfo和SubmitUserSystemInfo也是为中继准备的,一般程序化客户都用不到。

2. 是否必须要更新为穿透式版本?

答案是必须。不同于之前的CTP API版本都是向后兼容,后期CTP柜台升级为穿透式版本后,以前所有的API将都不能使用,只能使用最新的6.3.15版本API才能登陆上。根据目前消息,2019年6月14日(含)之后,所有的客户都必须使用6.3.15版本才可以登陆上,否则只能去期货公司页面下载最新软件手动下单了。

3. OnFrontConnected没有回调怎么办?

为了强制客户使用最新的穿透式API,如果客户使用API版本与CTP柜台不一致,将不会回调OnFrontConnected。目前一共有三类CTP API:旧生产版(6.3.11_20180109及以前);穿透式评测版(6.3.13_20181119和6.3.16_T1_20190508,这两个版本都可以用来评测);穿透式生产版(6.3.15_20190220)。这三个版本需要配合不同的CTP柜台才能登录上,也就是说一个前置IP地址,你能用某个登录上,就不可能用另外两个登录上。客户无法从API得知连接到的CTP后台前置是什么版本,所以只能用这三个版本的API自己测试得知。现在为止simnow的模拟最新地址:

BrokerID统一为:9999
标准CTP:
第一组:Trade Front:180.168.146.187:10100, Market Front:180.168.146.187:10110;
第二组:Trade Front:180.168.146.187:10101, Market Front:180.168.146.187:10111;

用户注册后,默认的APPID为simnow_client_test,认证码为0000000000000000(16个0),默认不开终端认证,如需测试终端认证可联系SIMNOW客服或注册“终端厂商测试”,参见《公告:SIMNOW对外前置网络调整》
同时simnow也提供了穿透式评测版后台供测试,参见《公告:SIMNOW平台将开启终端厂商穿透测试环境》,这个提供的地址

BrokerID:9999
Trade Front: 180.168.146.187:13030
Market Front: 180.168.146.187:13040

至于实盘穿透式生产版,请各位联系期货公司获取相应地址测试。


总结

穿透式监管通过技术手段提升期货市场的透明度和安全性,投资者需根据自身交易方式(直连或中继)配合完成认证流程,并严格遵守版本和授权码管理要求。自研程序化交易系统的开发者应重点关注API版本兼容性及认证逻辑的代码实现,避免因技术疏漏导致交易中断或合规风险。

### 回答1: 1. 打开终端,输入以下命令安装fcitx输入法: sudo apt-get install fcitx fcitx-config-gtk fcitx-table-wubi 2. 安装完毕后,打开“系统设置”-“语言支持”,将“键盘输入法系统”设置为fcitx。 3. 重新启动电脑,打开任意文本编辑器,按下Ctrl+Space键即可切换输入法,选择中文输入法即可开始输入中文。 ### 回答2: 在Linux系统下安装中文输入法有多种方法,以下是其中一种较常见的方法: 1. 打开终端,输入以下命令安装fcitx输入法框架: sudo apt-get install fcitx 2. 安装后,再次在终端中输入以下命令安装fcitx的输入法引擎: sudo apt-get install fcitx-googlepinyin 3. 安装完成后,打开系统设置,找到“地区和语言”或“语言支持”选项,在“输入源”或“键盘输入法系统”中选择fcitx作为默认输入法。 4. 重新启动电脑,启动时会自动加载fcitx输入法框架。 5. 在系统托盘中找到输入法图标,右键点击选择“配置”,进入fcitx配置页面。 6. 在配置页面中,点击“+”号添加中文输入法。一般情况下,选择“pinyin”或“googlepinyin”作为中文输入法。 7. 完成上述步骤后,就可以在需要输入中文的应用程序中使用中文输入法了。在输入框中点击右键,选择“切换输入法”,或使用快捷键(默认为Ctrl + Space)进行切换。 需要注意的是,以上方法适用于大多数Linux系统,对于不同的发行版可能会有细微的差异。对于某些特定的发行版,也可以通过软件包管理器直接搜索和安装相应的中文输入法。另外,还可以通过其他输入法框架,如ibus,来安装和使用中文输入法。 ### 回答3: 要在Linux系统中安装中文输入法,可以按照以下步骤进行操作。 第一步,打开终端窗口,在终端中输入以下命令,以安装ibus输入法框架: sudo apt-get install ibus 第二步,再次在终端中输入以下命令,以安装ibus-pinyin中文输入法: sudo apt-get install ibus-pinyin 第三步,在终端中输入以下命令,以重新启动ibus服务: ibus restart 第步,打开系统设置,选择“区域与语言”或类似选项,找到“输入源”或“输入法”,然后添加中文输入法。 第五步,在输入法选项中选择新添加的中文输入法,这样就完成了中文输入法的安装。 在使用中文输入法时,可以通过以下方法进行切换: 方法一,使用快捷键:按下Ctrl+空格键,切换输入法。 方法二,通过任务栏中的输入法图标:点击输入法图标,然后从弹出的菜单中选择所需的输入法。 安装中文输入法后,可以在几乎所有的应用程序中使用中文输入。通过切换输入法,可以方便地在中文和其他语言之间切换,满足自己的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值