客户端使用手册
备注
功夫交易系统的操作界面借助 模块化自由集成 解决方案获得灵活性和可视性,力求更加便捷直观
系统以功能为组,并分别适配不同面板,用户可根据操作习惯灵活地使用和调整面板,
模块化系统具有更加 灵活的统计能力,如持仓面板可根据选中内容的不同,对策略、账户、交易算法的持仓进行分别统计。
交易账户面板
用户可以在面板中添加新账户、删除/编辑已有账户、创建账户组、单独启动/中止某个账户进程。


添加账户
点击交易账户面板的“添加”按钮。

选择添加账户所使用的柜台 : ctp (期货柜台) , xtp (股票柜台) , sim (模拟柜台)。
注 : sim柜台数据为随机数据,仅供参考


示例:添加“CTP账户”。
第二步选择添加CTP柜台 , 点击确认后,弹出账号设置弹窗

备注
填写账户信息,请参考以下表格。
字段 |
字段说明 |
---|---|
账户名称 |
账户备注 |
账户ID |
交易账户名称,券商提供(例如:089270) |
密码 |
交易账户密码,券商提供(例如:123456) |
期货券商代码 |
券商代码(broke_id)(例如:9999) |
穿透认证码 |
授权码(auth_code),实盘由券商提供,模拟盘为 0000000000000000 |
客户端名称 |
软件信息,请填写“KUNGFU” |
客户端识别号 |
申请授权码的时候提交的id,实盘填写“TAURUS_KUNGFU_2.0”,模拟盘填写 “simnow_client_test” |
交易IP |
交易柜台地址 (例:180.168.146.187) |
端口 |
交易柜台端口 (例:10200) |
同步外部订单 |
开启后,当用户交易账户进程开启时,其他交易软件的订单也将同步到功夫交易系统中,委托记录中“下单源”将显示“系统外” |
恢复今日订单 |
开启后,启动账户时将从柜台拉取本交易日的订单 |
License Code |
账户授权码 (官网许可购买页面 进行购买) |
完成填写后,点击“确定”完成账户配置,可点击进程开关按钮以运行账户。
示例:添加“CTP穿透式”交易账户。
第二步选择添加CTP穿透式柜台 , 点击确认后,弹出账号设置弹窗

备注
填写账户信息,请参考以下表格。
字段 |
字段说明 |
---|---|
账户名称 |
账户备注 |
账户ID |
交易账户名称,券商提供(例如:089270) |
密码 |
交易账户密码,券商提供(例如:123456) |
期货券商代码 |
券商代码(broke_id)(例如:9999) |
穿透认证码 |
授权码(auth_code),实盘由券商提供,模拟盘为 0000000000000000 |
客户端名称 |
软件信息,请填写“KUNGFU” |
客户端识别号 |
申请授权码的时候提交的id,实盘填写“TAURUS_KUNGFU_2.0”,模拟盘填写 “simnow_client_test” |
交易IP |
交易柜台地址 (例:180.168.146.187) |
端口 |
交易柜台端口 (例:10200) |
同步外部订单 |
开启后,当用户交易账户进程开启时,其他交易软件的订单也将同步到功夫交易系统中,委托记录中“下单源”将显示“系统外” |
恢复今日订单 |
开启后,启动账户时将从柜台拉取本交易日的订单 |
License Code |
账户授权码 (官网许可购买页面 进行购买) |
完成填写后,点击“确定”完成账户配置,可点击进程开关按钮以运行账户。
示例:添加“XTP账户”。
第二步选择添加XTP柜台 , 点击确认后,弹出账号设置弹窗

备注
填写账户信息,请参考以下表格。
字段 |
字段说明 |
---|---|
账户别名 |
账户备注 |
账户id |
股票交易账户 |
密码 |
股票交易账户密码 |
软件密钥 |
券商提供 |
交易IP |
交易柜台IP地址,券商提供 (例如 : 122.112.139.0 ) |
交易端口 |
交易柜台端口,券商提供 (例如 : 6101) |
客户ID |
1~99中选择任意数字填写,用于区分同一账户多客户端登录 |
同步外部订单 |
开启后,当用户交易账户进程开启时,其他交易软件的订单也将同步到功夫交易系统中,委托记录中“下单源”将显示“系统外” |
恢复今日订单 |
开启后,启动账户时将从柜台拉取本交易日的订单 |
License Code |
账户授权码 (官网许可购买页面 进行购买) |
完成填写后,点击“确定”完成账户配置,可点击进程开关按钮以运行账户。
示例:添加“功夫模拟 (sim) 账户”。 第二步选择添加功夫模拟柜台 , 点击确认后,弹出账号设置弹窗

备注
填写账户信息,请参考以下表格。
字段 |
字段含义 |
---|---|
账户ID |
交易的账户id( 随意填写 , 例如 : 111 , test) |
撮合模式 |
用户可从“失败、等待中、撤单、部分成交部分撤单、部分成交部分等待、成交、多笔成交”中选择其一,使用此账户下单委托的订单状态将模拟为撮合状态设置的模式,以便测试时使用 |
完成填写后,点击“确定”完成账户配置,可点击进程开关按钮以运行账户。
账户启动
点击账户的进程按钮运行账户,进程状态为 “就绪” 时表示账户登录成功。

账户信息查看/编辑
点击“账户设置”按钮。

用户可查看该账户设置的信息及参数并进行修改。
注意
账户进程开启时修改账户信息,修改内容不会即时生效。
需要用户手动重启账户进程,新的账户配置才能生效。
账户日志
日志可帮助用户监控账户的运行情况,排查异常内容。

点击日志按钮,系统将在新窗口展示账户实时运行日志。


账户删除

点击删除按钮将关闭该账户交易进程并清空所有账户数据、删除该账户。
注意
删除账户会清空的账户数据包括该账户委托记录、该账户成交记录,该账户交易日志等信息。
如果需要保留数据请在删除前做好下载工作。
行情源面板
备注
功夫系统获取行情源原理: 功夫通过账户下行情地址获取行情,因此行情源的账号密码请填写 与交易账户相同的账户密码 。


行情源添加
点击行情源面板的右上方的“添加”按钮。

选择柜台API窗口选择要添加的柜台 : CTP (期货柜台) , XTP (股票柜台) , CTP穿透式(期货穿透专用柜台) , OKX(数字货币-欧易柜台) , BinanceFuture(数字货币-币安柜台) , 功夫模拟(sim模拟柜台)。
注 : sim柜台数据为随机数据,仅供参考


