-
Notifications
You must be signed in to change notification settings - Fork 724
高级特性
本文档旨在深入探讨Hikyuu量化交易框架的高级特性和工具集,帮助高级用户提升工作效率并实现复杂工作流。文档将详细介绍GUI图形界面HikyuuTDX的功能,包括数据导入监控、实时行情查看和策略管理;阐述命令行工具hkushell和交互式shell的使用方法,用于自动化任务和快速原型开发;说明analysis模块提供的策略分析功能,如组合分析;并展示tools目录下的实用脚本,如数据清理和文件复制工具。
HikyuuTDX是Hikyuu框架的图形用户界面,为用户提供了一个直观、易用的操作平台,用于管理数据导入、实时行情监控和策略配置。
HikyuuTDX的核心功能之一是数据导入。用户可以通过图形界面配置从不同数据源(如通达信客户端、pytdx库或QMT)导入历史K线数据、权息数据、财务数据和板块信息。界面提供了详细的配置选项,包括:
- 数据源选择:用户可以选择使用本地通达信客户端目录、通过pytdx库从网络下载或使用QMT进行数据导入。
- 数据类型选择:用户可以灵活选择需要导入的数据类型,包括股票、基金、期货的K线数据(日线、5分钟线、1分钟线等)、权息信息、历史财务数据和板块分类。
- 存储配置:支持将数据存储到HDF5文件、MySQL数据库或ClickHouse数据库中,用户可以根据需求选择最适合的存储方案。
导入过程通过多线程技术实现,确保了高效率。用户可以在界面上实时监控导入进度,包括已完成的任务和当前状态。当导入任务启动时,系统会创建一个UseTdxImportToH5Thread或UsePytdxImportToH5Thread线程来执行具体的导入任务,并通过信号机制将进度信息反馈到主界面。
graph TD
A[用户启动导入] --> B[创建导入线程]
B --> C[初始化任务列表]
C --> D{遍历配置}
D --> |导入K线数据| E[创建ImportTdxToH5Task]
D --> |导入权息数据| F[创建ImportWeightToSqliteTask]
D --> |导入财务数据| G[创建ImportHistoryFinanceTask]
D --> |导入板块信息| H[创建ImportBlockInfoTask]
E --> I[执行导入任务]
F --> I
G --> I
H --> I
I --> J[更新进度条]
J --> K[任务完成]
Diagram sources
- HikyuuTDX.py
- UseTdxImportToH5Thread.py
HikyuuTDX集成了实时行情采集功能,能够从网络源(如新浪、腾讯)或本地QMT客户端获取实时的股票行情数据。系统通过CollectSpotThread线程定时采集行情,并将数据通过NNG(Nanomsg Next Generation)发布-订阅模式发送到指定的IPC或TCP地址。用户可以在界面上查看当前的采集状态和最近的行情数据。
Section sources
- HikyuuTDX.py
- spot_server.py
虽然HikyuuTDX主要侧重于数据管理,但它为策略开发提供了基础支持。通过生成和管理hikyuu.ini配置文件,它为上层的策略回测和实盘交易提供了必要的环境配置。用户可以配置数据预加载的K线类型和数量,这直接影响策略运行时的数据可用性。
hkushell是一个基于Python cmd模块构建的命令行交互工具,为用户提供了一种高效的方式来执行Hikyuu框架的自动化任务。
hkushell的主要功能是启动、停止和监控一个后台服务进程(hkuserver)。这个服务进程可以独立运行,为其他应用程序提供数据服务或执行长时间运行的任务。
-
服务管理:用户可以通过
server start、server stop和server status命令来控制后台服务的生命周期。 -
日志级别控制:通过
server set_logger_level命令,用户可以动态调整服务端的日志输出级别,便于调试和监控。 -
命令记录与回放:
hkushell支持record和playback命令,允许用户将一系列操作记录到文件中,并在以后回放,这对于自动化测试和批量任务处理非常有用。
hkushell本身是一个命令行解释器,其核心是HKUShell类。该类通过装饰器@shell_cmd包装命令函数,确保每个命令执行后都能更新提示符和行号。cmdserver.py模块中的server函数被注册为HKUShell的一个命令,它通过subprocess模块启动hkuserver可执行文件,并通过HTTP API与之通信。
sequenceDiagram
participant User as 用户
participant Shell as HKUShell
participant Server as hkuserver
participant OS as 操作系统
User->>Shell : server start
Shell->>OS : subprocess.Popen(hkuserver)
OS-->>Shell : 返回进程句柄
Shell->>User : 服务已启动
User->>Shell : server status
Shell->>Server : HTTP GET /assist/status
Server-->>Shell : 返回状态信息
Shell->>User : 显示状态
User->>Shell : server stop
Shell->>OS : terminate() 进程
OS-->>Shell : 进程终止
Shell->>User : 服务已停止
Diagram sources
- hkushell.py
- hkucmd.py
- cmdserver.py
Section sources
- hkushell.py
- hkucmd.py
- cmdserver.py
interactive.py是一个预配置的Python交互式脚本,旨在为用户提供一个开箱即用的量化分析环境。
该脚本的主要作用是:
-
初始化环境:通过
load_hikyuu()函数加载Hikyuu框架的核心库和数据。 -
预定义常用对象:脚本创建了多个常用的
Block(板块)对象,如zsbk_a(所有A股)、zsbk_sh(上证A股)、zsbk_sz(深证A股)、zsbk_cyb(创业板)等。这些对象可以直接在交互式环境中使用,无需用户手动创建,极大地简化了针对特定股票集合的分析工作。 -
快速原型开发:用户可以将
interactive.py作为起点,导入其定义的变量,然后在此基础上编写和测试自己的策略或分析代码,实现快速的原型开发。
Section sources
- interactive.py
analysis模块位于hikyuu/analysis/analysis.py,提供了一系列用于策略性能分析和组合测试的高级函数。
该模块的核心功能是combinate_ind_analysis和combinate_ind_analysis_multi函数,它们实现了指标组合测试。
-
单只股票测试:
combinate_ind_analysis函数允许用户对单只股票测试不同的买入和卖出信号指标组合。它会遍历所有可能的组合,计算每种组合下的策略绩效,并返回一个包含各项绩效指标(如累计投入本金、当前总资产、赢利交易比例等)的Pandas DataFrame。 -
多股票测试:
combinate_ind_analysis_multi函数将上述功能扩展到一个股票集合(Block或列表),可以批量测试多个股票在不同指标组合下的表现,非常适合进行大规模的策略筛选和优化。
这些函数通过调用底层C++实现的inner_combinate_ind_analysis来保证计算效率,是进行策略参数优化和信号有效性验证的强大工具。
Section sources
- analysis.py
tools目录包含了一系列独立的实用脚本,用于解决特定的数据处理和维护问题。
h5_data_clear.py脚本用于清理HDF5格式的K线数据文件。它会连接到SQLite数据库(存储股票基本信息),然后检查HDF5文件中的每个数据表。如果某个表是空的,或者其名称(股票代码)不在数据库的股票列表中,该脚本就会将其从HDF5文件中删除。这有助于保持数据文件的整洁,释放磁盘空间。
Section sources
- h5_data_clear.py
copy_file.py脚本的功能非常直接,它使用pytables库的copy_file函数来复制HDF5文件。例如,它可以将sh_day.h5复制为sh_day_new.h5。这种操作在进行数据备份或创建数据快照时非常有用。
Section sources
- copy_file.py
Hikyuu框架通过提供GUI图形界面、命令行工具、交互式shell、策略分析模块和一系列实用脚本,构建了一个功能全面、层次分明的高级工具集。HikyuuTDX为数据管理提供了直观的入口,hkushell和interactive.py为自动化和快速开发提供了灵活的接口,analysis模块则为策略研究提供了强大的分析能力,而tools目录下的脚本则解决了日常维护中的具体问题。这些高级特性共同构成了一个高效、可扩展的工作流,能够显著提升量化交易研究和开发的效率。