期货(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穿透式 柜台

Linux图形界面版本 添加柜台流程参考 交易账户添加

Linux命令行版本添加柜台流程参考 交易账户添加

添加CTP穿透式行情柜台

行情源柜台选择 CTP穿透式 柜台

Linux图形界面版本 添加柜台流程参考 行情源添加

Linux命令行版本添加柜台流程参考 行情源添加

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” 才表示登录连接正常。

注意

  • Linux图形界面版本 可以选择手动下单 参考 手动下单

  • linux命令行版本使用策略下单,策略添加可以参考 策略添加 ,策略案例如下 (根据自己实际情况进行修改增减):

    • 例子中的 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图形界面版本 委托记录可以查看委托记录面板 委托记录面板 ; linux命令行版本可以在 ./kfc cli monit -l 中查看委托记录 , 具体操作参考 委托记录查看

  • Linux图形界面版本 成交记录可以查看成交记录面板 成交记录面板 ; linux命令行版本可以在 ./kfc cli monit -l 中查看委托记录 , 具体操作参考 委托记录查看

  • Linux图形界面版本 撤单(下单价格偏高/偏低),然后在委托记录里面选择对应委托记录的撤单选项进行撤单 ; linux命令行版本在策略中进行

  • 资金不足/仓位不足/错误价格/错误合约等要求 : 可以在下单之后,委托记录查看详情

测试通过

将测试结果反馈给期货公司之后,如果穿透式测试通过,期货公司会发给CTP生产环境接入参数,比如 : BrokerID、认证码、AppID、接口地址、交易端口、行情端口

然后就可以登录实盘账户进行交易了,交易/行情源柜台选择 “CTP”,具体使用可查看 客户端使用手册命令行使用手册