Vespa314/chan.py
开放式的缠论python实现框架,支持形态学/动力学买卖点分析计算,多级别K线联立,区间套策略,可视化绘图,多种数据接入,策略开发,交易系统对接;
chan.py – 用于缠论市场分析与交易的 Python 框架
简介 – chan.py 是一个开源 Python 库,实现了缠论 (Chan‑Theory) 技术分析方法。它提供了一个全栈流程:
- 底层计算 – 缠论元素计算:分型、笔 (strokes)、线段 (segments)、中枢 (central zones) 以及买卖点(包含经典形态学买卖点与自定义策略买卖点)。
- 特征工程 – 每个买卖点可产生超过 500 个特征,随时可供机器学习模型使用。
- 模型整合 – 封装了 XGBoost、LightGBM 与简单的 MLP,并提供 AutoML 超参数搜索工具。
- 回测与评估 – 可配置的回测引擎,支持参数扫描脚本。
- 实盘交易 – 支持 Futu 券商 API(模拟与实盘)连接器,以及实时行情来源(Sina、pytdx、akshare 等)与数据库后端(MySQL、SQLite)。
- 可视化 – 基于 Matplotlib 的静态绘图与用于逐步回放的动画驱动程序。
核心组件(按文件夹分类)
| 文件夹 | 用途 |
|---|---|
Bi, Seg, ZS |
核心缠论元素(笔、线段、中枢),算法可配置。 |
BuySellPoint, CustomBuySellPoint |
经典形态学买卖点 (bsp) 与用户自定义策略点 (cbsp)。 |
ModelStrategy |
模型训练、特征对齐、AutoML 与回测工具。 |
ChanModel |
抽象模型类、特征注册表与 XGBoost 模型示例。 |
DataAPI |
统一数据访问层 – akshare、baostock、Futu、离线 CSV 与实时快照 API。 |
Trade |
交易引擎、订单执行、仓位管理与数据库持久化。 |
Plot |
绘图驱动程序(CPlotDriver 用于静态图像,CAnimateDriver 用于动画回放)与 COS 上传辅助工具。 |
Debug |
策略示例脚本、性能分析工具与笔记本。 |
App |
基于此库构建的 GUI 扫描器示例。 |
安装 (Python 3.11+)
# clone the repo
git clone https://github.com/Vespa314/chan.py.git
cd chan.py
# install required packages (the repo ships a requirements.txt)
pip install -r requirements.txt
此库需要 Python 3.11(作者报告称比 3.8 版本速度提升约 16%)。
快速开始(静态分析与绘图)
from Chan import CChan
from ChanConfig import CChanConfig
from Plot.PlotDriver import CPlotDriver
# basic configuration – all options are passed as a dict
cfg = CChanConfig({
"zs_combine": True,
"bi_strict": True,
"seg_algo": "chan",
"trigger_step": False,
})
# instantiate the core engine – here we request daily K‑lines for HK.00700
chan = CChan(
code="HK.00700",
begin_time="2012-01-01",
end_time=None,
data_src=DATA_SRC.FUTU,
lv_list=[KL_TYPE.K_DAY],
config=cfg,
autype=AUTYPE.QFQ,
)
# plot everything (k‑line, bi, seg, zs, buy‑sell points)
plot_cfg = {
"plot_kline": True,
"plot_bi": True,
"plot_seg": True,
"plot_zs": True,
"plot_bsp": True,
"plot_cbsp": True,
}
plot_para = {"figure": {"width": 24}}
CPlotDriver(chan, plot_config=plot_cfg, plot_para=plot_para)
执行此脚本将计算指定期间的所有缠论元素,并开启一个 Matplotlib 窗口显示完整可视化结果。
使用机器学习模型进行信号评分
from ChanModel.XGBModel import CXGBModel
# attach a trained XGBoost model (the demo model ships with the repo)
model = CXGBModel(model_path="ModelStrategy/models/Xgboost/model.bin")
cfg.model = model # enable model scoring
cfg.cal_feature = True # force feature calculation
cfg.score_thred = 0.6 # only act on signals with score ≥ 0.6
模型会接收为每个候选买卖点生成的 500 多个特征,并返回一个概率分数,可用于过滤或排序信号。
实盘交易工作流程
- 数据来源 – 在
Config/demo_config.yaml中配置FutuAPI(或任何其他快照 API)。 - 策略 – 使用内置的
CCustomStrategy/CSegBspStrategy或实现继承自Strategy的自定义类。 - 交易引擎 –
TradeEngine消耗生成的信号,应用仓位管理 (OpenQuotaGen),并通过FutuTradeEngine发送订单。 - 持久化 – 交易日志存储在配置文件定义的 MySQL 或 SQLite 中。
- 监控 –
RealTimeTracker监控开仓部位的止损/止盈事件。
适用对象
- 量化研究员:需要精确的缠论实现来进行特征生成与回测。
- 算法交易员:寻求端到端解决方案:数据获取 → 信号生成 → ML 评分 → 实盘下单。
- 教育工作者/学生:对金融 AI 流程的具体、生产级示例感兴趣的人士。
授权与社区
本项目采用 MIT 授权。提供 Telegram 群组 (https://t.me/zen_python) 以供提问,仓库中包含 quick_guide.md 以供入门参考。
以上所有细节均直接取自仓库的 README;未推断任何额外功能。
相关
- 项目
- 项目
- 项目
- 项目