示例:添加“ctp行情账户”。
第二步选择CTP柜台 , 点击确认后,弹出行情设置弹窗

备注
填写账户信息,请参考以下表格。
字段 |
字段说明 |
---|---|
账户ID |
与交易账户相同,账户名称(例如:089270) |
密码 |
与交易账户相同,账户密码(例如:123456) |
期货券商代码 |
与交易账户相同,券商代码(broke_id)(例如:9999) |
行情地址 |
行情柜台地址 (例:180.168.146.187) |
端口 |
行情柜台端口 (例:10200) |
示例:添加“xtp行情账户”。
第二步选择XTP柜台 , 点击确认后,弹出行情设置弹窗

备注
填写账户信息,请参考以下表格。
字段 |
字段含义 |
---|---|
账户 |
与交易账户登录时填写同一账号,股票的交易账户 |
密码 |
与交易账户登录时填写同一账号,账户密码 |
行情IP |
行情柜台IP地址,由券商提供 (例如 : 122.112.139.0 ) |
行情端口 |
行情柜台端口,由券商提供 (例如 : 6101) |
协议 |
接收行情协议,请选择TCP/UDP |
缓冲区大小 |
非必填,设置采用接受缓冲区大小 |
客户ID |
必填,用户自行设置,可填写1~99中任一数字,用于区分同一账户多客户端登录 |
查询instruments |
是否查询query_instruments, 开启后会查询所有可交易标的, 流量太大频繁查询可能导致账号或ip被XTP拉黑 |
点击“确定”完成行情账户配置。
示例:添加“OKX行情账户”。
第二步选择OKX柜台 , 点击确认后,弹出行情设置弹窗

备注
填写账户信息,请参考以下表格。
字段 |
字段含义 |
---|---|
开启Ticker推送 |
开启Ticker数据推送,可能会占用很大内存 |
开启Transaction推送 |
开启逐笔成交推送,可能会占用很大内存 |
开启费率推送 |
开启费率数据推送,可能会占用很大内存 |
点击“确定”完成行情账户配置。
示例:添加“BinanceFuture行情账户”。
第二步选择BinanceFuture柜台 , 点击确认后,弹出行情设置弹窗

备注
填写账户信息,请参考以下表格。
字段 |
字段含义 |
---|---|
开启Ticker推送 |
开启Ticker数据推送,可能会占用很大内存 |
开启Transaction推送 |
开启逐笔成交推送,可能会占用很大内存 |
开启费率推送 |
开启费率数据推送,可能会占用很大内存 |
点击“确定”完成行情账户配置。
示例:添加“功夫模拟(sim)”行情账户。
第二步选择功夫模拟柜台 , 二次确认后,完成功夫模拟行情柜台的配置
行情源启动
点击行情源的进程按钮运行行情,当进程状态为”就绪”时,行情接入成功。

行情源信息查看/编辑
点击“行情源设置”按钮。

用户可查看该行情源设置的信息及参数,且允许修改行情源信息;如果修改时该行情进程处于开启状态,修改的信息不会即刻生效,需要用户手动重启行情进程。
行情源日志

日志可帮助用户监控行情源运行情况。点击日志按钮,将在新窗口打开行情源实时运行日志。

行情源删除

注意
删除行情将停止行情进程,无法接收到新行情,可能会影响算子、策略进程、交易任务的下单。
关闭前请注意是否有依赖本行情源的进程正在运行。
策略进程面板
策略进程面板相当于策略池,允许用户导入策略文件、编辑代码。代码修改将 实时储存 。
小技巧
结合功夫灵活的多面板调度,点击选中策略能够让系统按策略统计该策略的持仓、委托记录、成交记录(请在对应面板查看)


添加策略
点击“添加”按钮,填写策略相关信息。


字段 |
字段说明 |
---|---|
策略ID |
策略名称,策略ID不允许重复 |
策略路径 |
从本地选择 .py 策略文件 |
完成填写后,点击“确定”完成策略添加。
注意
策略文件所在位置需要与功夫系统安装目录在同一个盘。
启动策略前,需确认策略使用的交易进程(TD)/行情进程(MD)连接是否处于就绪状态,TD、MD未就绪将导致策略下单失败。
启动策略
点击策略进程按钮开启策略进程,再次点击策略进程按钮则停止运行中的策略。


策略日志查看
点击日志按钮,可以在新窗口中查看策略运行日志。


实时编辑策略代码
功夫客户端中内嵌了IDE,用户可在客户端中编辑本地策略。点击编辑按钮,将弹出策略编辑弹窗,修改将实时保存。




删除策略
点击策略后方的删除按钮即可删除策略,删除前系统将将关闭策略进程,停止该策略的下单。


回放工具
回放工具通过模拟盘中交易情况,可以帮助用户在盘后进行代码调试、策略复盘。
回放工具可增加log、使用实盘数据进行模拟撮合、使用实盘下单数据查看不同。
回放-增加更加详细级别的log
不使用撮合器的情况下,回放工具仅支持增加log(修改日志级别/在部分代码处增加日志打印代码)。
备注
例1 全局设置中,日志级别为info,想看到debug级别的日志以排查存在的问题。
点击策略进程面板 - 回放按钮

选择想查看debug日志级别的session,点击确定。
小技巧
允许用户自行设定停止回放的结束时间;若策略进程运行时间较长,想回放的部分仅在前半程,可自定义结束时间

回放产生的debug级别日志将在新窗口中打开。
注:若选择回放的session持续时间较长,回放进程将持续数秒,回放完成后将显示日志

备注
例2 原策略代码仅打印下单标的代码、order_id,需要增加下单价log以便导出数据进行分析。

打开代码编辑器,找到打印日志的代码”context.log.info”,增加打印下单价格的日志。

点击回放按钮。

选择回放的session,点击确定。

回放成功运行,成功在日志中增加打印下单价格的内容。

