概述
功夫量化交易系统采用模块化自由集成设计,提供高度灵活的操作界面与可视化体验。系统以功能为单位组织不同面板,用户可根据个人习惯自由调整布局,实现个性化工作流。
模块化架构赋予系统强大的灵活统计能力。以持仓面板为例,可根据选中内容动态展示策略、账户或交易算法的持仓数据,满足多维度分析需求。
交易账户管理
交易账户面板支持完整的账户生命周期管理,包括添加新账户、删除或编辑已有账户、创建账户组、单独启动或中止账户进程。
添加账户步骤
- 点击交易账户面板的“添加”按钮。
选择柜台类型:CTP(期货柜台)、XTP(股票柜台)或SIM(模拟柜台)。
- 注意:SIM柜台提供随机模拟数据,仅用于测试参考。
CTP账户配置示例
选择CTP柜台后,填写以下字段:
- 账户名称:自定义账户备注
- 账户ID:券商提供的交易账户名称(如:089270)
- 密码:券商提供的交易密码(如:123456)
- 期货券商代码:券商代号(如:9999)
- 穿透认证码:实盘由券商提供,模拟盘填写16个0
- 客户端名称:固定填写“KUNGFU”
- 客户端识别号:实盘填写“TAURUS_KUNGFU_2.0”,模拟盘填写“simnow_client_test”
- 交易IP:交易柜台地址(如:180.168.146.187)
- 端口:交易柜台端口(如:10200)
- 同步外部订单:开启后同步其他软件的订单
- 恢复今日订单:启动时拉取本交易日订单
- License Code:官方购买的账户授权码
填写完成后点击“确定”保存配置,可通过进程开关按钮运行账户。
XTP账户配置要点
选择XTP柜台后,需填写:
- 账户别名:自定义备注
- 账户id:股票交易账户
- 密码:股票账户密码
- 软件密钥:由券商提供
- 交易IP:券商提供的柜台地址
- 交易端口:券商提供的端口号
- 客户ID:1-99间任意数字,用于多客户端区分
SIM模拟账户配置
选择功夫模拟柜台后,仅需填写:
- 账户ID:任意标识(如:111或test)
- 撮合模式:选择模拟的订单状态(失败、等待中、撤单等)
账户启动与监控
点击账户进程按钮启动账户,当状态显示为“就绪”时表示登录成功。
通过“账户设置”按钮可查看和修改账户参数,但需注意:修改配置后需重启账户才能生效。
点击日志按钮可在新窗口查看实时运行日志,帮助监控运行状态和排查问题。
账户删除注意事项
删除账户将关闭交易进程并清空所有相关数据,包括委托记录、成交记录和交易日志。删除前请务必备份需要保留的数据。
行情源管理
行情源面板管理市场数据连接,系统通过账户信息获取行情,因此账号密码需与交易账户保持一致。
添加行情源
- 点击行情源面板的“添加”按钮
- 选择柜台类型:CTP、XTP、CTP穿透式、OKX(数字货币)、BinanceFuture(数字货币)或SIM模拟柜台
CTP行情源配置
- 账户ID:与交易账户相同
- 密码:与交易账户相同
- 期货券商代码:与交易账户相同
- 行情地址:行情柜台IP地址
- 端口:行情柜台端口
XTP行情源特殊设置
- 协议:选择TCP或UDP
- 缓冲区大小:可选设置
- 客户ID:必填,1-99间数字
- 查询instruments:开启后会查询所有可交易标的,流量大可能被拉黑
数字货币行情源
OKX和BinanceFuture柜台主要提供三种数据推送选项:Ticker数据、逐笔成交和费率数据,开启可能占用较大内存。
行情源操作
点击进程按钮启动行情源,状态为“就绪”表示连接成功。通过“行情源设置”按钮可查看和修改参数,修改后需重启才能生效。
日志功能帮助监控行情运行状况,点击日志按钮即可查看实时运行日志。
删除行情源将停止行情接收,可能影响依赖该行情源的策略和交易任务,操作前请确认无相关进程运行。
策略进程管理
策略进程面板作为策略池,支持导入策略文件、实时编辑代码,所有修改会自动保存。
添加策略
点击“添加”按钮后填写:
- 策略ID:唯一策略标识
- 策略路径:选择本地.py策略文件
重要提示:策略文件需与系统安装目录在同一盘符;启动前确保交易进程(TD)和行情进程(MD)已就绪,否则可能导致下单失败。
策略操作与监控
点击进程按钮启动或停止策略运行。通过日志按钮可查看策略运行详情,内嵌IDE支持直接编辑代码,修改实时保存。
删除策略将关闭策略进程并停止下单,请谨慎操作。
回放工具应用
回放工具模拟盘中交易情况,支持盘后代码调试和策略复盘,主要功能包括:
日志级别调整
通过回放可查看更详细的debug级别日志,帮助排查问题:
- 点击策略面板的回放按钮
- 选择需要查看的session
- 设置回放结束时间(可选)
- 查看生成的详细日志
策略逻辑修改测试
修改下单逻辑后,可使用撮合器进行实盘数据模拟:
- 编辑策略代码修改逻辑
- 点击回放按钮选择session
- 系统按新逻辑进行模拟
- 对比实盘与模拟结果
手续费测试
通过修改手续费费率并开启撮合器,可测试不同费率下的表现:
- 在策略中增加手续费打印代码
- 全局设置中修改期货手续费
- 开启回放并启用撮合器
- 查看不同费率下的手续费变化
诊断工具深度应用
journal文件记录进程行为的丰富数据,包括行情档位信息,可用于盘后复盘。诊断工具支持多种定位方式:时间戳定位、消息类型过滤和关键字搜索。
策略下单表现分析
- 点击进程旁的眼睛图标打开诊断工具
- 点击“进入可视化”界面
- 查看左侧session栏和标的栏
- 分析右侧图表中的下单、撤单和行情信号
- 查看下方journal记录详情
可视化界面帮助用户:快速查看标的总体下单情况、分析下单相对行情的延时、跟踪同一订单号的下单撤单情况。
操作技巧:鼠标滚轮调整时间跨度;单击信号图例筛选相同order_id的信号;点击记录跳转到对应时间段。
journal数据查看
所有进程(交易账户、行情源、策略进程等)都支持诊断工具查看journal数据。通过文件菜单可查看所有进程的journal文件。
支持多种筛选方式:信道过滤、消息类型过滤、时间戳跳转和Ctrl+F关键字搜索。
算子面板高级功能
算子计算结果可被其他算子或策略订阅,支持嵌套计算,减少重复计算提高效率。算子分为算子插件(官方封装)和算子文件(用户编写)两种类型。
算子应用场景
- 计算开销分离:将机器学习等重型计算与策略进程分离,减少数据拥塞
- 计算结果复用:生成K线或因子供多个策略订阅,避免重复计算
- 合成数据生成:生成K线、预测因子或目标仓位数据
添加算子
点击“添加”按钮选择算子类型(文件或插件):
算子插件配置(以bar数据为例)
- Bar ID:唯一标识,用于其他组件订阅
- 数据源:选择行情源类型
- 标的:可多选
- 周期:合成数据的计算和推送频率(秒)
算子文件配置
- 算子ID:唯一标识
- 备注:描述信息
- 算子路径:选择本地.py文件
算子调用示例
K线合成代码
from kungfu.wingchun.constants import *
source = "sim"
exchange = Exchange.SSE
def pre_start(context):
context.subscribe(source, ['600420','600000'], exchange)
def on_quote(context, quote, location, dest):
context.publish_synthetic_data('op', "{}".format(quote))订阅算子数据
def pre_start(context):
context.subscribe_operator("bar", "my-bar") # 订阅插件算子
context.subscribe_operator("default", "op2") # 订阅文件算子
def on_synthetic_data(context, synthetic_data, location, dest):
context.log.info("on_synthetic_data: {}".format(synthetic_data))重要提示:策略订阅算子后仍需订阅行情源;注意算子启动顺序依赖;算子未运行时策略会保持监听;多数据源同时使用时策略会综合所有可用数据。
👉 探索更多算子策略
持仓与交易管理
持仓面板功能
支持搜索、刷新和导出功能,可按照策略或账户维度灵活统计持仓信息。字段包括:持仓代码、方向、昨仓、今仓、总持仓、开仓均价、最新价和浮动盈亏。
委托记录管理
提供完整的委托生命周期管理,支持:
- 搜索筛选:按标的搜索委托记录
- 状态筛选:筛选未完成委托
- 数据导出:按交易日或自然日导出
- 历史查询:查看非当日委托记录
- 实时统计:按标的分组统计完成情况
- 订单操作:撤单、改单和预撤功能
委托状态包括:已提交、等待中、正在交易、待撤、全部成交、全部撤销、部分撤销部分成交、错误和丢失。
成交记录分析
提供成交数据的搜索、导出和查询功能,按标的分组统计成交量和支持延迟分析,帮助用户掌握账户整体成交情况。
交易任务自动化
系统提供条件单、Excel下单、冰山和TWAP四种交易任务,支持暂停和重启功能。
条件单配置
支持价格和时间条件触发:
- 价格条件:达到设定价格时触发
- 时间条件:到达设定时间时触发
- 混合条件:按满足先后顺序触发
- 多条件:多个价格条件需同时满足
Excel批量下单
适合多标定时下单需求:
- 自动选择与交易账户相同的行情源
- 仅支持单个sheet表
- 所有标的下完成后任务自动关闭
- 需按指定格式填写时间、标的、价格等字段
冰山订单
适用于大额订单分散成交:
- 委托全部成交才会触发下一次下单
- 配置目标价格、委托暴露量、每轮间隔等参数
- 上一单未完成即使行情满足也不会下新单
TWAP时间加权平均
两种TWAP类型区别:
- 剩余累积:未完成部分累积到下一下单
- 剩余平均:未完成部分平均分配到剩余次数
TWAP剩余累积在结束时间到达后会撤单,而TWAP剩余平均会以涨停/跌停价报单力求完成。
行情与下单操作
行情订阅与深度行情
行情订阅面板管理关注标的,深度行情面板展示买卖十档盘口动态信息:
- 绿色:卖盘十档
- 红色:买盘十档
- 灰色:最新价显示
实用技巧:点击深度行情档位可自动填充下单信息;点击其他面板的标的可快速查看对应盘口。
下单面板功能
支持普通下单、拆单和预埋单功能(期货标的)。点击其他面板的标的可自动填充代码和价格,提高操作效率。
快捷键操作:
- Ctrl/Command+Shift+1:聚焦下单面板
- Tab/Shift+Tab:下一项/上一项
- 方向键:选择选项
- Enter:确认
- Space:勾选/取消
预埋单高级管理
支持批量预埋单、单笔预埋单和预埋撤单功能,提供完整的预埋单生命周期管理。
预埋单记录面板
通过添加“预埋单记录”面板更好地追踪预埋单状态,字段包括:类型(下单/撤单)、生成时间、标的、买卖方向、开平、委托价、委托量、触发时间、订单状态和回报信息。
单笔预埋单操作
- 在下单面板填写信息后点击预埋
- 在预埋单记录面板查看记录
- 开盘后触发生成普通委托
注意:预埋单只能在盘休时刻下单;开盘后状态未更新可点击刷新。
批量预埋单操作
- 点击“批量”按钮下载模板
- 按提示修改模板后导入CSV
- 二次调整后确认
- 开盘后触发生成多条委托
预埋撤单管理
预埋撤单针对盘休前正在交易的订单,可通过委托记录面板的“预撤”按钮快速操作。取消预埋撤单有两种方式:从委托记录面板或预埋单记录面板操作。
重要区分:预埋撤单是对现有订单的撤单操作,而撤单预埋单是取消已下的预埋单。
全局设置详解
通过左下角设置按钮或Ctrl+,快捷键进入全局设置页面。
系统设置
- Home路径:修改Kf_home存放路径(不能含中文)
- 日志级别:设置全局日志显示级别
- 语言选择:支持中文和英文(重启生效)
- 交易进程自动重启:出错后自动重试三次
- 跳过归档:加快启动速度但无法恢复历史数据
- 开发者模式:保留所有journal和log文件(仅开发者使用)
性能优化
- 极速模式:大幅降低系统延迟(需CPU>4核)
- 跳过UI进程计算:减轻UI性能占用
- 纯监控模式:最低性能占用仅监控状态
- 跳过持仓行情订阅:使用开仓均价计算盈亏,减轻负担
策略环境配置
当内置Python缺少所需模块时,可使用本地Python环境(必须为3.9.x版本)。开启“使用本地python”后选择可执行程序路径,并通过pip安装所需的whl文件。
交易参数设置
- 成交提示音:下单成交时发出提示
- 乌龙指阈值:委托价偏离市场价过多时提示
- 平仓阈值:平仓后仓位过低时提示
- 跳过下单确认:直接下单不弹确认框
- 交易限制:对标的设置成交量、价限制
- 持仓表格配置:自定义持仓面板显示字段
- 跳过持仓同步:仅本地维护持仓(无外部下单时建议开启)
控制中心与插件库
客户端右下角“控制中心”监控所有进程状态,字体变红表示有系统服务中断,需及时重启。
功夫提供多种插件满足不同需求:高精回测插件、柜台插件、算法插件等,用户可根据需要选择或定制专用插件。
常见问题
账户连接类
Q:账户无法登录怎么办?
A:首先检查账户信息是否正确填写,特别是账户ID、密码和券商代码。确保网络连接正常,交易IP和端口无误。如为实盘账户,确认授权码有效。
Q:SIM模拟账户有什么使用限制?
A:SIM柜台提供随机模拟数据,仅用于功能测试和策略验证,不能反映真实市场情况。模拟撮合模式可设置不同订单状态用于测试。
行情数据类
Q:行情源连接失败如何排查?
A:确认行情账号密码与交易账户一致;检查行情地址和端口是否正确;网络连接是否正常;查看日志中的具体错误信息。
Q:XTP行情查询instruments选项是否要开启?
A:除非必要,否则不建议开启。该功能会查询所有可交易标的,流量过大可能导致账号或IP被XTP拉黑限制。
策略运行类
Q:策略下单失败可能原因?
A:主要检查:交易进程(TD)和行情进程(MD)是否就绪;策略代码是否存在错误;资金或仓位是否充足;交易所是否处于可交易状态。
Q:回放工具有什么实用技巧?
A:可设置结束时间提高回放效率;通过修改日志级别获取详细调试信息;使用撮合器测试策略逻辑修改效果;对比不同手续费下的表现差异。
系统优化类
Q:如何提高系统性能?
A:根据机器配置开启极速模式(CPU>4核);跳过UI进程计算;启用纯监控模式;跳过持仓行情订阅;定期清理journal文件。
Q:什么情况下使用本地Python?
A:当策略需要特定第三方库而内置Python环境中不存在时,可配置本地Python环境。但需确保版本兼容性(必须为3.9.x)。
交易操作类
Q:预埋单和普通委托有什么区别?
A:预埋单在盘休时刻下单,开盘后自动触发生成普通委托。主要用于非交易时间的委托准备,避免开盘时匆忙下单。
Q:TWAP两种类型如何选择?
A:TWAP剩余累积更注重按计划执行,结束时会撤单;TWAP剩余平均更注重完成总量,结束时以涨跌停价报单。根据交易目标选择合适类型。