【量化看市场系列之十】给龙虾插上形态学的翅膀--形态学Skills(huachuang-morphology-skills)上线

华创专题报告
摘要
为便于系统观察A股市场中各类K线形态的整体表现,我们对常见的K线形态进行了量化定义与特征归纳,构建了一套可在全部A股日线上自动标注K线形态的研究系统,并实现每日更新。网址为:https://xingtai.pro。此外,我们同步上线了微信小程序“看线宝”,以不同的产品形式为大家提供形态学相关的服务。在提供个股形态学研究结果的基础上,我们进一步将个股形态信号整合为指数信号,实现对宽基指数、行业指数及概念指数的择时分析。通过自下而上的视角,将个股层面的形态信号进行聚合与归纳,有助于从整体上把握不同板块的市场情绪与资金动向;前不久推出了ETF择时策略,辅助资产配置用户做好ETF配置。
同时,我们也为AI配置了访问形态学系统的能力。
本Skills将华创形态学相关能力拆分为两条技术主线:
一是经 mark.hcquant.com/all_api 访问、以 token 鉴权的PHP接口,承载形态元数据、可交易标的清单、最新日度统计、多维度截面择时以及ETF截面与部分中间数据;
二是经 xingtai.pro 获取的JSON资源,以资产代码与路径模板定位历史行情与 betime 信号区间,支撑历史复盘、区间识别及(在固定 etftiming 数据源下)策略与基准的绩效对比。
两类来源在鉴权方式、数据粒度与更新逻辑上存在明确分野,使用时应先区分“截面查询”与“历史序列/区间”场景,再选择对应方法。
整体而言,该封装适合作为投研与自动化流程中的统一数据接入层:上层聚焦策略逻辑与合规风控,下层通过CLI/JSON信封完成可审计、可编排的调用。
后续若服务端URL、参数或字段发生变更,应以线上响应为准同步修订接口映射与本文结论边界。
1
形态学研究平台介绍
K线的本质,是多空双方资金在争夺主导权过程中留下的轨迹。通过对K线形态的研究,我们可以更深入地观察到市场真正的变化。无论是宏观环境的变动、赛道格局的调整,还是个股基本面的变化,最终都会在K线图上留下痕迹。
科学的K线分析方法,不能仅仅停留在形态本身,而应结合多方面的信息进行综合判断,包括该K线出现时的均线排列状态、成交量、换手率、股东户数、筹码分布以及基本面情况等,真正做到:“技术面”与“基本面”并用来指导分析。
需要指出的是,在全市场范围内对不同K线形态进行未来收益的统计,实际意义有限。同一形态在不同个股、不同历史阶段所蕴含的信号可能截然不同,必须结合具体标的和当时的环境加以分析。在此基础上,若能叠加合理的选股条件,则有望最大程度提升形态策略的胜率。
为便于系统观察A股市场中各类 K线形态的整体表现,我们对常见的K线形态进行了量化定义与特征归纳,构建了一套可在全部A股日线上自动标注K线形态的研究系统,并实现每日更新。网址为:http://xingtai.pro。此外,我们也同步上线了微信小程序“看线宝”,以不同的产品形式为大家提供形态学相关的服务。
在提供个股形态学研究结果的基础上,我们进一步将个股形态信号整合为指数信号,实现对宽基指数、行业指数及概念指数的择时分析。通过自下而上的视角,将个股层面的形态信号进行聚合与归纳,有助于从整体上把握不同板块的市场情绪与资金动向。
基于这一思路,我们同步上线了ETF看线系统,网址为:https://xingtai.pro/ETF_portal.php。该系统延续了形态学研究的方法框架,将个股层面的形态信号映射至相应指数层面,为指数择时与板块轮动研究提供数据支持,方便使用者从更全局的角度理解和应用K线形态分析。