回放-改变策略下单逻辑,使用实盘数据模拟回测
撮合器能够帮助用户使用实盘行情数据进行模拟交易撮合。用户 修改下单策略逻辑 后需要使用回放功能时, 必须使用撮合器 。
备注
例3 用户改变下单策略逻辑,且想使用实盘数据模拟新策略的下单情况。
背景:用户已经在实盘中进行过下单,实盘下单逻辑为: 行情价 + 1 < 200 时下单。
诉求:想模拟下单逻辑修改为 行情价 + 2 < 200 时下单的成交情况。
.png)
打开代码编辑器,找到下单逻辑代码,将逻辑修改为 行情价 + 2 < 200 时下单。
.png)
点击回放按钮。

选择回放的session,点击确定。
注意
必须打开“使用撮合器”配置
.png)
回放成功运行,系统将按照修改后下单逻辑进行模拟。
在回放日志中可以看到逻辑修改后使用实盘数据模拟的下单情况,可导出并与实盘日志的下单结果比对 。
.png)
回放-测试不同手续费交易成本差别
备注
例4 用户想测试不同期货手续费费率实盘数据下的表现。
若用户的实盘策略中没有“打印手续费”的代码,需要先增加日志打印代码context.log.info,再使用回放工具。
例:
#打印手续费
def on_trade(context, trade, location,dest):
context.log.info("[on_trade] 订单ID--{},成交量--{},手续费--{}".format(trade.order_id, trade.volume,trade.commission))
打开全局设置,点击期货手续费,修改对应期货品种手续费。


备注
功夫将自动请求账户中持仓标的的手续费,没有持仓时,需要到“全局设置-持仓”进行设置
点击回放按钮。

选择回放的session,点击确定 注:必须打开撮合器 。
.png)
回放成功运行,在回放日志中可以看到每笔成交对应的手续费日志与实盘不同。
诊断工具
journal文件是功夫交易系统中记录进程行为的数据文件。journal文件具有极其丰富的数据信息,如Quote行情信息中记录了档位报价详细信息,可用于盘后复盘。
浏览、定位journal数据可通过诊断工具进行。诊断工具支持多种 数据定位方式 :通过时间戳定位、消息类型过滤、关键字搜索。
提示
用户可通过诊断工具定位信息,复盘策略运行状况、排查策略运行问题。
通过诊断工具查看策略下单表现
点击进程后方的小眼睛图标,打开诊断工具。

点击“进入可视化”按钮。

进入journal数据可视化界面。

左侧session栏:可切换session,查看同一策略不同运行时间的journal记录。
左侧标的栏:展示session中,该策略中不同标的行情获取及下单情况。
右侧图表:展示可视化下单、撤单、行情信号。信号可点击,点击后下方列表将跳转到对应的journal记录。
下方journal记录:以列表方式展示journal详情。记录可点击,若点击的记录为图例中的信号,则图表将高亮对应信号。
注意
由于journal数据量较大,一次仅加载2000条数据,若策略运行时间较长,需要用户手动下滑加载更多数据
journal数据可视化可以帮助用户快速跟踪策略的下单情况,包括:
快速查看策略中每个标的总体下单情况、分布状况。
查看下单时相对于行情的延时情况。
查看同一订单号(order_id)下单、撤单情况。
小技巧
鼠标滚轮滑动:增加/减少展示内容的时间跨度。
单击信号图例:筛选出order_id相同的信号(包括委托、委托回报、撤单),且下方journal记录将跳转到对应位置;点击空白处即可回到正常状态。
单击下方记录详情:图上将跳转到该时间段,若该信号为委托、委托回报、撤单信号,则信号将高亮。
查看单一进程的journal文件
目前交易账户、行情源、策略进程、交易任务、算子面板均支持使用诊断工具查看journal数据。

查看所有进程的journal文件
点击文件(左上角) – 打开诊断工具,新窗口将显示所有进程的journal数据。
小技巧
journal支持调整上下模块高度:鼠标悬停在进度轴下方,鼠标变为指针样式即可调整。


定位journal信息
支持的筛选方式:过滤信道、过滤消息类型、按时间戳跳转。

诊断工具-关键字搜索功能
使用ctrl+f可调出搜索框,可使用快捷键enter跳转到下一个搜索结果。

算子面板


提示
算子计算的结果可被其他算子、策略订阅,算子间可进行嵌套计算。
因此算子的使用可减少重复计算,提高策略运行效率。
算子主要分为 算子插件 和 算子文件 两种类型;
算子插件 为官方封装好的算子内容,可输入参数直接调用 。
算子文件 为用户自己编写的python文件。
备注
算子使用场景举例
1.计算开销过高(如使用了机器学习等情况),计算在策略中发生可能导致数据拥塞;使用算子可将计算与策略分为两个进程运行,减少数据拥塞。
2.算子结果可被复用(如生成K线,或生成因子),因此重复计算可由算子执行,多个策略或算子同时订阅算子结果以减少重复计算。
备注
算子合成数据的用途 算子合成数据在诊断工具的标识为“SyntheticData(合成数据)”。
算子输出结果主要用途:
1.合成k线或其他数据 (如根据Quote行情,可以合成分钟/秒k线)。 2.作为因子(可通过合成数据做出对未来价格的预测:例如各类量价因子)。 3.计算目标仓位(策略可通过多个因子组合优化或使用机器学习模型,获得最优目标仓位,并应用到实际下单中)。
添加算子
点击“添加”按钮。


选择要添加的算子类型。

请根据要添加的算子类型(文件/插件),查看下方对应的引导文档。
添加算子插件-bar数据
选择算子类型窗口选择“插件”。

点击 “确认”,完成选择。
填写参数


备注
填写算子信息,请参考以下表格。
字段 |
字段含义 |
---|---|
Bar ID |
bar行情的id,其他算子/策略订阅本算子时的判断标识,不允许重复 |
数据源 |
选择数据的行情源(ctp、xtp、sim……) |
标的 |
填写要合成bar数据的标的,允许多选 |
周期 |
单位为秒。作为该算子的计算周期、推送频率。如:计算周期为5s,行情源1s推送一组行情,则算子将把5s内收到的五组行情数据处理成一组合成数据(5s内的高开低收),每5s推送一次 |
添加算子文件
选择算子类型窗口选择“文件”。

点击 “确认”,完成选择。
填写算子id,指定算子文件路径。填写完毕后点击确认创建算子

