导出文档

功夫 V 2.2.1 使用手册

功夫交易系统简介

功夫是 Taurus.ai 团队专为量化交易者设计的开源交易执行系统。功夫想要解决以下问题:

  • 低延迟交易 – 量化交易者对系统内响应速度有极高要求,功夫提供微秒级别的系统响应,支持带纳秒级时间戳的交易数据实时存储和盘后分析。
  • 开放的策略编写方式 – 功夫支持 Python 3 及 C++ 形式的策略编写,策略师可以不受限的自由使用第三方计算库,放飞创意。
  • 友好的使用方式 – 告别 Linux shell 小黑屋,功夫提供图形化操作界面,简化策略运维流程。而进阶用户仍然具备通过底层 API 以无界面形式使用系统的能力。
  • 跨平台运行 – 三大主流平台(Windows、MacOSX、Linux)皆可编译运行。
  • 灵活的扩展接口 – 功夫提供几种不同的数据交互接口(易筋经、SQLite、nanomsg),支持用户自行开发各种功能模块。

功夫系统架构如下:

  • 后台核心(C++)
    • 易筋经(yijinjing) – 专为金融交易设计的超低延迟时间序列内存数据库,提供纳秒级时间精度,可落地交易相关的全部数据。
    • 咏春(wingchun) – 策略执行引擎,提供策略开发接口,利用易筋经特性,咏春还提供一系列交易数据分析工具。
  • 中台交互(C++/Python/nodejs)
    • SQLite – 功夫使用内嵌式数据库 SQLite 存储配置信息及中间数据
    • nanomsg – 功夫使用 nanomsg 作为前后台通信机制,系统内对延迟不敏感的指令(例如手动下单等)可通过 nanomsg 信道传达。前端UI(Node.js)
    • Electron – 跨平台的桌面应用开发框架
    • Vue.js – UI开发框架打包机制
    • pyinstaller – 封装完整的 Python 环境及所有二进制依赖,使得功夫的安装部署绿色化,无需依赖其他软件。
    • pipenv – Python 依赖管理工具,开发过程无需额外安装 Python 包。
    • pm2 – 基于 nodejs 的进程管理工具
    • electron-builder – 借助 Electron 技术,功夫可以提供本地化应用程序的安装使用体验。

功夫在系统设计上支持任意柜台的对接(涵盖中国所有股票、期货市场),目前功夫开源版仅提供 CTP 和 XTP 柜台对接的实现;如果需要接入更多柜台请联系我们。


安装注意事项

1、Windows用户安装成功后,如果启动系统时发现报错(JavaScript error)或者一直处于加载中,请下载安装 Visual C++ Redistributable for Visual Studio 2019

2、Linux系统用户安装成功后,需要把kungfu/resources/kfc/kungfu_extensions下的文件权限改为777,对应命令为:

$ chmod 777 -R /opt/Kungfu/resources/kfc/kungfu_extensions

3、功夫交易系统暂时不支持自动换日,使用系统时,需要每天重启功夫交易系统

4、在 Windows 下启动功夫时如果遇到如下图报错,需编辑系统环境变量 PATH,确保其中含有 %SystemRoot%\System32\Wbem


运行第一个策略

添加/启动账户

账户模块布局

账户布局

KungFu是一款支持跨柜台多账户交易的量化交易系统,系统目前支持的柜台有:XTP(股票),CTP(期货),SIM(模拟柜台)后续会不断添加对其他柜台的支持。

为了方便用户对账户进行管理,我们在系统内提供了账户模块,在账户模块中,用户可以对账户进行添加、编辑以及删除,也可以查看每一个账户的实时运行状态、运行日志、持仓情况、委托情况、成交情况以及盈亏情况。

添加一个账户在kungfu交易系统中,一个账户由一个行情进程(md)以及一个交易进程(td)组成,行情进程用来接受行情,交易进程用来下撤单。当我们添加了一个账户,实际上是根据新增账户的信息建立了一个交易进程,于此同时,也建立了一个行情进程。

备注:

  1. 行情进程在添加交易进程后会自动添加,一个柜台下只有一行情进程
  2. 可以通过切换行情源绑定的账号来实现更换行情进程所绑定的信息
  3. ctp柜台只支持windows系统与linux系统,xtp柜台对于mac,windows,linux三个系统都支持