2
形态学Skills简介
本Skill面向OpenClaw、Cursor Agent等可执行脚本的智能体,将华创金工形态学后端HTTP能力封装为:
-
固定目录下的命令行工具(`scripts/morphology_cli.py`);
-
通过JSON标准输出返回结果,便于程序解析与对话中引用。
典型使用场景包括:
-
查询形态文字说明、系统支持的资产、最新日统计等基础数据;
-
获取宽基/行业/风格/概念指数的最新截面择时信号或历史择时区间;
-
获取ETF截面信号、历史信号、门户数据、得分及中间数据;
-
在已安装`empyrical`模块的前提下,对ETF信号做简单绩效指标计算。
数据来源为官方接口域名,访问需有效APIToken,Token仅存放在本地配置文件中,不写入Skills正文。

2.1 安装方法

-
环境要求
操作系统:Windows/macOS/Linux均可
Python:建议3.8及以上
网络:能访问形态学服务所在公网地址(包括mark.hcquant.com与xingtai.pro)
-
获取Skill文件
可以在 https://github.com/hgsz2003/huachuang-morphology-skill 下载安装。
将本skills文件夹“huachuang-morphology”整目录复制到所需位置,例如:
课题/项目内:放在你的工程目录下,与代码一起管理;
个人Cursor技能目录(可选):复制到“~/.cursor/skills/huachuang-morphology”,便于所有项目识别该Skill。
OpenClaw:安装路径下的skills文件夹下
目录内应至少包含:
`SKILL.md`
`scripts/morphology_api.py`
`scripts/morphology_cli.py`
`scripts/config.json`
`scripts/requirements.txt`。
等文件。
-
安装Python依赖
在本Skill根目录(与`SKILL.md`同级)打开终端,执行:
pipinstall-rscripts/requirements.txt
若仅需基础拉数、不做ETF绩效指标,可暂不安装“empyrical”;使用“evaluate_etf_performance”前需确保已安装“empyrical”。
-
配置Token(必做)
将scripts/config.example.json复制为同目录下的scripts/config.json。
用文本编辑器打开`scripts/config.json`,将`token`改为你的真实API Token,例如:
```json
{
"token":"此处填写你的真实Token"
}
```
注意:不要将`config.json`提交到公共仓库。本仓库已提供`.gitignore`忽略`scripts/config.json`,请保持该习惯。
-
验证安装
在Skill根目录执行:
Python scripts/morphology_cli.py--list
若输出包含`"ok":true`与方法名列表,说明CLI可运行。
再执行(需Token有效、网络可达):
Python scripts/morphology_cli.pyget_basic_info
若返回`"ok":true`且`data`中有数据,则安装与配置成功。

2.2 基本用法:人类用户

在Skill根目录下:
Python scripts/morphology_cli.py<方法名>'[JSON参数字符串]'
-
第一个参数:API方法名(与`morphology_api.py`中一致,如`get_basic_info`)。
-
第二个参数(可选):JSON对象字符串,作为该方法的**关键字参数**;未写的参数使用代码中的默认值。
示例:
Python scripts/morphology_cli.pyget_basic_info
Python scripts/morphology_cli.pyget_historical_data"{\"win_rate\":0.6,\"trade_date\":\"2024-01-02\",\"position\":\"负面\"}"
JSON中含双引号时,外层可用单引号包住整段JSON,或对内部双引号转义为`\"`
返回约定简述:
-
成功:`ok:true`,`type`标明`dataframe`/`dict`/`text`/`json`,业务数据多在`data`中。
-
失败:`ok:false`,`error`为说明;部分提示可能同时在stderr。

2.3 基本用法:AI用户

在Cursor或OpenClaw中安装本Skills后可以直接提问:





2.4 Skills中的提供接口说明