字段 |
字段含义 |
---|---|
算子 ID |
填写算子的id |
备注 |
填写备注 |
算子路径 |
选择本地算子 .py 文件 |
调用算子代码示例
详细内容可参考 算子API文档 。
注意
1.策略订阅算子后,仍然需要在策略文件代码中订阅行情源才能正常执行下单。
2.若算子与其他算子实现了嵌套计算,需要确保开启的顺序同依赖关系一致。如算子op2依赖算子op1的计算结果,如果实操中先开启算子op2,则由于未收到op1的数据,算子op2会出现报错。
3.当策略中使用算子数据,但算子未运行时,策略将保持监听,直到算子成功上线才会进行下单,不会报错。
4.当策略中同时使用算子、行情并行作为下单依据时,若算子下线,其他能够正常工作的数据源进程将继续指导下单。如策略同时使用算子op1、算子op2、行情源md1作为下单依据,当op1未上线,op2、md1正常运行时,策略将使用op2、md1的数据下单,当op1上线时,策略将同时使用三个数据源进行下单。
K线合成:订阅指定标的行情,并在收到行情时广播行情数据
# -*- coding: UTF-8 -*-
from kungfu.wingchun.constants import *
# 设置行情源为sim,交易所为上交所
source = "sim"
exchange = Exchange.SSE
# 订阅标的'600420','600000'行情
def pre_start(context):
context.log.info("pre start")
context.subscribe(source,['600420','600000'], exchange)
def post_start(context):
context.log.info("post start")
def on_quote(context, quote, location, dest):
context.log.info("on quote: {}".format(quote.instrument_id))
# 广播发布key标识为'op'的行情数据
context.publish_synthetic_data('op', "{}".format(quote))
在策略/算子中订阅其他算子发布的数据
# 订阅2种类型算子的方法
# 1.使用算子插件时,group=bar,name=添加算子时填写的算子ID,如bar1或mybar
def pre_start(context):
context.subscribe_operator("bar","my-bar")
# 2.使用算子文件时,group=default,name=添加算子时填写的算子ID,如op2
def pre_start(context):
context.subscribe_operator("default","op2")
# 算子的广播会自动触发本方法的调用,将获取所订阅算子广播的数据
def on_synthetic_data(context, synthetic_data, location, dest):
context.log.info("on_synthetic_data: {}".format(synthetic_data))
需要订阅算子状态变化回调、了解算子相关参数的填写细则请参考算子API文档。
持仓面板


备注
持仓面板支持 搜索 、 刷新 、 导出 功能
搜索:用户可通过搜索标的代码定位持仓。
刷新:用户可通过刷新按钮同步柜台持仓。
导出:点击导出按钮,可导出截止当前时刻该账户/策略的持仓明细。
小技巧
灵活统计持仓:在交易账户列表/策略列表选中账户/策略,持仓面板会显示该账户/策略的持仓信息,能够更精准地按照策略、账号的跟踪持仓状况
字段 |
字段说明 |
---|---|
持仓代码 |
标的代码、交易所 |
表头为空,(多空) |
持仓方向,多/空 |
昨 |
该标的昨仓剩余量(如果需要显示静态值昨仓量,可进入左侧边栏设置-交易-持仓表各项配置修改) |
今 |
该标的今仓剩余量(如果需要分别显示今开、今平计数,可进入左侧边栏设置-交易-持仓表各项配置修改) |
总 |
该标的总持仓量(昨+今) |
开仓均价 |
该标的开仓均价 |
最新价 |
该标的最新价 |
浮动盈亏 |
该标的浮动盈亏 |
持仓汇总面板
所有当日启动过的账户,将按标的分组计算出总持仓量。


委托记录面板


备注
委托记录面板支持 查看委托详情、 操作委托 (撤单、改单、预撤)。
搜索:用户可通过搜索标的筛选委托记录。
筛选未完成委托记录:勾选“未完成委托”,将筛选出目前仍在交易的委托。
导出:用户可根据交易日、自然日导出委托记录。若对委托记录进行了筛选,将导出筛选后的结果。(夜盘委托记录将记入下一交易日,导出周五夜盘委托记录日期请选择下周一)。
查询非本日委托记录:为提高交易速度,非本日委托记录将被归档到数据库中,可选择日期查看非本日委托记录。
实时统计:按标的分组,统计已完成量、下单量。并展示平均撤单比、系统延迟等数据。
撤单:可对未完成订单发起撤单。
改单:对于未完成的委托,点击“已完成/全部”列可唤起改单,仅允许修改委托价。改单后本委托将撤单,下出一笔新委托。
预撤:支持预撤功能的柜台下出的订单将显示此按钮,点击后可对该委托进行预埋撤单/取消预埋撤单。橘色代表该订单目前有待执行的预撤单,灰色代表该订单目前没有待执行的预撤单。
全部撤单:对所有未完成的订单执行撤单操作。
查看委托报单详情:右键可查看委托报单想,包括委托的委托号(order_id)等信息。
小技巧
灵活统计持仓:在交易账户列表/策略列表选中账户/策略,委托记录面板会显示该账户/策略的所有委托信息,可根据不同颗粒度的需求追踪委托及其完成情况。
备注
委托列表的字段含义请参考以下表格。
字段 |
字段说明 |
---|---|
更新时间 |
该笔委托收到最后一条回报(成交/撤单/报错)的时间 |
标的 |
标的代码 |
表头为空(买卖) |
该笔委托的方向:买or卖 |
表头为空(开平) |
该笔委托的方向:开or平 |
委托价 |
该笔委托下单时的价格 |
已成交/全部 |
该笔委托已成交量与下单量。对于未完成的委托,点击本列可进行改单-修改全部委托量。本委托将撤单,下出一笔新委托:总数为出未完成的差额。 |
订单状态 |
该笔委托当前的状态,请参照委托订单状态对应表 |
系统延迟 |
该笔委托下出时的系统延迟时长 |
网络延迟 |
该笔委托从系统下出到收到回报的网络延迟时长 |
下单源 |
触发该笔委托的下单方式,包括手动下单、策略下单 |
表头为空(操作栏) |
撤单:对未完成的订单进行撤单;预撤:支持预撤功能的柜台下出的订单将显示此按钮,点击后可对该委托进行预埋撤单/取消预埋撤单。橘色代表该订单目前有待执行的预撤单,灰色代表该订单目前没有待执行的预撤单。 |
委托订单状态对应表
字段 |
字段说明 |
---|---|
已提交 |
委托订单请求已由系统发送,等待柜台返回信息,非最终状态 |
等待中 |
柜台已接收到委托,委托正在交易中,暂未收到任何成交回报,非最终状态 |
正在交易 |
委托正在交易中,非最终状态 |
待撤 |
正在委托的订单将进入待撤状态,收到撤单成功回报后将变化,若撤单失败,则该状态仍保持待撤,非最终状态 |
全部成交 |
委托订单请求已全部成交,最终状态 |
全部撤销 |
委托订单请求已全部撤销,最终状态 |
部分撤销部分成交 |
委托订单部分撤销部分成交,最终状态 |
错误 |
委托订单请求失败,最终状态 |
丢失 |
表示委托记录丢失,可能由删除了交易账户/策略导致,最终状态 |
实时统计