添加账户步骤

  • 点击账户模块交易账户列表左上角的添加按钮
  • 选择账户对应的柜台
  • 填写账户信息表单,点击确定
  • 操作成功后,交易账户列表中会新增刚添加账户的交易进程

账户字段对应表

启动交易进程

添加完账户后,交易账户列表会出现一条新的交易进程,需要保证其正常运行,才能正常进行交易,点击交易账户列表内的连接按钮

启动交易进程后,交易进程会与交易柜台进行连接,从交易柜台中获取该账户最新的资金与持仓信息,并同步到KungFu系统的数据库中,同步完成后,如果用户在功夫交易系统外进行买卖,将会导致账户的真实资金和持仓与系统内维护的数据不同。

启动行情进程

交易进程被添加后,需要在行情源列表中创建一条行情进程,每一个柜台只允许创建一个行情进程。行情进程的运行用来保证策略能够接收到行情,也需要先启动后才能运行交易,点击行情源列表内的连接按钮,如果行情进程出现异常,可以点击行情日志按钮,查看对应的运行日志。


添加/启动策略

策略模块布局

策略布局

Kungfu本质上是为策略程序提供了一个运行环境。在Kungfu中,每一个策略都是运行在一个单独的进程里,通过策略列表的开关进行管理,策略运行时打印的log,交易的实时数据都会呈现在系统中。

添加策略步骤

  • 进入策略模块,点击策略列表的添加按钮
  • 输入策略的名称 添加成功后,策略名称不能修改,选择策略绑定的本地文件
  • 添加成功后,点击运行按钮

备注:

  • 在启动策略之前,需要保证策略使用的行情/交易进程连接处于就绪状态
  • 在运行策略时,需要关注右下角的账户状态
  • 如果账户状态不为绿色,需要确认策略运行所需的交易/行情进程是否开启

功能介绍

账户维护

在日常使用过程中,用户可以根据实际需要,在账户模块对系统内的账户进行维护,用户可以修改已有的账户信息,或者删除不需要的账户。

账户功能说明

账户修改

用户可以对已有账户的信息(除账户名外)进行修改,具体的点击账户的设置按钮后会有该账户的信息表单,修改完成后保存;如果账户的交易柜台连接处于开启状态,修改成功后,需要手动重启该账户的交易连接后,修改才能生效。

为了提高账户盈亏的计算精度,用户可以对账户的交易手续费率进行设置,点击左上角KungFu — settings,在手续费设置中添加或者修改手续费参数

手续费设置

账户删除

在交易账户列表,点击删除按钮可以删除不需要的交易账户,但是,在删除交易账户之前,需要保证:

  • 需要删除的交易账户的交易连接已经关闭
  • 如果被删除的交易账户是该柜台的行情接收账户,需要关闭该柜台的行情连接

如果被删除的账户时该柜台的行情账户,系统会自动选择该柜台的其他账户作为行情源账户。需要注意的是,删除账户会把与该账户有关的所有信息都删除,其中包括账户资金、账户持仓、账户委托记录、账户成交记录,账户交易日志。


账户信息

账户日志

用户可以点击账户后面的运行日志按钮,在新的窗口打开账户的实时运行日志,方便用户实时地监控账户的运行情况

账户日志

账户持仓

在交易账户列表中,选中需要查看持仓的账户后,在持仓模块就会显示该账户的持仓信息,其中包括:

  • 代码:持仓标的的代码
  • 多空:持仓的方向
  • 昨:该标的的昨仓
  • 今:该标的的今仓
  • 总:该标的的总持仓

用户可以通过搜索标的代码来定位自己需要查看的标的持仓,可以通过点击导出按钮,导出账户的持仓明细

说明:账户的持仓信息会在启动账户的交易进程的时候,与该账户在交易柜台的持仓信息进行同步,同步完成以后,系统内会维护该账户的持仓信息,如果该账户在系统外进行了交易,则账户在系统内的持仓与账户在交易柜台的真实持仓会不一样。

账户委托

在交易账户列表中,选中需要查看委托记录的账户后,在委托模块就可以看到该账户的委托记录。