本skill所封装的请求主要落在两类服务端:
其一为mark.hcquant.com/all_api下的PHP接口,均采用GET,并在Query中携带token完成鉴权;
其二为xingtai.pro下的静态JSON资源路径,通常不依赖token,由资产代码或固定文件名定位资源。
以下按客户端方法语义说明业务含义、关键参数映射及返回形态。
-
基础数据(鉴权:token)
get_basic_info请求basic.php,用于获取形态条目及其文字说明等元信息,便于与信号结果对照解读。
get_supported_assets请求get_sid.php,返回系统当前支持的证券/指数代码集合,可用于参数合法性校验与标的筛选。
get_latest_daily_stats请求all.php,提供全市场或全资产维度的最新日度统计,适用于最新截面的概览分析。
get_historical_data请求fullfun.php,基于自2020年起的历史样本,按胜率阈值、交易日与持仓方向(正面/负面等)进行筛选;其中win_rate映射为查询参数win(默认0.6),trade_date映射为tr(缺省为当日YYYY-MM-DD),position映射为pos(默认“负面”)。上述接口在客户端侧多解析为pandas.DataFrame,经CLI序列化为JSON记录数组。
-
截面择时(鉴权:token)
四类接口分别对应不同指数域的最新截面形态学输出:
get_broad_index_timing(indextiming.php,宽基)
get_industry_timing(indtiming.php,行业)
get_style_timing(styletiming.php,风格)
get_concept_timing(concepttiming.php,概念)
其共同特征为输出当前截面上的信号或解读型表格数据,具体字段以后端返回schema为准。
历史择时JSON(资源域:xingtai.pro,无token)
请求模式为GEThttps://xingtai.pro/<子路径>/<asset_code>.json。
get_historical_broad_timing
get_historical_industry_timing
get_historical_style_timing
get_historical_concept_timing
分别对应timing、indtiming、styletiming、concepttiming子路径;
默认资产代码依次为881001.WI、CI005001.WI、000015.SH、884030.WI,均可通过asset_code覆盖。典型响应体包含code、msg、data(行情或序列矩阵)及betime(由起止Unix毫秒时间戳构成的持仓/信号区间列表)。
客户端在解析成功后附加processed_time,将区间转换为begindate/enddate的时序表,便于区间统计与可视化;CLI输出时对嵌套DataFrame做JSON化。
-
ETF相关
get_etf_cross_section_signal请求etfnow.php(需token),参数company为基金公司缩写(默认fg),返回指定管理人旗下的ETF截面信号表。
get_etf_historical_signal基于xingtai资源路径,目录与company映射关系为:th→etftimingth,htbr→etftiminghtbr,fg/bs→etftiming,其余缺省为etftiming;asset_code多为跟踪指数代码。
get_etf_portal_data请求etftimingV2/<sid>.json(默认sid=000037.SH),sid语义为跟踪指数代码,对应门户聚合数据。
get_etf_scores请求etfv2/score_all.json,无额外路径参数,返回全市场ETF得分截面,客户端为DataFrame。
-
绩效评价(依赖empyrical)
evaluate_etf_performance固定自https://xingtai.pro/etftiming/<asset_code>.json拉取数据(默认asset_code=000812.CSI),在betime区间内赋信号,采用下一交易日开盘相对当日开盘的日收益构造策略与基准序列,并计算年化收益、最大回撤、夏普、Sortino、Calmar及有效样本长度rows。
须注意:该方法与get_etf_historical_signal的路径策略不一致——后者随company切换etftiming/etftimingth/etftiminghtbr等目录,而绩效评价写死etftiming,仅适用于与该数据源一致的标的。
-
其他
get_realtime_historical_data请求fullfun_realtime.php(需token),trade_date→tr,默认当日;提供自2010年起、偏“纯信号”取向的历史序列,与fullfun.php口径不同。
get_index_median_data请求index_median_data.php或当sid含港股指数特征子串HI时切换HK_median_data.php(均需token与sid)。
get_etf_median_data请求etf_median_data_all.php(需token、company、sid),默认company=bs、sid=000861.CSI,用于ETF中间层序列或加工指标。
-
归纳
鉴权接口集中于mark域,承担元数据、截面信号与部分中间数据服务;
xingtai域以资产代码定位历史JSON,支撑区间信号与序列回测;
ETF场景需区分截面(etfnow)、多管理人历史路径与固定etftiming绩效管道三类用途,避免路径混用导致样本不一致。

