模块功能


kfs模块功能

kfs是基于Python和JavaScript封装的可执行程序,其作用是辅助管理插件的编译, 只需要写好package.json文件的配置信息,执行kfs extension build就可以自动识别插件的代码类型是cpp还是python, 自动生成CMakeLists.txt文件,根据配置编译生成CPython模块或可执行程序。

kfs文件路径

Windows: {kungfu安装目录}/resources/kfc/kfs.exe

Linux: {kungfu安装目录}/resources/kfc/kfs

MacOS: {kungfu安装目录}/Contents/Resources/kfc/kfs

小技巧

Windows与MacOS版本可通过图形化界面的菜单栏, 文件->打开功夫安装目录, 可以直接打开 {kungfu安装目录}/resources 目录


extension模块

install

下载package.json里面配置的依赖项目

$ kfs extension install

compile

编译代码生成二进制文件,

如果是cpp代码,根据package.json配置编译生成CPython模块或可执行程序。

如果是Python代码,使用Nuitka编译生成二进制库文件。

$ kfs extension compile

build

先检测依赖的库文件是否已经下载,若没下载则进行下载。如果package.json配置的是cpp代码项目,会自动生成CMakeLists.txt配置文件。然后在执行kfs extension compile的操作生成二进制文件。

$ kfs extension build

package.json文件字段范例:

"kungfuDependencies": {
    "xtp": "v2.2.37.4"
},
"kungfuBuild": {
    "cpp": {
        "target": "bind/python",
        "links": {
            "windows": [
                "xtptraderapi",
                "xtpquoteapi"
            ],
            "linux": [
                "xtptraderapi",
                "xtpquoteapi"
            ],
            "macos": [
                "xtptraderapi",
                "xtpquoteapi"
            ]
        }
    }
}

这是xtp柜台的编译配置信息,执行 kfs extension build 之后,会先下载xtp的v2.2.37.4版本的API头文件和库文件,生成的CMakeLists.txt的配置文件中,设置编译输出为CPython模块,链接库xtptraderapi和xtptraderapi。

小技巧

注: 如果曾经在下载过程中被打断,导致目录下有依赖的库目录但是文件不全,此时检测结果会视为已下载,需要删除 __kungfulibs__ 和 __pypackages__ 目录再执行kfs extension build 命令。


package

将dist目录中编译生成的文件打包到压缩包中

$ kfs extension package

clean

删除build目录和dist目录中编译生成的文件

$ kfs extension clean

format

格式化代码:

cpp的代码使用clang-format进行格式化
Python的代码使用black进行格式化
$ kfs extension format

list

展示kungfu云环境里支持的柜台API列表,列表中的API版本只需要加到package.json的kungfuDependencies字段中, 在执行build的时候就可以自动下载API的头文件和库文件,并且自动配置CMakeLists.txt配置信息。

如果列表中没有您需要的柜台版本,可以联系我们进行添加。

$ kfs extension list

package.json文件字段范例:

"kungfuDependencies": {
    "xtp": "v2.2.37.4",
    "ctp": "v6.6.8"
}

kfs extension install 时会将xtp的v2.2.37.4版本的API头文件和库文件下载到__kungfulibs__/xtp/v2.2.37.4目录下,将ctp的v6.6.8版本的API头文件和库文件下载到__kungfulibs__/ctp/v6.6.8。

kfc模块功能

kfc: 用于启动功夫功夫进程

kfc文件路径

Windows: {kungfu安装目录}/resources/kfc/kfc.exe

Linux: {kungfu安装目录}/resources/kfc/kfc

MacOS: {kungfu安装目录}/Contents/Resources/kfc/kfc

linux下的journal数据读取

journal文件是功夫交易系统中记录进程行为的数据文件。journal文件具有极其丰富的数据信息,如Quote行情信息中记录了档位报价详细信息,可用于盘后复盘。

获取sessions列表

$ ./kfc journal sessions
_images/sessions%E5%B1%95%E7%A4%BA.png

数据详情展示

$ ./kfc journal trace -i session_id
_images/%E6%95%B0%E6%8D%AE%E8%AF%A6%E6%83%85%E5%B1%95%E7%A4%BA.png

数据展示

$ ./kfc journal show -i session_id
_images/%E6%95%B0%E6%8D%AE%E5%B1%95%E7%A4%BA.png

进程启动

进程分为主进程 , 柜台进程 , 策略进程

主进程启动

主进程分为 : master (主控进程), ledger (计算进程)

$ ./kfc -l info run -c system -g master -n master -m live

备注

参数介绍

-l : 是日志级别, 共有5个级别: trace , debug , info , warning , error , critical

-c : 进程类别: system

-g : 组: master进程为 master ; ledger 进程为 service

-n : 名称: master (主控进程), ledger (计算进程)

-m : 启动模式: live (实时交易)

柜台进程启动

柜台进程为: 交易账户进程(TD) , 行情源进程(MD)

# 比如: 启动账户为123456的sim测试柜台的交易账户进程
$ ./kfc -l info run -x '/opt/Kungfu/resources/app/kungfu-extensions/sim/' -c td -g sim -n 123456 -m live

# 比如: 启动sim测试柜台的行情源进程
$ ./kfc -l info run -x '/opt/Kungfu/resources/app/kungfu-extensions/sim/' -c md -g sim -n sim -m live

备注

参数介绍

-l : 是日志级别, 共有5个级别: trace , debug , info , warning , error , critical

-x : 柜台插件模块路径(绝对路径),比如上面例子中的sim柜台,柜台插件所在路径为 “/opt/Kungfu/resources/app/kungfu-extensions/sim/”

-c : 进程类别: 交易进程为 td ; 行情进程为 md

-g : 组: sim(测试柜台)

-n : 名称: sim

-m : 启动模式: live (实时交易)

策略进程启动

$ ./kfc -l info run -c strategy -g default -n test '/home/sim.py' -m live

备注

参数介绍

-l : 是日志级别, 共有5个级别: trace , debug , info , warning , error , critical

-c : 进程类别: 策略进程为 strategy

-g : 组: 策略为 default

-n : 名称: 策略ID

-m : 启动模式: live (实时交易)

策略路径为绝对路径