实时统计功能可以清晰展示每个标的的下单情况:总下单量与完成情况,完成时最高最低价、平均委托价、延迟统计。
成交记录面板


备注
成交记录面板支持 搜索、 导出、 查询 功能。
搜索:用户可通过搜索标的筛选成交记录。
导出:用户可根据交易日、自然日导出成交记录。若对成交记录进行了筛选,将导出筛选后的结果。(夜盘成交记录将记入下一交易日,导出周五夜盘成交记录日期请选择下周一)。
查询非本日成交记录:为提高交易速度,非本日成交记录将被归档到数据库中,可选择日期查看非本日成交记录。
实时统计:按标的分组,统计成交量。并展示系统延迟等数据。
备注
委托列表的字段含义请参考以下表格。
字段 |
字段说明 |
---|---|
成交时间 |
展示成交回报信息附带的时间戳 |
系统时间 |
展示成交回报信息收到时,系统对应的时间 |
标的 |
标的代码 |
表头为空(买卖) |
该笔委托的方向:买or卖 |
表头为空(开平) |
该笔委托的方向:开or平 |
成交价 |
该笔委托的成交平均价 |
成交量 |
该笔委托成交总量,此处不展示状态为“部成部撤”订单的成交记录,仅展示已成交量=下单总量的委托记录 |
成交延迟 |
该笔委托的成交延迟 |
目标账户 |
该笔订单所属账户 |
成交记录-实时统计


用户可通过成交记录面板的实时统计功能快速掌握账户/策略的整体成交情况。
交易任务面板
功夫交易系统目前提供“条件单”、“excel下单”、“冰山”、“TWAP”四种交易任务,用户可使用交易任务自动化下单。
点击“交易任务”面板 “添加”按钮。


选择想使用的交易任务,点击确定。
.png)
提示
交易任务支持暂停、重启功能
重启进程后,当系统检测到未到达结束时间的情况下,将按剩余时间、未完成量重新计算单次下单量继续完成下单任务
条件单
备注
允许设置 价格/时间 条件。 - 仅设置价格条件时 ,仅在价格条件触发时下单。
仅设置时间条件时 ,仅在到达目标设定时间点时下单。
价格条件跟时间条件同时存在 时,按满足的先后顺序下单。如价格条件一直未满足,到达时间条件设定的时刻将触发下单。
设置多个价格条件 ,设置多个价格条件时,条件均满足才会触发下单。

备注
填写条件单参数请参考以下表格。
字段 |
字段说明 |
---|---|
账户 |
选择下单账户 |
行情 |
选择行情源 |
标的 |
选择下单标的 |
买卖 |
选择交易方向:买or卖 |
开平 |
选择交易方向:开or平or平今or平昨 |
下单类型 |
选择报单方式,如限价/市价 |
价格条件 |
非必填,允许设置多个价格条件,设置多个价格条件时,条件均满足才会触发下单 |
下单价格 |
触发条件后下单的价格,允许从最新价、对手一档、我方一档中选择 |
数量 |
触发条件后下单的数量 |
单次最大手数 |
单次下单最大数量,将以此为基础进行拆单,不填则表示柜台无限制, 股票请填100的整数倍, 否则自动向下取整, 小于100则会强制设成100 |
触发时间 |
非必填,填写则到达此时间自动下单 |
Excel下单
如果需要实现多标的定时下单,可选用此交易任务。

注意
使用Excel下单请注意
行情源将自动选择与交易账户相同的柜台。
Excel文件目前只支持一个sheet表。
当excel表内所有标的下单执行完成后,该交易任务进程将自动关闭。
备注
填写Excel下单表格,请参考以下表格。
字段 |
字段说明 |
---|---|
time |
下单时间,格式为 HH:mm:ss (24小时制,时分秒皆占两位),例:01:02:03 |
instrument_id |
标的ID |
exchange_id |
交易所ID,如上交所SSE |
limit_price |
报单价格 |
volume |
下单数量 |
price_type |
报单类型,可填 Limit、Any、FakBest5、ForwardBest、ReverseBest、Fak、Fok。请参考API文档“PriceType对象” |
side |
买卖 |
offset |
可填 Buy、Sell、Lock、Unlock、Exec、Drop、MarginTrade、ShortSell、RepayMargin、RepayStock。请参考API文档“Side 买卖” |
hedge_flag |
投机套保标识,非必填,默认为Speculation投机 |
is_swap |
互换标识,非必填,可填 True 或 False,默认为 False |
冰山
当下单总量极大,为了分散成交量以减小对市场冲击时,建议选用冰山交易任务。
注意
对于冰山交易任务,委托全部成交,才会触发下一次下单。
因此如果上一单暂未全部成交,即使行情价格满足,系统仍然不会下出新单。

