期货(CTP)柜台穿透测试 ============================= 根据监管要求,对期货公司客户交易终端信息进行采集。 穿透测试申请 ~~~~~~~~~~~~~~ 联系期货公司客户经理,向期货公司申请进行穿透式接入测试。 信息填写 ~~~~~~~~~~~~~~ 客户经理会发送 交易终端认证申请表 让你进行填写(有可能叫其他名字) : .. note:: 填写内容,请参考以下表格。 .. list-table:: :width: 600px * - 问题 - 说明 * - 供应商名称 - 北京功夫源科技发展有限责任公司 * - 交易终端名称 - 功夫量化交易系统 * - 版本号 - 2.0 * - AppID - TAURUS_KUNGFU_2.0 * - 申请接入的期货公司交易系统 - CTP * - 接入类型 - 直连模式 * - 操作系统 - 看使用的是哪个系统 . Windows / Linux 都可以 * - 接入期货公司信息系统的方式 - 互联网 * - 资金账号 - 期货公司提供的穿透测试账户 * - 系统部署位置(机房名/地理位置) - 穿透测试机所在位置 * - 接入系统用途 - 量化交易 * - 涉及客户资金账户数量(个) - 1 * - 联系电话 - 个人电话 * - 联系邮箱 - 个人邮箱 * - 交易软件架构 - 单一客户端 * - 是否具有子账户(虚拟账户)开立功能 - 不具有 * - 是否具有子账户/分仓交易功能 - 不具有 * - 是否具有风控功能 - 具有 * - 风控类型 - 事前,事中 * - 基本功能(可多选) - 批量下单功能 , 交易模型编写 , 多账户管理 , 套利/组合套利, 一键/快捷下单 * - 交易策略说明 - 软件自动下单 * - 是否具有多账户功能 - 具有 * - 是否支持监控中心终端认证及信息采集 - 支持 * - 软件是否支持数字证书接入 - 不支持 * - 软件是否支持记录详细日志 - 支持 * - 软件是否具有监控连接异常断开情形 - 具有 * - 发送委托交易指令的终端是否具有报送实际IP地址MAC地址、硬盘序列号、CPU序列号等信息能力 - 有 * - 是否具有自动撤单功能 - 否 * - 是否具有自动追单功能 - 否 * - 是否具有资产管理功能 - 否 * - 是否具有场外配资功能 - 否 * - 是否具有资金存管功能 - 否 * - 是否具备验资、验仓功能 - 否 * - 是否为程序化交易 - 是 * - 是否允许其他机构再次接入的情形 - 否 * - 是否作为中继系统,有其他机构接入 - 否 * - 是否具有网上开户功能 - 否 * - 程序化交易策略类型 - 按照个人信息选择(套保 / 套利 / 投机) * - 期货系统发生重大升级或变更,是否有专人进行测试及评估 - 是 * - 交易策略系统升级变更操作方式 - 系统更新会有信息推送提示, 可由用户自行决定是否更新 * - 主要功能简述 - 多账户多柜台管理,账户信息展示,策略管理,策略编辑,策略信息展示,手动下单,策略下单,持仓展示,委托/成交数据展示详情,交易算法应用,定时启动功能,下单阈值提示 .. 注意:: - 穿透测试建议使用实体机器,不要使用虚拟机,避免信息采集异常 - 如为linux下软件,请尽量使用物理机赋予root权限进行评测,避免信息采集异常 - AppID 一定不要填错 信息接收 ~~~~~~~~~~~~~~ 填写完申请表之后,期货公司会发送穿透测试信息到所填邮箱,或者是CTP仿真环境信息及测试指引,也有可能是微信直接发送,信息一般包括 : 仿真账户、密码、BrokerID、认证码、AppID、接口地址(互联网)、交易端口、行情端口 穿透式测试 ~~~~~~~~~~~~~~~~~~~~ 建议在linux环境中使用linux版本,请自行进行穿透测试 如有商务合作请联系客服(https://www.kungfu-trader.com/ ,首页底部加入群聊,联系客服即可) .. 注意:: - 穿透测试建议使用实体机器,不要使用虚拟机,避免信息采集异常 - 如在linux下使用软件,请尽量使用物理机赋予root权限进行评测,避免信息采集异常 - linux的系统版本为centos7 , 命令行界面/图形界面均可 添加CTP穿透式交易柜台 +++++++++++++++++++++++ **交易柜台选择 CTP穿透式 柜台** Linux图形界面版本 添加柜台流程参考 :ref:`交易账户添加 <交易账户添加>` Linux命令行版本添加柜台流程参考 :ref:`交易账户添加 <交易账户添加Linux>` 添加CTP穿透式行情柜台 +++++++++++++++++++++++ **行情源柜台选择 CTP穿透式 柜台** Linux图形界面版本 添加柜台流程参考 :ref:`行情源添加 <行情源添加>` Linux命令行版本添加柜台流程参考 :ref:`行情源添加 <交易账户添加Linux>` CTP穿透式交易柜台信息填写 +++++++++++++++++++++++++++ 根据期货公司所发信息进行填写,点击确定 .. note:: 填写账户信息,请参考以下表格。 .. list-table:: :header-rows: 1 * - 字段 - 字段说明 * - 账户名称 (account_name) - 账户备注 * - 账户ID (account_id) - 测试仿真账户,期货公司提供 * - 密码 (password) - 测试仿真账户密码,期货公司提供 * - 期货券商代码 (broker_id) - 券商代码(BrokerID) * - 穿透认证码 (auth_code) - 认证码,期货公司提供 * - 客户端名称 (product_info) - 软件信息,请填写“KUNGFU” * - 客户端识别号 (app_id) - 申请授权码的时候提交的AppID,填写 TAURUS_KUNGFU_2.0 * - 交易IP (td_ip) - 期货公司提供 (例:180.168.146.187) * - 交易端口 (td_port) - 期货公司提供 (例:10200) * - 保证金比例详情 (broker_margin_ratio) - 不同Broker的保证金比例不同,是否需要请求对应Broker的保证金比例,该操作因为ctp一秒内请求限制,会在一个交易日内首次开启时耗时10min左右,如不开启,则会用交易所默认的保证金比例进行功夫内部计算 (穿透测试无需开启) * - 同步外部订单 (sync_external_order) - 开启后,当用户交易账户进程开启时,其他交易软件的订单也将同步到功夫交易系统中,委托记录中“下单源”将显示“系统外” (穿透测试无需开启) * - 恢复今日订单 (recover_order_trade) - 开启后,启动账户时将从柜台拉取本交易日的订单 (穿透测试无需开启) .. 注意:: - 测试账户一般为申请后的第二天生效 (具体可以咨询期货公司) - 有的期货公司会要求首次登录需要修改密码,可以根据期货公司发的仿真快期v2下载链接下载仿真快期v2修改密码或者找期货公司进行修改 - CTP仿真开放时间一般为 : 周一至周五 8:55 -16:10 (具体时间可以咨询期货公司) - 如果账户登录时报错 : 客户端认证失败。一般原因是 AppID 或者 授权码错了,检查信息是否填写有误,如果填写没有错误可以找期货公司查看是否授权码给错了 CTP穿透式行情源柜台信息填写 +++++++++++++++++++++++++++++ 根据期货公司所发信息进行填写,点击确定 .. note:: 填写账户信息,请参考以下表格。 .. list-table:: :header-rows: 1 * - 字段 - 字段说明 * - 账户ID (account_id) - 测试仿真账户,期货公司提供 * - 密码 (password) - 测试仿真账户密码,期货公司提供 * - 期货券商代码 (broker_id) - 券商代码(BrokerID) * - 行情地址 (md_ip) - 期货公司提供 (例:180.168.146.187) * - 行情端口 (md_port) - 期货公司提供 (例:10200) 下单交易 +++++++++++ 填写完交易账户(TD)信息之后,启动进程,进程状态为 "就绪" / "Ready" 才表示登录连接正常,然后进行下单交易。 如果使用行情源(MD),也需要开启行情源进程, 进程状态为 "就绪" / "Ready" 才表示登录连接正常。 .. 注意:: - Linux图形界面版本 可以选择手动下单 参考 :ref:`手动下单 <手动下单>` - linux命令行版本使用策略下单,策略添加可以参考 :ref:`策略添加 <策略添加>` ,策略案例如下 (根据自己实际情况进行修改增减): - 例子中的 ACCOUNT 修改成测试账户 ; 订阅的标的填写期货公司要求的交易所标的和对应交易所代码 ; 因为例子中订阅的是上期所标的,平仓选择了平今 - 例子中主要是开仓 (开多仓,开空仓),撤单,平仓(平多仓,平空仓) 操作,具体下单操作按照期货公司要求进行 - 不同期货公司对交易笔数/交易标的有不同要求,比如笔数不少于5笔,下单指令覆盖开仓、平仓、撤单,标的选择中金所(IF、IH、IC)等,具体看期货公司要求 :: # -*- coding: UTF-8 -*- import kungfu.yijinjing.time as kft from kungfu.wingchun.constants import * from pykungfu import wingchun as wc # 柜台id SOURCE = "ctpTest" # 要链接的账户id, 修改成你的测试账户 ACCOUNT = "123456" # 下单数量 VOLUME = 2 # 订阅标的 tickers = ["al2408","ag2408"] # 标的对应的交易所 EXCHANGE = "SHFE" # 启动前回调,添加交易账户,订阅行情,策略初始化计算等 def pre_start(context): context.log.info("[pre_start]") # 添加账户连接 context.add_account(SOURCE, ACCOUNT) # 订阅标的行情 context.subscribe(SOURCE, tickers, EXCHANGE) def post_start(context): context.log.info("[post_start]") # 收到快照行情时回调 def on_quote(context, quote, location,dest): context.log.warning("标的 {} --- 最新价 {}".format(quote.instrument_id,quote.last_price)) # al2408 标的做多 if quote.instrument_id == "al2408": order_id_buy = context.insert_order(quote.instrument_id, EXCHANGE, SOURCE, ACCOUNT, quote.last_price, VOLUME, PriceType.Limit, Side.Buy, Offset.Open) # 撤单函数 action_id = context.cancel_order(order_id_buy) # ag2408 标的做空 if quote.instrument_id == "ag2408": order_id_sell = context.insert_order(quote.instrument_id, EXCHANGE, SOURCE, ACCOUNT, quote.last_price, VOLUME, PriceType.Limit, Side.Sell, Offset.Open) # 收到成交信息回报时回调 def on_trade(context, trade, location,dest): context.log.info("[on_trade] 成交标的 --- {}".format(trade.instrument_id)) # al2408 平仓1手 if trade.instrument_id == "al2408": order_id_buy = context.insert_order(trade.instrument_id, EXCHANGE, SOURCE, ACCOUNT, trade.price, VOLUME, PriceType.Limit, Side.Sell, Offset.CloseToday) # ag2408 平仓1手 if trade.instrument_id == "ag2408": order_id_sell = context.insert_order(trade.instrument_id, EXCHANGE, SOURCE, ACCOUNT, trade.price, VOLUME, PriceType.Limit, Side.Buy, Offset.CloseToday) 测试反馈 ~~~~~~~~~~~~~~ 按照期货公司要求进行穿透式测试,然后反馈给期货公司 .. 注意:: - 不同期货公司的要求不同,有的公司会发文件需要提供委托记录/成交记录/错误保单等截图,有的只需要下单无需截图。 具体看期货公司要求 - Linux图形界面版本 委托记录可以查看委托记录面板 :ref:`委托记录面板 <委托记录面板>` ; linux命令行版本可以在 ./kfc cli monit -l 中查看委托记录 , 具体操作参考 :ref:`委托记录查看 <监控单进程>` - Linux图形界面版本 成交记录可以查看成交记录面板 :ref:`成交记录面板 <成交记录面板>` ; linux命令行版本可以在 ./kfc cli monit -l 中查看委托记录 , 具体操作参考 :ref:`委托记录查看 <监控单进程>` - Linux图形界面版本 撤单(下单价格偏高/偏低),然后在委托记录里面选择对应委托记录的撤单选项进行撤单 ; linux命令行版本在策略中进行 - 资金不足/仓位不足/错误价格/错误合约等要求 : 可以在下单之后,委托记录查看详情 测试通过 ~~~~~~~~~~~~~~ 将测试结果反馈给期货公司之后,如果穿透式测试通过,期货公司会发给CTP生产环境接入参数,比如 : BrokerID、认证码、AppID、接口地址、交易端口、行情端口 然后就可以登录实盘账户进行交易了,交易/行情源柜台选择 "CTP",具体使用可查看 :ref:`客户端使用手册 <客户端使用手册>` 、 :ref:`命令行使用手册 <命令行使用手册>`