在委托模块中,默认显示的是该账户的未完成委托;点击当日委托按钮后,会显示该账户当日所有的委托记录; 用户可以通过点击导出按钮,导出该账户某一天的历史委托记录;

  • 下单时间:触发该笔委托的时间
  • 代码:该笔委托的标的代码
  • 买卖:该笔委托的买卖方向
  • 开平:该笔委托对应的仓位开平方向
  • 委托价:该笔委托对应的委托价格
  • 已成交/全部:该笔委托已成交的数量与该笔委托的委托总量的比
  • 订单状态:该笔委托当前的状态
  • 系统延迟:收到行情到交易柜台发出订单的时间间隔,单位为微秒
  • 网络延迟:柜台发出订单到收到第一个回报的时间间隔(注意,有些柜台第一个回报为交易所回报,有些柜台为券商柜台的回报,具体可以咨询券商),单位为微秒
  • 策略:触发该笔委托的策略名称用户也可以通过搜索关键字的方式定位自己需要的委托记录,搜索的对象为委托记录里面的:
  • 代码名称
  • 策略名称
  • OrderID(系统维护的订单编号,在列表中没显示)

功夫量化交易系统支持用户对未完成委托进行撤单操作,点击全部撤单按钮后,系统会对当前该账户的所有未完成订单进行撤单操作;

委托订单状态对应表

字段字段说明
等待委托订单请求已发送,等待柜台返回信息,非最终状态
错误委托订单请求失败,最终状态
全部成交委托订单请求已全部成交,最终状态
全部撤销委托订单请求已全部撤销,最终状态
部分撤销部分成交委托订单部分撤销部分成交,最终状态

账户委托详情

双击账户的委托记录,可查看详细的账户委托信息

账户委托详情

账户成交

在交易账户列表中,选中需要查看当日成交记录的账户后,页面右下方就会显示该账户的当日成交记录。

在当日成交记录中,我们展示了每一笔成交记录的:

  • 成交时间:该笔交易完成的时间
  • 代码:该笔交易的标的代码
  • 买卖:该笔交易的买卖方向
  • 开平:该笔交易对应的仓位开平方向
  • 成交价:该笔交易标的的成交价格
  • 成交量:该笔交易标的的成交数量
  • 交易延迟:发送订单到成交之间的时间间隔,单位为微秒
  • 策略:触发该笔交易的策略名称用户可以通过点击导出按钮,导出某一时间段内的该账户的成交记录;用户也可以通过搜索关键字的方式定位自己需要的成交记录,搜索的对象为成交记录里面的:
  • 标的代码
  • 策略

账户盈亏

在交易账户列表中,选中需要查看盈亏的账户后,收益曲线就显示该账户的实时盈亏情况

收益曲线有两种表现形式:日线、分钟线

  • 日线会显示该账户添加到系统后的整体盈亏走势以及累计收益
  • 分钟线显示该账户当天的整体盈亏走势以及当日收益

柜台下账户对应字段

添加/设置CTP柜台账户字段