备注
填写冰山下单参数,请参考以下表格
字段 |
字段说明 |
---|---|
账户 |
选择下单账户 |
标的 |
选择下单标的 |
买卖 |
选择交易方向:买or卖 |
开平 |
选择交易方向:开or平or平今or平昨 |
目标价格 |
填写目标价格,当行情到达目标价格时将下单 |
委托暴露量 |
当行情到达目标价格时下单的数量 |
每轮间隔 |
触发条件后下单的价格,允许从“最新价、对手一档价、我方一档价”中选择 |
数量 |
下单总量 |
单次最大手数 |
单次下单最大数量,将以此为基础进行拆单,不填则表示柜台无限制, 股票请填100的整数倍, 否则自动向下取整, 小于100则会强制设成100 |
触发时间 |
非必填,填写则到达此时间自动下单 |
TWAP剩余累积
想分散成交量、提高成交概率时,建议选用TWAP交易任务(在设定的时间范围内匀速下单)。
备注
功夫内置2种TWAP,可按需取用,其区别在于补单计算方法、最后一单完成方法。
(1)TWAP剩余累积将上一单未完成的部分累积到下一次下单中。而TWAP剩余平均会将上一单未完成的部分平均分到剩余次数中;
(2)TWAP剩余累积最后一单无论是否全部成交,在到达结束时间时会撤单。而TWAP剩余平均最后一单将以涨停价(买)/跌停价(卖)报出委托单,且结束时间到达后不会撤单,力求完成下单总数。
例:补单计算方法:目前单次下单数为200,TWAP运行一段时间后,剩余下单次数为5,剩余待下出数量为1000,上一次下单200手未完全成交,剩余100手,TWAP撤单上一次下单,将进行下一次下单。
TWAP剩余累积下一次下单手数:单次下单数 200 + 上次未完成的数量 200-100 = 300手
TWAP剩余平均下一次下单手数:(单次下单数 200 + 总共未完成的数量 200-100+1000 ) / 剩余下单次数 5 = 1300/5 = 260手
系统将根据用户设置的参数计算下单次数,当单次下单量 > 单次最大手数 时,将下单单次最大手数;剩余部分将累积到下次下单时一起下出。


备注
填写TWAP下单参数,请参考以下表格
字段 |
字段说明 |
---|---|
账户 |
选择下单账户 |
行情 |
选择行情源 |
标的 |
选择下单标的 |
买卖 |
选择交易方向:买or卖 |
开平 |
选择交易方向:开or平or平今or平昨; |
价格 |
填写目标价格,允许从“最新价、对手价一档、同方向一档、对手价自定义、同方向自定义”中选择 |
档位价差 |
允许下单时价格与设定价格有一定偏移 。 仅当价格选择“对手价自定义、同方向自定义”时,本参数有效。正数表示更激进, 负数表示更保守; |
下单方式 |
可填 Limit、Any、FakBest5、ForwardBest、ReverseBest、Fak、Fok。请参考API文档“PriceType对象” |
下单总量 |
期望完成的下单数量 |
单次最小下单量 |
当本次下单量≥单次最小下单量时,才会触发下单,未触发下单时,本次下单量将累积到下一次下单量计算中 |
开始时间 |
交易任务开始的时间 |
盘休时间列表 |
计算步数时,将扣除盘休时间,非必填 |
结束时间 |
交易任务结束时间,当结束时间到达时,若最后一次委托未全部成交,将被撤单 |
下单间隔 |
下单频率,单位为秒。 |
单次最大手数 |
最大单次下单量,当计算出本次下单量≥单次最大手数时,下单数量为单次最大手数 |
挤压报警率 |
未成交数量/应已成交量大于设置的挤压报警率时,进程状态将显示“异常”(交易任务仍然会正常执行),且报警提示音响起 |
平完反向开 |
期货可开启此配置;开启后,当平仓数量 > 当次下单数时,将先平完剩余仓位,再反向开仓以锁定利润 |
注意
当上一委托未全部成交,到达下一下单时间点时,系统将先撤单未完成的委托,并将未完成的数量加到下一次下单数量中。
如第一步下单数量为1000, 第二步下单时间到时,第一步只成交了500手, 系统将先撤单, 第二步下单量= 1000 + 500 = 1500 。
如果每步下单量小于设置的单次最小下单量,则不会下单,下单量将累积到下一步。
如:下单总量为500, 总时间为1min, 时间间隔为7秒, 60/7=8.57,即 计算得到总步数为10, 单次下单量=500/10=50,因此第一步下单量50小于最小下单量100, 则第一步将取消下单, 把下单量累积到第二步,第二步下单量= 50+50=100 。
单次最大手数: 柜台允许的单次最大手数,将以此为基础进行拆单,不填则表示柜台无限制,股票请填100的整数倍,否则自动向下取整。
TWAP剩余平均
想分散成交量、提高成交概率时,建议选用TWAP交易任务(在设定的时间范围内匀速下单)。
备注
功夫内置2种TWAP,可按需取用,其区别在于补单计算方法、最后一单完成方法。
(1)TWAP剩余累积将上一单未完成的部分累积到下一次下单中。而TWAP剩余平均会将上一单未完成的部分平均分到剩余次数中;
(2)TWAP剩余累积最后一单无论是否全部成交,在到达结束时间时会撤单。而TWAP剩余平均最后一单将以涨停价(买)/跌停价(卖)报出委托单,且结束时间到达后不会撤单,力求完成下单总数。
例:补单计算方法:目前单次下单数为200,TWAP运行一段时间后,剩余下单次数为5,剩余待下出数量为1000,上一次下单200手未完全成交,剩余100手,TWAP撤单上一次下单,将进行下一次下单。
TWAP剩余累积下一次下单手数:单次下单数 200 + 上次未完成的数量 200-100 = 300手
TWAP剩余平均下一次下单手数:(单次下单数 200 + 总共未完成的数量 200-100+1000 ) / 剩余下单次数 5 = 1300/5 = 260手
系统将根据用户设置的参数计算单次下单数。


备注
填写TWAP下单参数,请参考以下表格
字段 |
字段说明 |
---|---|
账户 |
选择下单账户 |
行情 |
选择行情源 |
标的 |
选择下单标的 |
买卖 |
选择交易方向:买or卖 |
开平 |
选择交易方向:开or平or平今or平昨; |
价格 |
填写目标价格,允许从“最新价、对手价一档、同方向一档、对手价自定义、同方向自定义”中选择 |
保护价格 |
保护价格为0时,视作不使用保护价格;填入非0正数时,当买卖=买,当行情价格高于保护价格,则以保护价格下单,否则以行情价格下单;反之买卖=卖时,当行情低于保护价格时,以保护价格下单,否则以行情价格下单 |
下单总量 |
期望完成的下单数量 |
下单总量 |
期望完成的下单数量 |
开始时间 |
交易任务开始的时间 |
结束时间 |
交易任务结束时间,当结束时间到达前,最后一次委托将以涨停价(买)/跌停价(卖)报单,结束时间到达后也不会撤单。 |
下单间隔 |
下单频率,单位为秒。 |
单次最大手数 |
最大单次下单量,当计算出本次下单量≥单次最大手数时,下单数量为单次最大手数 |
挤压报警率 |
未成交数量/应已成交量大于设置的挤压报警率时,进程状态将显示“异常”(交易任务仍然会正常执行),且报警提示音响起 |
行情订阅面板
备注
行情订阅面板允许用户对关注标的进行订阅,一般搭配“深度行情”面板使用,以更快地找到标的并查看其盘口。