2.5 形态学Skills提问范式

-
基础数据
“系统里形态学支持哪些资产?列出来。”→ get_supported_assets
“形态学里各形态的文字说明是什么?简要汇总。”→ get_basic_info
“最新一个交易日,全体资产的形态学日度统计是什么?”→ get_latest_daily_stats
“按胜率 0.65、交易日 2024-06-03、负面仓位,拉一下历史筛选结果。”→ get_historical_data
“今天(或不写日期用默认)的实时历史纯信号长什么样?”→ get_realtime_historical_data
-
指数择时 — 截面(最新)
“宽基指数最新的形态学截面择时信号是什么?”→ get_broad_index_timing
“中信一级行业最新的截面择时一览有吗?”→ get_industry_timing
“风格指数最新择时结果汇总一下。”→ get_style_timing
“概念指数最新择时截面给一份。”→ get_concept_timing
-
指数择时 — 历史区间
“881001.WI 宽基上的历史择时区间(起止时间)拉一下并转成可读日期。”→ get_historical_broad_timing
“CI005001.WI 行业代码的历史择时区间。”→ get_historical_industry_timing
“000015.SH 风格指数的历史择时区间。”→ get_historical_style_timing
“884030.WI 概念指数的历史择时区间。”→ get_historical_concept_timing
-
ETF
“富国(fg) 旗下 ETF 截面形态学信号现在是怎样?”→ get_etf_cross_section_signal
“天弘(th)、标的 000300.SH 的 ETF 历史择时 JSON 以及区间处理结果。”→ get_etf_historical_signal
“000037.SH 的 ETF 门户页对应那份 JSON 数据能拉吗?”→ get_etf_portal_data
“当前全市场 ETF 得分最新一版是什么?”→ get_etf_scores
“博时(bs)、000861.CSI 的 ETF 中间数据。”→ get_etf_median_data
“用接口算一下 000812.CSI 这套 ETF 信号的简单绩效(年化、回撤、夏普等)。”(需已装 empyrical)→ evaluate_etf_performance
-
指数中间数据(含港股)
“沪深300 000300.SH 的指数中间数据。”→ get_index_median_data
注意:问历史区间类问题时,尽量带上 资产代码(如 881001.WI);问 ETF 时带上 基金公司代码(如 fg / th / bs)和需要的 sid,Agent 更容易一次调对接口。

2.6 安全与合规提示

-
Token等同于账号密钥,仅限本机或受信环境使用,勿泄露、勿截图外传。
-
本客户端对HTTPS校验策略与官方示例环境可能一致(如关闭证书校验),请在合规网络环境下使用。
-
调用频率请遵守服务方约定,避免过高并发影响服务。高并发的token会被系统监测后自动终止权限。

2.7 文档与故障排查

