风险提示 本站内容为个人研究整理,仅供学习参考,不构成任何投资建议,据此操作风险自担。本策略的规则取自公开资料,并非个人独创交易体系。
5 日线买卖点
把均线系统的买卖信号落成可复算的判定,而不是看图说话。
内容指纹(SKILL.md 的 sha256 前 16 位):967a242161c5593e —— 下载解压后可用 shasum -a 256 SKILL.md 自行核对。
策略说明
你打算用均线决定进场与离场,希望信号是脚本算出来的、事后可以复盘,而不是每次看图形容。适合做交易计划里「触发条件」那一栏。
标的代码 + 起止日期 + 均线参数(默认 5 与 20)+ 均线模式。行情数据由脚本从公开源获取。
一张逐日信号表:每个交易日是否触发买入或卖出信号、触发的是哪一条规则、当时的均线值与乖离率。附信号在价格图上的标注。
- 拉取复权日线数据,计算各周期移动平均线。
- 逐日判定葛兰碧八大法则的四类买点与四类卖点(突破、回踩支撑、假跌破、负乖离反弹;及其四个镜像卖点)。
- 判定金叉与死叉:短期均线上穿长期均线为黄金交叉,反之为死亡交叉。
- 标注均线排列状态(多头排列 / 空头排列 / 纠缠)与 60 日均线方向。
- 输出信号表与标注图。同一天触发多条规则时逐条列出,不做合并。
Python >=3.9;依赖包:akshare、pandas、numpy;数据:akshare(主)、baostock(备);baostock 仅提供日线级数据,作为主源失效时的降级方案。
LICENSE2.2 KBSKILL.md6.4 KBreferences/sources.md2.2 KBrequirements.txt121 Bscripts/five_day_line_trading.py10.5 KB
风险与局限
均线是价格历史的平滑,天然滞后,在震荡市里会反复给出互相矛盾的信号。葛兰碧原书的确切书名与年份在各来源间不一致,本站不引用任何具体版本页码。均线周期参数(5/10/20/60/120/250)是经验划分,没有任何机构给出过权威定义;「多头排列」也只是技术分析界的通行描述,不是标准。最重要的:历史信号经过事后标注总是显得准确,这不构成对未来有效性的证明。
出处
共 3 条- 葛蘭碧八大法則https://www.moneydj.com/kmdj/wiki/wikiviewer.aspx?keyid=e9ec72de-5998-431b-bdaa-03f1447f95b0MoneyDJ 財經知識庫。逐条列出葛兰碧八大法则,并给出黄金交叉与死亡交叉的定义。
- 葛兰威尔法则https://baike.baidu.com/item/葛兰威尔法则/2064126百度百科。标注为 20 世纪 60 年代由 Joseph E. Granville 提出,四大买入法则与四大卖出法则。「四大买四大卖」的命名与本站口径一致。
- 用移動平均線 MA 與「葛蘭碧 8 大法則」判斷買賣時機https://www.wealth.com.tw/home/articles/32878財訊。转述葛兰碧 1960 年著作。注意:原书确切书名与年份在不同来源间不一致(1960 年版《A Strategy of Daily Stock Market Timing for Maximum Profit》/《股市制胜之道》/「New Strategy」),本站按「1960 年前后提出、具体版本书名各来源略有出入」表述。
SKILL.md 全文
下面这段就是下载包里 SKILL.md 的完整内容,未做删减。指纹 967a242161c5593e。
5 日线买卖点
回答一个问题:按均线系统这套规则,哪个交易日触发了什么信号。
关键在于「可复算」:脚本给出的是日期、价格、均线值、乖离和触发的具体条款,事后可以逐条复盘。看图说话做不到这一点——同一张图,今天看到的是买点,明天看到的是陷阱。
适用场景
- 你打算用均线决定进场与离场,希望触发条件是事先写好的、事后可核对的。
- 你在写交易计划,需要把「触发条件」那一栏填上具体的数值。
- 你想复核某个「金叉了」的说法到底对不对。
输入
| 输入 | 说明 |
|---|---|
| 标的代码 | 或一份日线 CSV |
| 均线参数 | 默认 MA5 / MA20 |
| 时间区间 | 至少覆盖 30 个交易日以上 |
输出
- 当前状态:收盘价、两条均线的值、排列状态
- 信号明细:每个触发日的收盘价、均线值、乖离率、以及触发的是哪一条规则
- 脚本上方完整打印本次使用的全部判定参数
第 3 项不是装饰。葛兰碧八法的原文是散文式描述,落成代码必然要引入参数,换一组参数信号就会变——这是这类规则无法回避的性质,必须让使用者看见。
核心逻辑
第一步:算均线
移动平均线的含义是「一定周期内市场平均持仓成本」。短期均线代表近期交易者的平均成本,长期均线代表更长时间内的价位平衡点。
第二步:判定葛兰碧八法
| # | 方向 | 条件 | 脚本中的操作化 |
|---|---|---|---|
| 买1 | 买 | 均线由下降转平或上升,价格由下向上穿破均线 | 收盘上穿均线 且 均线斜率 ≥ 0 |
| 买2 | 买 | 价格在均线上方,回调未跌破均线即反弹 | 近 N 日最低未破均线(含容差)且收盘上行,均线上行 |
| 买3 | 买 | 价格跌破均线后随即回升站上,且均线仍上行 | 当日上穿 且 近 N 日内出现过下穿,均线上行 |
| 买4 | 买 | 价格急跌深离均线下方后反弹趋近均线 | 负乖离超过阈值 且 收盘开始回升 |
| 卖1–卖4 | 卖 | 上述四条的镜像 | 同上,方向取反 |
第三步:判定金叉死叉
- 黄金交叉:短期均线由下往上突破长期均线,一般视为买进信号
- 死亡交叉:短期均线由上往下跌破长期均线,一般视为卖出信号
第四步:标注排列状态
多头排列 / 空头排列 / 纠缠。注意:「多头排列」是技术分析界的通行描述,不是标准定义,具体到 5>10>20>60 这类参数组合,属经验总结,参数并非唯一标准。
第五步:逐条输出,不做合并
同一天触发多条规则时,全部列出,不合并成「买入」两个字。原因:不同规则的可靠性和适用环境不同,合并会把这个信息丢掉。
依赖与安装
pip install akshare pandas
离线模式(--csv)只需 Python 标准库。
用法
# 在线
python3 scripts/five_day_line_trading.py --code 000001 --start 20240101 --end 20251231
# 换参数
python3 scripts/five_day_line_trading.py --code 000001 --fast 10 --slow 60
# 离线
python3 scripts/five_day_line_trading.py --csv 000001.csv --last 40
出处
- MoneyDJ 財經知識庫《葛蘭碧八大法則》 —— 逐条列出八大法则,并给出黄金交叉与死亡交叉的定义。本脚本的八条判据以此为准。
- 百度百科《葛兰威尔法则》 —— 标注为 20 世纪 60 年代由 Joseph E. Granville 提出,四大买入法则与四大卖出法则,共计八个交易信号。
- 財訊《用移動平均線 MA 與「葛蘭碧 8 大法則」判斷買賣時機》 —— 转述葛兰碧 1960 年著作。
关于原书的诚实说明:中文圈对葛兰碧原书的确切书名有多种译法(1960 年版《A Strategy of Daily Stock Market Timing for Maximum Profit》/《股市制胜之道》/后期版本《Granville's New Strategy…》),年份与版次在各来源间不一致,未找到可直接核验的出版商书目页。因此本站不引用任何具体版本页码,只表述为「1960 年前后由 Joseph E. Granville 提出,具体版本书名各来源略有出入」。
完整清单与逐条说明见包内 references/sources.md。
风险与局限
- 均线天然滞后。 它是价格历史的平滑,转向确认必然晚于价格转向。
- 震荡市里会反复打脸。 均线策略在趋势市表现好、在震荡市表现差,这是它的固有性质,不是参数没调好。
- 均线周期是经验划分。 5/10/20/60/120/250 这套体系找不到任何机构级的权威定义。
- 多空排列不是标准定义。 它是通行描述。
- 本脚本的判定参数是我选的。 乖离深度阈值、回踩容差、回看窗口,这三组数字是操作化时人为引入的,换一组信号就变。脚本会把它们打印出来,请你先看这组参数,再决定要不要用结论。
- 最主要的一条:历史信号经过事后标注总是显得准确。这不构成对未来有效性的证明。
- 不构成投资建议。 触发买入信号不代表应该买入。
常见问题
为什么同一天既有买入信号又有卖出信号? 因为八条规则各有各的触发条件,它们在同一根 K 线上可以同时成立。这正是脚本不合并信号的原因——它把矛盾原样交给你,而不是替你消解。
均线参数该怎么选? 没有客观最优解。选一组,然后固定不变地用一段时间,这样你才能判断这套规则在你手上是否有效。频繁换参数等于不断重新开始。
能不能把八条规则合成一个评分? 可以,但那会引入权重,而权重同样是人为的。合成之后,你将无法知道某个信号具体来自哪一条——这在复盘时是致命的。