期货(CTP)柜台穿透测试
根据监管要求,对期货公司客户交易终端信息进行采集。
穿透测试申请
联系期货公司客户经理,向期货公司申请进行穿透式接入测试。
信息填写
客户经理会发送 交易终端认证申请表 让你进行填写(有可能叫其他名字) :
备注
填写内容,请参考以下表格。
问题 |
说明 |
供应商名称 |
北京功夫源科技发展有限责任公司 |
交易终端名称 |
功夫量化交易系统 |
版本号 |
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穿透式行情柜台
CTP穿透式交易柜台信息填写
根据期货公司所发信息进行填写,点击确定
备注
填写账户信息,请参考以下表格。
字段 |
字段说明 |
---|---|
账户名称 (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穿透式行情源柜台信息填写
根据期货公司所发信息进行填写,点击确定
备注
填写账户信息,请参考以下表格。
字段 |
字段说明 |
---|---|
账户ID (account_id) |
测试仿真账户,期货公司提供 |
密码 (password) |
测试仿真账户密码,期货公司提供 |
期货券商代码 (broker_id) |
券商代码(BrokerID) |
行情地址 (md_ip) |
期货公司提供 (例:180.168.146.187) |
行情端口 (md_port) |
期货公司提供 (例:10200) |
下单交易
填写完交易账户(TD)信息之后,启动进程,进程状态为 “就绪” / “Ready” 才表示登录连接正常,然后进行下单交易。
如果使用行情源(MD),也需要开启行情源进程, 进程状态为 “就绪” / “Ready” 才表示登录连接正常。
注意
# -*- 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图形界面版本 委托记录可以查看委托记录面板 委托记录面板 ; linux命令行版本可以在 ./kfc cli monit -l 中查看委托记录 , 具体操作参考 委托记录查看
Linux图形界面版本 成交记录可以查看成交记录面板 成交记录面板 ; linux命令行版本可以在 ./kfc cli monit -l 中查看委托记录 , 具体操作参考 委托记录查看
Linux图形界面版本 撤单(下单价格偏高/偏低),然后在委托记录里面选择对应委托记录的撤单选项进行撤单 ; linux命令行版本在策略中进行
资金不足/仓位不足/错误价格/错误合约等要求 : 可以在下单之后,委托记录查看详情