字段字段含义
account_id账户名称(例如:089270)
password账户密码(例如:123456)
broker_id券商代码(例如:9999)
auth_code授权码,实盘由券商提供,模拟盘为 0000000000000000
product_info软件信息,KUNGFU
app_id申请授权码的时候提交的id,实盘填写 TAURUS_KUNGFU_2.0,模拟盘填写 simnow_client_test
md_uri行情柜台地址(以 “tcp://“ 开头)(例:tcp://180.168.146.187:11***)
td_uri交易柜台地址 (以 “tcp://“ 开头)(例:tcp://180.168.146.187:11***)
account_code实盘账户授权码,需要跟开户经纪商或者功夫源商务联系获取

添加/设置XTP柜台账户字段

字段字段含义
user_id账户名称
password账户密码
td_ip交易柜台IP地址
td_port交易柜台端口
software_key用户开发软件Key
md_ip行情柜台IP地址
md_port行情柜台端口
client_id1~99任意数字,用于区分同一账户多点登陆
protocol接收行情协议 TCP或者UDP
buffer_size设置采用UDP协议时的接受缓冲区大小
account_code实盘账户授权码,需要跟开户经纪商或者功夫源商务联系获取

添加/设置sim柜台账户字段

字段字段含义
user_id用户名
match_mode撮合规则

撮合规则字段说明

字段字段含义
reject拒绝
pend挂单
cancel撤单
partialfillandcancel部分成交部分撤单
partialfill部分成交
fill全部成交

策略维护

在KungFu交易系统中,策略模块相当于系统的策略池,用户可以根据实际需要,在策略模块中对已有策略进行编辑修改和删除,同时可以查看到每一个策略实时的持仓情况、委托情况、成交情况、盈亏情况以及交易日志

策略功能说明

策略设置

在实际使用中,如果用户需要修改策略的本地文件路径,可以点击策略右侧相应的设置按钮,重新绑定新的策略文件

如果策略正在运行,需要重启策略后,策略新绑定的文件路径才能生效

策略编辑

在KungFu交易系统中,内嵌了IDE,用户可以在KungFu系统中编写本地策略,点击策略右侧相应的编辑按钮,会有策略编辑IDE弹窗,在弹窗内,用户可以对策略绑定的本地文件进行编辑,在KungFu内嵌的IDE中,支持

  • 创建新的文件
  • 创建新的文件夹
  • 编译已有文件内容
  • 重命名已有文件
  • 设置缩进方式(利用空格键还是利用Tab键进行缩进)、缩进距离(一个缩进是两个空格还是四个空格)
策略编辑

删除策略

在删除不需要的策略之前,需要保证策略处于关闭状态,需要注意的是,策略删除成功后,系统会将该策略的所有相关信息都删除,其中包括策略持仓信息、策略委托信息、策略成交信息、策略盈亏信息、策略交易日志信息。

策略信息

策略持仓

在策略列表中,选中需要查看持仓的策略后,在持仓模块就会显示该策略的持仓信息,其中包括:

  • 代码:持仓标的的代码
  • 多空:持仓的方向
  • 昨:该标的的昨仓
  • 今:该标的的今仓
  • 总:该标的的总持仓

用户可以通过搜索标的代码来定位自己需要查看的标的持仓,可以通过点击导出按钮,导出策略的持仓明细;

用户可以通过搜索标的代码来定位自己需要查看的的标的持仓:

策略委托

在策略列表中,选中需要查看委托记录的策略后,在委托板块会显示该策略的委托记录。

在委托模块中,默认显示的是该策略的未完成委托;点击当日委托按钮后,会显示该策略当日所有的委托记录; 用户可以通过点击导出按钮,导出该策略某一天的历史委托记录;

在委托记录列表中,我们展示了每一笔委托记录的:

  • 下单时间:触发该笔委托的时间
  • 代码:该笔委托的标的代码
  • 买卖:该笔委托的买卖方向
  • 开平:该笔委托对应的仓位开平方向
  • 委托价:该笔委托对应的委托价格
  • 已成交/全部:该笔委托已成交的数量与该笔委托的委托总量的比
  • 订单状态:该笔委托当前的状态
  • 系统延迟:收到行情到交易柜台发出订单的时间间隔,单位为微秒
  • 网络延迟:柜台发出订单到收到第一个回报的时间间隔(注意,有些柜台第一个回报为交易所回报,有些柜台为券商柜台的回报,具体可以咨询券商),单位为微秒
  • 账户:显示执行该委托的交易账户名称

功夫量化交易系统支持用户对未完成委托进行撤单操作,点击全部撤单按钮后,系统会对当前该策略的所有未完成订单进行撤单操作

委托订单状态对应表

字段字段说明
等待委托订单请求已发送,等待柜台返回信息,非最终状态
错误委托订单请求失败,最终状态
全部成交委托订单请求已全部成交,最终状态
全部撤销委托订单请求已全部撤销,最终状态
部分撤销部分成交委托订单部分撤销部分成交,最终状态

策略委托详情

双击策略委托记录,可以查看详细的委托信息

策略委托详情

策略成交

在策略列表中,选中需要查看当日成交记录的策略后,页面右下方就会显示该策略的当日成交记录。

在当日成交记录中,我们展示了每一笔成交记录的:

在成交记录列表中,我们展示了每一笔成交记录的:

  • 成交时间:该笔交易完成的时间
  • 代码:该笔交易的标的代码
  • 买卖:该笔交易的买卖方向
  • 开平:该笔交易对应的仓位开平方向
  • 成交价:该笔交易的标的成交价格
  • 成交量:该笔交易的标的成交量
  • 交易延迟:发送订单到订单成交之间的时间间隔,单位为微秒
  • 账户:执行该笔成交的交易账户名

策略盈亏

在策略列表中,选中需要查看盈亏的策略后,收益曲线就会显示该策略的实时盈亏情况

收益曲线有两种表现形式:日线、分钟线

  • 日线会显示该策略添加到系统后的整体盈亏走势以及累计收益
  • 分钟线显示该策略当天的整体盈亏走势以及当日收益

交易日志

交易日志模块会显示策略列表中选中的策略的交易日志详情,如果该策略正在运行,交易日志也会实时更新,用户勾选跟踪至底部后,交易日志会一直滚动显示最新的日志信息;

用户可以根据搜索关键字的方式来筛选需要查看的交易日志,如果策略的交易日志过多,用户也可以点击清空按钮,清空前端显示的交易日志;


手动下单

账户下单

账户手动下单

点击账户页面右上角的下单按钮,可以通过当前选定的交易账户进行手动下单

  • 代码:需要进行手动下单的标的代码
  • 交易所:支持上交所、深交所、上期所、大商所、郑商所、中金所以及能源中心
  • 类型:报单类型,支持限价单以及市价单
  • 价格:委托价格(限价单)
  • 数量:委托数量
  • 开平:支持开仓、平仓(默认平昨仓)、平今仓以及平昨仓(期货账户)
  • 套保:支持投机、套利、套保以及备兑(期货账户)

策略下单

策略手动下单

点击策略页面右上角的下单按钮,可以针对当前选定策略进行手动下单,下单生成的持仓、委托以及成交纳入当前策略相应的数据中

  • 代码: 需要进行手动下单的标的代码
  • 账户:下单绑定的交易账户
  • 交易所:支持上交所、深交所、上期所、大商所、郑商所、中金所以及能源中心
  • 类型:报单类型,支持限价单以及市价单
  • 价格:委托价格(限价单)
  • 数量:委托数量
  • 开平:支持开仓、平仓(默认平昨仓)、平今仓以及平昨仓(期货账户)
  • 套保:支持投机、套利、套保以及备兑(期货账户)

状态监控

账户监控

为了方便用户实时监控系统内账户的交易连接状态以及柜台的行情连接状态,在系统页面的右下角设置了账户状态监控浮窗,用户可以通过浮窗按钮的字体颜色来判别当前系统的状态,具体规则如下:

  • 当所有连接都就绪时,按钮文字为绿色
  • 当有连接未打开,其他连接都为就绪时,按钮文字为灰色
  • 当有连接状态处于异常时,按钮文字会显示为橙色或者红色

用户还可以在状态浮窗中启停账户的交易连接以及柜台的行情连接

进程监控

为了方便用户可以实时地监控功夫交易系统的主控进程(master)以及数据进程(watcher)的状态,在系统页面的右下角有主进程状态监控浮窗,点击展开浮窗后,可以看到主控进程和数据进程的实时状态,让用户更加全面掌握系统的状态;

如果发现进程出现报错,用户可以打开进程的运行日志,通过详细的运行日志,定位进程报错的原因;


系统设置

点击Kungfu—-Setting按钮,即可打开功夫的系统设置弹窗

极速模式

开启极速模式可以减少kungfu交易系统内部延时,需要重启kungfu生效

使用本地python

kungfu交易系统策略默认使用内置python,内置python包含的拓展包列表可以参考api文档相应说明。如需要使用本机python,可以按照以下方式操作

  1. 安装python3.7
  2. 运行命令

* 备注:Linux上安装Python需要同时安装python-devel及编译器等工具

$ pip3 install *package_name_list*

3. 具体文件目录可以在配置界面打开whl文件查看

$ pip3 install /Applications/Kungfu.app/Contents/Resources/kungfu-resources/python/kungfu-2.2.0-py3-none-any.whl 

4. 系统配置界面选择使用本地python

5. 重启策略,即可在策略中根据需求调用本地安装的python包

日志级别设置

在日志界别设置中,用户可以设置系统显示的最低日志界别,日志级别从低到高分别为:

  • TRACE
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • CRITICAL

例如将日志级别设置为INFO,则系统将不会显示日志级别为TRACE以及DEBUG的日志信息,设置 完日志级别后,需要重启进程,设置才能生效,主进程(ledger&master)的日志级别需要重启系统设置才可生效

策略编辑设置

在策略编辑设置中,用户可以设置KungFu策略编辑器的:

  • 缩进类别:使用“TAB”键还是”Space”键作为缩进按钮
  • 缩进大小:选择一个缩进的距离,可以选择两个空格或者四个空格

订阅多级分钟线行情(BAR)

功夫交易系统支持订阅K线行情(BAR),开启订阅多级分钟线功能,需要进入功夫的系统设置模块,选择BAR行情柜台、设置BAR频率后,BAR频率可以选择:30s、1min、3min、5min、10min以及15min,设置完成后,即可打开BAR数据进程开关;

bar设置

完成BAR数据进程的设置以及开启后,即可在策略内添加需要订阅需要BAR行情的标的:

# 订阅需要BAR行情的标的
def pre_start(context)
    context.subscribe("bar", tickers, EXCHANGE)

然后即可通过on_bar定义策略收到BAR行情以后的行为:

# 收到BAR行情以后,打印BAR行情信息
def on_bar(context,bar)
		context.log.info("[on_bar] {}".format(bar))

系统会根据预设的BAR频率,以及策略订阅的标的列表,向策略推送相应的BAR行情,BAR的数据结构详情可以查看功夫API文档

手续费设置

设置手续费可以使策略pnl计算更为准确,手续费可以根据券商要求设置为按交易金额和交易手数


版本更新列表

  • 2.2.2
    • KungFu-Cli 日志支持换行
    • 稳定性相关增强
    • Bug修改
  • 2.2.1
    • 支持查看历史委托
    • 支持查看委托详情
    • 支持展宽信息面板
    • Bug 修复
  • 2.2.0
    • 新增功能点
      • 增加极速模式
      • 增加系统延时和成交延时统计
      • 增加使用本地python选项,支持拓展python包
      • 支持手续费设置
      • 支持通过账户或者策略进行手动下单
      • 支持期权业务
      • 支持多个柜台使用同一账户
      • 行情交易柜台账户独立
      • 修改日志显示信息
      • 策略可选择使用本地持仓或者账户持仓
    • 修复bug
      • 解决行情过滤问题
      • 解决windows系统上无法触发策略pre_stop回调的问题
  • 2.1.0
    • 支持订阅k线行情
    • 新政账户资金以及持仓查询接口
  • 2.0.0:
    • 跨平台支持
    • 支持 Python 3
    • 提供基于 Electron 的图形化操作界面
  • 1.0.0:
    • 以 Docker/rpm 方式运行的最后稳定版本
  • 0.0.5:
    • 增加对股票交易柜台 xtp 的支持
    • 在系统 docker 中增加了 numa(xtp 的依赖),不希望更新 docker 的用户可以通过 yum install numactl 来手动安装
  • 0.0.4:
    • 增加 FeeHandler 模块,增加策略中的 Pnl 实时计算支持
  • 0.0.3:
    • 增强 wingchun report 中的延迟统计工具,新增调用API前的系统内耗时 (TTT before API)
  • 0.0.2:
    • 修正了 PosHandler 的一个 update 情况的潜在风险
    • 修正没有 close 的 file 句柄
    • 修正了 memcpy 的潜在越界问题
    • 编译选项优化为 O3
  • 0.0.1: 初始化版本

KungFu-CLI

简介

KungFu-CLI系统是基于Linux操作系统的命令行监控交互界面,告别Linux shell小黑屋,通过简洁的界面,所有交易所需要数据一览无遗,操作灵活、简单

安装

下载含有KungFu-CLI功能的功夫交易系统Linux安装包 Kungfu-version.rpm 或者是 Kungfu-version.AppImage,对于rpm安装包,安装命令为:

$ yum install Kungfu-version.rpm

Kungfu-version.AppImage 需要将 appimage 抽出,生成 squashfs-root 文件夹(该文件夹名称以系统生成为准),再将其内容复制到 /opt/Kungfu 目录下

$ ./Kungfu-version.AppImage --appimage-extract 
$ cp -R squashfs-root/* /opt/Kungfu

在Linux系统安装成功后,需要把kungfu/resources/下的文件权限改为777

$ sudo chmod 777 -R /opt/Kungfu/resources/

文件路径

安装完成后,CLI的文件路径如下

$ cd /opt/Kungfu/resources/kungfu-cli

功能说明

监控所有进程

在KungFu CLI文件目录内,输入命令

$ ./kungfu-cli monit

界面左侧会显示系统内所有的进程,其中包括:

  • MASTER:主控进程
  • LEDGER:数据进程
  • MD:行情柜台进程
  • TD:交易柜台进程
  • Strat:策略进程

进程状态对应表

状态字段状态说明
Running运行中
Stopping停止中
Stopped已停止
Launching启动中
Errored错误
Pending等待中
Idle无数据
Disconnected已断开
Connected已连接

同时显示每一个进程对应的状态,通过上下键移动光标选择进程,选中后通过回车键可以启动或停止该进程;在界面右侧会显示进程的实时运行日志

master进程默认关闭,需要手动开启master进程后,系统才能正常运行

添加账户

在KungFu CLI文件目录内,输入命令行

$ ./kungfu-cli add

通过上下按键选择添加账户,然后选择账户的行情柜台(md)或者交易柜台(td),目前支持sim模拟柜台、CTP期货柜台以及XTP股票柜台,回车确定,然后输入对应的账户表单

柜台字段参照表

添加策略

在KungFu CLI文件目录内,输入命令

$ ./kungfu-cli add

通过上下按键选择添加策略,选择后续输入策略名称(不能与已有的策略名称重复)以及策略的本地路径就可完成策略添加

监控单进程

在KungFu CLI文件目录内,输入命令

$ ./kungfu-cli monit -l

界面显示系统内所有的账户进程以及策略进程,通过上下键移动光标选择需要监控的进程,回车确认

当选中账户进程,界面会显示该账户的详细情况,在界面的左上方会显示账户的行情进程状态以及交易进程状态,通过上下键移动光标,回车键进行启动和关闭进程

当选中策略进程,界面会显示该策略的详细情况,在界面的左上方会显示策略的运行情况,可以通过回车键进行启动和关闭进程

删除监控进程

在KungFu CLI文件目录内,输入命令

$ ./kungfu-cli monit -k

删除账户/策略

在KungFu CLI文件目录内,输入命令

$ ./kungfu-cli remove

界面会显示当前系统内的所有账户以及策略,通过上下键移动光标,选中需要删除的账户或者策略,回车删除

更新账户或策略

在KungFu CLI文件夹内,输入命令行

$ ./kungfu-cli update

修改参数时,不输入新的参数,直接回车,该参数不会被修改

配置CLI

在KungFu CLI文件夹内,输入命令行

$ ./kungfu-cli config
  • performance :开启极速模式
  • strategy :使用本地python
  • log :更改显示log级别
  • bar :开启计算bar数据进程

使用本地python 时,需要先安装 kungfu*.whl,文件路径为:/opt/Kungfu/resources/kungfu-resources/python

$ pip3 install kungfu*.whl

需要输入本地python路径(推荐python3.7),需要定位到python的可执行文件

获取帮助

在KungFu CLI文件夹内,输入命令行

$ ./kungfu-cli -h

界面会显示KungFu CLI所有支持的命令以及相应的解释

字段说明

Assets窗口

字段字段含义
AccountId(ClientId)账户名称 or 策略名称
InitialEquity初始权益
StaticEquity静态权益
DynamicEquity动态权益
RealizedPnl实现阴亏
UnRealizedPnl未实现盈亏
Avail可用资金
MarketValue市值(股票)
Margin保证金(期货)

Positions窗口

字段字段含义
AccountId(ClientId)账户名称 or 策略名称
InitialEquity初始权益
Yesterday昨仓
Today今仓
Total总持仓
Open开仓均价
Last最新价
UnrealPnl未实现盈亏

Orders Records(3days)窗口

字段字段含义
UpdateTime更新时间
Ticker标的代码
Side买卖方向
Offset开平方向
Price委托价格
Filled/Not已完成/全部
Status委托状态
Strate(Account)发出委托的策略 or 账户

Trades Records(3days)窗口

字段字段含义
UpdateTime更新时间
Ticker标的代码
Side买卖方向
Offset开平方向
Price成交价格
Filled/Not成交量
Strate(Account)成交的策略 or 账户

附录

账户授权码

购买账户授权码

点击功夫官网的许可购买连接

选择需要的账户授权码有效时长,点击相应的立刻购买按钮进入下单页面,合作券商和期货公司的用户可以联系我们获取免费的账户授权码

在下单页面,输入必填项以及勾选同意功夫条款后,即可进行付款

备注:交易账号需要填写您的柜台交易账号,生成的账户授权码只能匹配该交易账号使用,请仔细填写、确认无误后再进行付款

如果有功夫量化的优惠券,可以点击下单页面上方的“点击这里输入您的代码”,输入优惠券代码,点击使用优惠券,即可享受优惠

付款成功后,点击页面的”生成账户授权码”按钮,即可生成相应的账户授权码

进入我的账户–订单页面,查看相应的订单,订单信息中会有账户授权码以及功夫key文件的下载下载连接

使用账户授权码

账户授权码

将系统生成的账户授权码,复制到功夫系统添加账户弹窗中,其中的交易账户(account_id)与账户授权码(account_code)需要匹配使用

kungfu.key 文件

下载 kungfu.key 文件后,需要将kungfu.key拖到功夫系统 app文件夹 内,对于 Windows、Linux以及Mac操作系统,可以通过系统右上角的 KungFu — About 中,查看到功夫app文件夹的文件路径

功夫app文件夹路径

对于CLI用户,可以通过下面命令,查看功夫app文件夹路径

$ ./kungfu-cli showdir home

Setup 编译及运行环境

功夫的编译依赖以下工具:

  • 支持 C++17 的编译器
  • Node.js (10.16.3)
  • yarn
  • Python 3
  • pipenv
  • cmake (>3.12)

功夫编译依赖 Node.js,建议预先进行如下设置加速依赖包的下载:

$ npm config set registry https://registry.npm.taobao.org
$ npm config set puppeteer_download_host https://npm.taobao.org/mirrors
$ npm config set electron_mirror https://npm.taobao.org/mirrors/electron/
$ npm config set sass-binary-site https://npm.taobao.org/mirrors/node-sass
$ npm config set npm_config_disturl=https://npm.taobao.org/mirrors/atom-shell

MacOSX

$ brew install git cmake node@10
$ npm install -g yarn electron-builder
$ pip install pipenv

Windows

开发组在 Visual Studio 2017 15.9.14 环境下进行工作,安装时需要勾选 VC140(Visual Studio 2015) toolset 以及 Windows 10 SDK (10.0.17763.0)

下载并安装  Visual C++ Redistributable

下载并安装 gitPython 3CMakeNode.js LTS 10.16.3 并添加相应路径至 %PATH% 环境变量。

C:> npm install -g yarn electron-builder
C:> pip install pipenv

Linux

确保编译器支持 C++ 17,例如对于 CentOS,升级 gcc 到 5.0 以上:

yum -y install centos-release-scl
yum -y install devtoolset-8-gcc devtoolset-8-gcc-c++ devtoolset-8-binutils
echo "source /opt/rh/devtoolset-8/enable" >> /etc/profile
source /etc/profile
$ # install cmake3 node.js
$ node-v10.15.3-linux-x64/bin/npm install -g yarn electron-builder
$ pip install pipenv

Compile 编译

常规操作

获取代码并编译:

$ cd kungfu
$ yarn
$ yarn build

编译结果输出在 app/build 目录下,例如在 MacOSX 系统上,最终的可执行文件输出在 app/build/mac/Kungfu.Trader.app。

遇到编译问题需要完整的重新编译时,执行以下命令清理临时文件:

$ yarn clean

选择编译模式

功夫默认编译为 Release 模式(-DCMAKE_BUILD_TYPE=”Release”),如果希望以 Debug 模式编译,需要执行以下命令

$ npm config set kungfu-core:buildtype "Debug"

执行以下命令恢复 Release 模式:

 $ npm config set kungfu-core:buildtype "Release"

切换编译模式后,需要执行以下命令重新生成配置文件:

$ yarn workspace kungfu-core run configure

编译过程产生的临时文件

编译过程会在代码所在目录下生成如下临时文件:

node_modules
build
dist

通常情况下可通过执行如下命令对 build 和 dist 进行清理:

$ yarn clean

需要注意 node_modules 目录为 npm 产生的包目录,一般情况下无需清除,如有特殊需要可手动删除。

另外,编译过程中会在系统的以下路径产生输出:

$HOME/.cmake-js                     # cmake.js 存储的 C++ 依赖包
$HOME/.virtualenvs                  # pipenv(windows) 存储的 Python 依赖
$HOME/.local/share/virtualenvs      # pipenv(unix) 存储的 Python 依赖

如果需要清理这些文件,都需要手动删除。

Scroll Up