-
问题一:提示缺少`config.json`或者提示`token为空`|
解决方案:复制并填写`config.json`
-
问题二:`执行`pipinstallempyrical`后重试
解决方案:执行`pipinstallempyrical`后重试
-
问题三:`网络超时或SSL错误
解决方案:检查本机网络、代理与防火墙;必要时联系服务提供方
更细的Agent执行约定与脚本文件说明见[SKILL.md](SKILL.md)。
3
形态学Skills总结
本Skills将华创形态学相关能力拆分为两条技术主线:
一是经 mark.hcquant.com/all_api 访问、以 token 鉴权的PHP接口,承载形态元数据、可交易标的清单、最新日度统计、多维度截面择时以及ETF截面与部分中间数据;
二是经 xingtai.pro 获取的JSON资源,以资产代码与路径模板定位历史行情与 betime 信号区间,支撑历史复盘、区间识别及(在固定 etftiming 数据源下)策略与基准的绩效对比。
两类来源在鉴权方式、数据粒度与更新逻辑上存在明确分野,使用时应先区分“截面查询”与“历史序列/区间”场景,再选择对应方法。
在ETF链条上,需特别注意三类用途不可混用:管理人维度的截面(etfnow)、随 company 切换目录的历史JSON,以及写死 etftiming 路径的绩效评价模块;路径不一致将直接导致样本与结论不可比。
历史择时类接口中,客户对 betime 的 processed_time 加工降低了区间解读成本,但底层字段仍以服务端schema为准,正式投研引用建议以原始返回与业务文档交叉校验。
整体而言,该封装适合作为投研与自动化流程中的统一数据接入层:上层聚焦策略逻辑与合规风控,下层通过CLI/JSON信封完成可审计、可编排的调用。后续若服务端URL、参数或字段发生变更,应以线上响应为准同步修订接口映射与本文结论边界。
5
风险提示
本报告中所有统计结果和模型方法均基于历史数据,不代表未来趋势。本Skills中不包含恶意代码,可放心安装使用。
具体内容详见华创证券研究所3月26日发布的报告《量化看市场系列之十:给龙虾插上形态学的翅膀--形态学Skills(huachuang-morphology-skills)上线》。
往期推荐:
【量化看市场系列之四】使用“OpenClaw”搭建属于自己的私域AI助理
【量化看市场系列之五】如何叫你的AI更聪明、运行更有效率——Skills的设置与使用
【量化看市场系列之六】OpenClaw金融行业必备Skills推荐与实战应用
【量化看市场系列之七】使用OpenClaw快速搭建AI助理团队

欢迎扫码创见小程序阅读华创金工历史报告

华创金工团队
首席分析师、组长:王小川
执业编号:S0360517100001
电话:021-20572557
邮箱:wangxiaochuan@hcyjs.com

华创证券研究所定位为面向专业投资者的研究团队,本资料仅适用于经认可的专业投资者,仅供在新媒体背景下研究观点的及时交流。华创证券不因任何订阅本资料的行为而将订阅人视为公司的客户。普通投资者若使用本资料,有可能因缺乏解读服务而对报告中的关键假设、评级、目标价等内容产生理解上的歧义,进而造成投资损失。
本资料来自华创证券研究所已经发布的研究报告,若对报告的摘编产生歧义,应以报告发布当日的完整内容为准。须注意的是,本资料仅代表报告发布当日的判断,相关的分析意见及推测可能会根据华创证券研究所后续发布的研究报告在不发出通知的情形下做出更改。华创证券的其他业务部门或附属机构可能独立做出与本资料的意见或建议不一致的投资决策。本资料所指的证券或金融工具的价格、价值及收入可涨可跌,以往的表现不应作为日后表现的显示及担保。本资料仅供订阅人参考之用,不是或不应被视为出售、购买或认购证券或其它金融工具的要约或要约邀请。订阅人不应单纯依靠本资料的信息而取代自身的独立判断,应自主作出投资决策并自行承担投资风险。华创证券不对使用本资料涉及的信息所产生的任何直接或间接损失或与此有关的其他损失承担任何责任。
本资料所载的证券市场研究信息通常基于特定的假设条件,提供中长期的价值判断,或者依据“相对指数表现”给出投资建议,并不涉及对具体证券或金融工具在具体价位、具体时点、具体市场表现的判断,因此不能够等同于带有针对性的、指导具体投资的操作意见。普通个人投资者如需使用本资料,须寻求专业投资顾问的指导及相关的后续解读服务。若因不当使用相关信息而造成任何直接或间接损失,华创证券对此不承担任何形式的责任。
未经华创证券事先书面授权,任何机构或个人不得以任何方式修改、发送或者复制本资料的内容。华创证券未曾对任何网络、平面媒体做出过允许转载的日常授权。除经华创证券认可的媒体约稿等情况外,其他一切转载行为均属违法。如因侵权行为给华创证券造成任何直接或间接的损失,华创证券保留追究相关法律责任的权利。
订阅人若有任何疑问,或欲获得完整报告内容,敬请联系华创证券的机构销售部门,或者发送邮件至jiedu@hcyjs.com


评论