深度行情面板


备注
行情订阅面板展示买卖十档盘口的动态信息。可通过订阅标的快速寻找。
绿色 为 卖盘 十档盘口价、对应价位的数量。
红色 为 买盘 十档盘口价、对应价位的数量。
标的右侧灰色价格显示最新价。
小技巧
快速下单:点击深度行情某一档位时,系统将在下单面板填写对应的标的代码、价格、下单量,帮助用户快速完成下单。
快速查看标的盘口: 在其他面板(如“行情订阅”、“持仓”、”委托记录”、“成交记录”、“下单面板”面板)点击标的时,深度行情将显示对应标的的多档盘口信息。
下单面板
备注
下单面板支持普通下单、拆单、预埋单操作。
下单:下出普通委托单。
拆单:用户可填写期望每单委托量,系统将自动拆成同等委托量的多个委托单同时下出。
预埋单:检测到标的为期货标的时,面板会出现预埋下单按钮。


小技巧
快速填写下单信息:点击持仓/行情订阅/持仓汇总面板中的标的时,下单面板会自动填写对应标的代码及价格,辅助用户快速完成下单操作。
下单快捷键
备注
功夫支持使用键盘快捷键完成下单全流程,交易时快人一步!
聚焦到下单面板 :Ctrl/Command + Shift + 1 ; 如果有多个下单面板,按住Ctrl + Shift ,多次点击1则可实现面板切换!
下一项 :Tab
上一项 :Shift + Tab
选择其他可选项 :键盘上下左右键
确定 :Enter
勾选/取消勾选 :Space
预埋单记录面板
备注
目前功夫系统支持 批量预埋单 、 下单笔预埋单 以及 预埋撤单 。
批量预埋单:盘休时下出,开盘后下出多个普通委托。
下单笔预埋单:盘休时下出,开盘后下出一个普通委托。
预埋撤单:盘休时下出,开盘后撤单原来(盘休前)正在交易的订单。
撤单: 未触发的预埋单、预埋撤单,均可撤单。


添加预埋单面板
如需使用 批量预埋 功能,请手动添加“预埋单记录”面板以更好地追踪预埋单、预埋撤单实现情况。
点击“添加”按钮
选择“预埋单记录”进行添加。

备注
预埋单表格字段含义请参考以下表格。
字段 |
字段说明 |
---|---|
类型 |
下单/撤单。下单:预埋单,开盘后下出普通委托。撤单:预埋撤单,开盘后撤单盘休前正在交易的订单 |
生成时间 |
指下出预埋单/预埋撤单的时间 |
标的 |
标的代码 |
表头为空(买卖) |
该笔委托的方向:买or卖 |
表头为空(开平) |
该笔委托的方向:开or平 |
委托价 |
预埋单:触发后,预埋单下出普通委托的委托价; 预埋撤单:待撤订单的原委托价 |
委托量 |
预埋单:触发后,预埋单下出普通委托的委托量; 预埋撤单:待撤订单的原委托价 |
触发时间 |
指预埋单触发的时间 |
订单状态 |
未触发:预埋单/预埋撤单已由系统发出,等待开盘后触发;已触发:预埋单/预埋撤单。由于柜台不对预埋单进行验资,需要关注回报信息,若因仓位/资金不足导致触发时下单失败,虽然预埋单状态仍然为已触发,但不会生成对应的普通委托单;已取消:预埋单/预埋撤单报单成功后,用户自主操作了撤销预埋单/预埋撤单且撤单成功 |
回报信息 |
预埋单/预埋撤单报单成功时,显示“成功”。若为其他内容,表示预埋单/预埋撤单失败,可从回报信息查看报单失败的原因。 |
下单源 |
手动 |
下单笔预埋单
备注
当预埋单被触发后,将生成对应的普通委托。
两个委托相互独立。预埋单已触发即为预埋单的最终状态,不再更新,请在“委托记录”面板跟踪其触发的普通委托单。
在下单面板输入想要预埋的标的,点击预埋并确认预埋信息。

预埋后,可在“预埋单记录”面板查看刚才预埋的记录。

开盘后,预埋单被触发。此时预埋单将生成一条委托记录,并在“委托记录”面板显示。

注意
预埋单仅允许在盘休时刻下单,盘中下预埋单将被交易所拒绝。
若开盘后,预埋单状态未更新,仍然为“待触发”,请点击刷新按钮更新预埋单状态。
批量下预埋单
点击预埋单记录面板的“批量”按钮。

点击“下载模板”。
根据弹窗上的提示文本修改模板,修改完成后回到客户端点击“导入csv”。
回显到弹窗中,用户可进行二次调整,确认信息无误后点击“确定”。

预埋后,可在“预埋单记录”面板查看刚才预埋的记录。

开盘后,预埋单被触发。此时预埋单将生成多条委托记录,并在“委托记录”面板显示。
.png)
错误
如果导入失败,请核对是否出现了以下情况
csv中包含标的为空的行。
买卖开平列未按规则填写(规则:填写0或1)。
注意
预埋撤单 ≠ 撤单预埋单
预埋撤单 对盘休前正在交易的单子进行撤单(可在委托记录面板中通过“预撤”按钮快速下出)。
撤单预埋单或预埋撤单 下出预埋单/预埋撤单后,在未开盘前,撤销下出的预埋单/预埋撤单。
取消单笔预埋单
“预埋单记录”面板点击“撤单”按钮。

预埋单状态变为待撤,等待开盘后撤单行为触发。

开盘后,预埋单的撤单回报返回,状态变为“已撤单”时,撤单完成。

下单笔预埋撤单
“委托记录”面板点击“预撤”按钮(当该订单目前没有未触发的预埋撤单时,按钮为灰色)。

“预撤”按钮亮起,并在“预埋单记录”面板生成一条预埋撤单的记录。

开盘后,预埋撤单被触发。“预埋单记录”面板的预埋撤单委托状态变为“已触发”。并且此时“委托记录”面板的该委托订单状态为已撤单。

取消单笔预埋撤单
方法1:从委托记录面板取消预埋撤单
点击亮起的预埋撤单按钮,确认进行撤销预埋撤单。

预撤按钮置灰,且“预埋单记录”面板中对应下出的预埋撤单订单状态将变为“待撤”。

开盘后,预埋撤单触发,此时“预埋单记录”中对应的预埋撤单订单状态由“待撤”变为“已取消”。

方法2:从预埋单记录面板取消预埋撤单
点击订单状态为“未触发”预埋撤单后方的撤单按钮。

“预埋单记录”面板中对应下出的预埋撤单订单状态将变为“待撤”。

开盘后,预埋撤单触发,此时“预埋单记录”中对应的预埋撤单订单状态由“待撤”变为“已取消”。

全局设置
点击左下角设置按钮 或 快捷键“ctrl”+“,”进入全局设置页面。

系统

选择本地Home路径 : 可修改Kf_home存放路径,目录路径不允许包含中文。
全局日志级别 :对系统内所有日志级别进行设置,低于设置级别的日志将再不展示(如默认为info级别日志,不会显示级别更高的trace、debug级别日志)。
语言 :界面语言,目前支持中文、English(修改后重启客户端生效)。
交易进程自动重启 : 如果打开, 交易进程出错后, 会继续尝试重连三次。如果关闭, 则不进行任何重试操作。重启过程中(即重启开始到交易进程就绪), 策略内查询到的持仓会为0, 需要在策略内通过 on_deregister, on_broker_state_change这两个方法来判断柜台状态为断开/就绪。
跳过归档 : 开启后, 每次启动会删除所有 journal, 且仅保留当日 runtime 目录下 log, 跳过归档后无法恢复之前的内存数据, 会加快启动速度。
跳过归档(开发者模式) :非开发者请勿开启此选项。开启后,每次启动客户端时不进行任何归档操作,保留所有 journal 和 log 文件,帮助开发者更快地使用诊断工具排查问题, 重启后生效。当普通跳过归档与开发者跳过归档同时开启时,开发者模式跳过归档功能优先生效。
性能

开启极速模式 : (仅当CPU核数大于4时才允许开启)开启极速模式会极大的降低系统延迟,并会使 CPU 使用效率达到100%,重启后生效。
跳过UI进程计算 :UI进程不再处理计算逻辑,完全通过计算进程更新数据,减轻UI进程性能占用,重启后生效。
纯监控模式 : 该模式下仅监控进程运行状态,UI性能占用可以达到最低,重启后生效。
跳过持仓行情订阅 : 打开后,不再默认订阅交易账户持仓的行情更新,浮动盈亏以及市值相关字段使用开仓均价计算,开启后可减轻机器性能负担,重启后生效。
策略

当某些模块在功夫内置的python中没有时,可以使用本地python,将所需模块下载到本地使用 本地Python版本必须是 3.9.x 版本 。 - 使用本地python :开启后使用本地python。 - 选择python路径 :
选择本地python的可执行程序。
安装.whl文件 : pip install kungfu-x.x.x-xxxx.whl (whl文件名以实际为主)
注意
对于2.4版本 (Kungfu-1.0.x-win-x64-latest.exe)、2.5版本(Kungfu-1.1.x-win-x64-latest.exe)、2.6版本(Kungfu-2.6.x-win-x64-latest.exe),whl文件路径为 : {kungfu安装目录}\resources\app\dist\public\python\kungfu-x.x.x-cp39-cp39-win_amd64.whl
对于2.7版本(Kungfu-2.7.x-win-x64-latest.exe)、3.0版本(Kungfu-3.0.x-win-x64-latest.exe),,whl文件路径为 : {kungfu安装目录}\resources\kfc\kungfu-wheel\kungfu-x.x.x-cp39-cp39-win_amd64.whl
币种

打开后,持仓面板标的列展示标的币种(仅支持otc柜台显示币种)
交易

成交提示音 :开启后,下单成交时会发出提示音。
乌龙指阈值 :在用户下单时,若检测到买价高于市场价过多或卖价低于市场价过多时弹窗提示。
备注
乌龙指阈值 触发机制:
用户手动下单,委托方向为 买 时,当委托价 高于 最新价 ×(1 + 阈值)时,系统将弹窗提醒。
用户手动下单,委托方向为 卖 时,当委托价 低于 最新价 ×(1 - 阈值)时,系统将弹窗提醒。
平仓阈值 :在用户下单时,若检测到扣除平仓数量后,仓位低于平仓阈值,将弹窗提示。
备注
平仓阈值 触发机制:
用户平仓时,当(持仓量-平仓量) / 持仓量 < 平仓阈值时,系统将弹窗提醒。
跳过下单确认弹窗 : 打开后,用户在“下单面板”点击下单按钮后,将直接下单,不再弹出确认弹窗。
交易限制 : 可对具体标的进行成交量、成交价的限制。
持仓表格项配置 : 默认勾选昨(昨仓剩余量)+今,配置后,将在“持仓”“持仓汇总”面板显示,用户可根据需求自行配置。
警告
建议在持仓表格配置项中不要勾选2个“昨”。勾选后,持仓面板不会对2个昨进行特殊标识,均显示“昨”,可能造成混淆。
跳过每分钟一次的持仓同步 :当未使用功夫客户端以外系统进行下单时,建议开启。开启后,仅通过本地维护持仓,可避免传输延迟导致同步柜台持仓、本地持仓计算时序错误带来的风险。
代码编辑器

缩进类别 :可选择使用“TAB”键或”Space”键作为缩进按钮。
缩进长度 :以空格为标准,选择一个缩进的距离,可以选择两个空格或者四个空格。
版本更新

版本更新 :开启后,每次启动客户端将检测是否有新版本发布。
期货手续费

账户中拥有的持仓标的会自动请求交易所对应的手续费,没有持仓时,需要手动设置。
定时任务

定时任务 :用户可添加定时任务,达到不重启客户端情况下,每日自动重启td、md等进程/自动启动结束策略的效果。
控制中心
备注
用户可在客户端右下角“控制中心”监控进程状态。
当“控制中心”字体变为 红色 时,代表有系统服务 中断,请打开控制中心重新启动断开的系统服务。


插件库
功夫推出了不同插件以满足用户需求,目前已推出了高精回测插件、柜台插件、算法插件等。 若需要以上插件或定制插件,欢迎 联系我们 。
