深圳融克迪特科技有限公司 Logo,金融科技,量化交易,软件开发

深圳融克迪特科技有限公司

RONG CREDIT TECHNOLOGY CO., LTD.

基础入门

【pandas 系列 第6讲】计算5日和10日均线

基于收盘价列使用 rolling mean 生成 5 日和 10 日均线,理解滚动窗口的基本逻辑以及前几行空值的正常来源。

2026-04-23 智铨研究 阅读时长 5 分钟

目录

pandas · 入门短课

  1. 第 1 讲【pandas 系列 第1讲】金融数据入门第1讲:5行命令读取CSV行情并验证结构完整性
  2. 第 2 讲【pandas 系列 第2讲】选列筛行:保留日期收盘价和成交量
  3. 第 3 讲【pandas 系列 第3讲】新增收益率列
  4. 第 4 讲【pandas 系列 第4讲】处理缺失值
  5. 第 5 讲【pandas 系列 第5讲】排序并重置索引
  6. 第 6 讲【pandas 系列 第6讲】计算5日和10日均线
  7. 第 7 讲【pandas 系列 第7讲】按月份统计平均收益
  8. 第 8 讲【pandas 系列 第8讲】导出清洗后的行情表

一、为什么均线这一讲,是 pandas 金融数据练习里第一次真正进入“滚动计算”

前面几讲虽然已经做了不少事情,但大多还停留在读表、缩表、加一列收益率、处理空值、整理顺序这样的层面。这些步骤都很重要,不过它们主要在解决“输入层”问题。到了第 6 讲,事情开始发生一个很明显的变化:你第一次不只是对单行或单列做静态处理,而是在时间顺序上做滚动计算。对金融数据来说,这是非常关键的一步。

所谓滚动计算,核心不是多写一个函数,而是开始承认当前这一行的结果,往往依赖前面若干行共同构成的窗口。均线正是最适合入门的滚动指标,因为它依赖关系直观,结果也容易和原始价格列并排理解。你算出来的不是一个孤立的新列,而是一种对近期价格水平进行平滑后的表达。

因此,第 6 讲真正要建立的,不只是“会写 rolling().mean()”,而是第一次让你感受到 pandas 在时序数据上的力量:它不仅能清理表,还能沿着时间顺序持续生成有分析意义的滚动结果。

二、为什么 5 日和 10 日均线比只算一条均线更适合入门

如果只是为了展示滚动平均能工作,单独算一条 5 日均线其实已经够了。但作为入门教学,5 日和 10 日一起算会更有价值。因为只要两条均线同时出现,你就能立刻观察到窗口长度变化带来的差异,而不必等到更后面再慢慢体会。5 日通常更敏感,10 日通常更平滑,这种差异非常容易通过同一张表直接看出来。

对入门者来说,这种并排对照的帮助很大。它会让你意识到,滚动窗口不是一个抽象参数,而是真的会改变结果的形状、空值长度和变化节奏。你不再只是知道“能算均线”,而开始知道“不同窗口会让均线呈现不同性格”。这种认识,对后面继续做参数比较或者更复杂指标都很有帮助。

所以第 6 讲用两条均线,目的不是把内容铺得更多,而是让窗口概念一下子变得可见、可比、可解释。这种可见性在入门阶段非常重要。

三、为什么滚动计算的前提,是顺序已经被整理到可信状态

均线和前几讲最大的不同,在于它对行顺序异常敏感。选列、删除空值时,顺序有时不一定马上让结果出错;但滚动均线不一样。它默认当前行前面的样本就是真正的历史顺序,只要这个前提不成立,哪怕数值能算出来,语义也会出问题。所以,第 6 讲和第 5 讲之间的衔接非常紧密。上一讲把日期排序和索引整理好,不是可有可无的准备,而是当前滚动计算能否可信的前提。

这也是为什么在金融数据处理中,很多看似“整理类”的步骤,其实都在为分析步骤服务。滚动计算尤其能放大这个事实。你会非常清楚地感觉到:如果表的顺序没有先被确认,后面的任何窗口结果都会让人心里没底。相反,只要顺序已经被处理得很清楚,滚动均线这类指标就会顺理成章地落到表上。

因此,第 6 讲除了教均线,也在强化一种很重要的工作标准:所有时序窗口类结果,都必须建立在已经确认过的时间顺序之上。

四、为什么前几行空值不是计算失败,而是窗口定义被忠实执行的结果

很多新手第一次算均线时,最容易慌的地方不是结果本身,而是前几行为什么是空的。尤其是同时算 5 日和 10 日均线时,这个现象会更明显。其实这恰恰是滚动窗口最值得先理解的地方。5 日均线意味着当前行要和前面 4 行一起凑成一个完整窗口;10 日均线则需要前面 9 行。样本不足时,程序不给结果,不是偷懒,而是在严格遵守定义。

这件事特别值得早点想明白,因为它会直接影响你以后面对所有滚动指标时的反应。只要窗口没凑满,出现空值往往就是合理现象,而不是错误提示。对于均线来说,这个行为甚至是一种很好的教学反馈,它明确告诉你:结果并不是“每一行都该有”,而是“只有满足窗口条件的行才该有”。

因此,第 6 讲里看到空值时,最应该做的不是立刻怀疑代码,而是先回到窗口长度本身。只要能把这个逻辑说清楚,这一讲最重要的一层理解其实就已经建立了。

五、为什么均线一定要和价格列放在一起看,不能只盯着新列

均线一旦算出来,很多人会被新列本身吸引,忍不住只看 ma_5ma_10,仿佛这两列是新的主角。其实更稳的做法,是始终把它们和原始 close 列放在一起看。因为均线的全部意义,都是围绕价格的平滑表达展开的。脱离价格列单独看,你会很容易失去直觉,只剩下一串看起来“平稳一些”的数字。

当价格和两条均线并排时,很多东西会立刻变得自然。你会看到 5 日均线通常更贴着价格动,10 日均线通常更平滑、更慢;你会看到窗口越长,前面的空值越多;你还会逐渐意识到,均线其实是在给价格的短期波动加一个更容易看趋势的滤镜。这些理解都不是从死记函数得来的,而是从并排观察里长出来的。

入门阶段特别需要这种“把函数结果重新拉回样本层面”的习惯。因为你以后面对更多技术指标时,也会发现真正帮助你理解的,不是指标名称本身,而是它和原始数据放在一起以后表现出的关系。

六、为什么两条均线的差异,是理解“参数影响结果”的第一块垫脚石

第 6 讲虽然还没有正式进入参数比较,但实际上已经在悄悄为那件事打地基。因为当你同时得到 5 日和 10 日两条均线时,已经开始接触一个非常重要的事实:参数不同,结果的节奏、平滑程度和起始可用位置都会不同。这种差异就是最基础的参数影响。

对入门者来说,这种体验特别宝贵。很多人一提参数,就会联想到复杂调优,好像那是很后面的事。其实最早的参数意识,完全可以从均线窗口这种最简单的设置开始。你会开始明白,参数不是一个“随便填的数字”,它会真实地决定结果列长什么样、什么时候开始有值、对价格变化反应有多快。

因此,第 6 讲除了教滚动均值,也是在为后面更复杂的比较意识做最小铺垫。只要你已经感受到 5 日和 10 日之间那种直观差异,后面看到更复杂参数变化时,就不会那么陌生。

七、为什么样本不够长时,接受“暂时算不出完整结果”也是一种重要能力

很多入门者在数据练习里,都会有一种隐形期待:只要代码写对了,最好每一列都立刻出现完整结果。均线这一讲会比较早地打破这种期待。因为一旦样本不够长,比如只有几行或者还不到 10 行,那么 10 日均线就很可能全空。这不是失败,而是在提醒你:数据条件本来就决定了结果能否成立。

能够接受这一点,其实是很重要的数据分析能力。因为真实工作里,很多限制并不是代码问题,而是样本本身的边界。只要你已经理解为什么 10 日均线暂时还算不出来,就不会被输出外观牵着走,也不会为了“让结果看起来完整”去做一些没有根据的填充。

换句话说,第 6 讲也在训练一种非常有价值的态度:当结果暂时不完整时,先回到定义和样本条件,而不是先怀疑一切都错了。这个习惯会让后面的分析过程稳很多。

八、这一讲为后续月度统计和成果导出打下了怎样的中间层

均线列一旦加入,当前这张工作表就已经不再只是一个清洗过的基础表,而更像一张真正进入分析阶段的中间结果表。你现在有了日期、有了价格、有了收益率、也有了滚动均线。后面的月份统计和成果导出,实际上都会建立在这层更丰富的结构之上。也就是说,第 6 讲不是一个孤立的技术指标讲解,而是在让整张工作表真正具备“值得保存下来”的中间成果属性。

这对整套 pandas 短课很重要。因为它让后面两讲不只是零散补充,而是顺着一张越来越完整的分析表继续推进。你会明显感觉到,这套练习不再只是“每讲一个小技巧”,而是围绕同一张表逐步搭建分析层。只要这一层工作面建立起来,后面很多动作都会更顺。

这也是为什么第 6 讲在整个系列里位置非常关键。它真正让这张表从“清理后的输入”转成了“开始具备分析内容的中间结果”。

九、为什么这一讲做完后,最好已经形成“滚动指标入表”的最低判断框架

均线列真正加入工作表以后,比较理想的状态不是“我会写 rolling 了”,而是你已经形成一套很基础的判断框架。比如你会先看日期顺序是否可信,再看前几行空值是不是符合窗口定义,然后把均线放回价格列旁边一起读,最后再比较不同窗口是否带来明显不同的平滑程度。只要这套顺序开始稳定,后面你再加入更多滚动指标时,思路就不容易乱。

这个框架的意义在于,它把滚动计算从单纯的语法问题,推进成了一个有解释顺序的分析动作。对初学者来说,这种顺序感非常重要,因为很多错误并不是函数不会写,而是算出来以后不知道该怎么判断对不对。

十、这一讲也在帮你建立“指标生成后先解释,再往后传”的习惯

第 6 讲还有一个很容易被忽略的价值,就是它在训练你养成一种非常稳的工作习惯:指标生成以后,先解释它,再决定如何把它往后传。均线列不是一生成就立刻拿去做所有后续事情,而是先确认它和价格关系是否合理、空值是否正常、不同窗口差异是否符合直觉,然后再把它留在工作表里供后续月份统计和导出使用。这个顺序会让整套分析链路稳很多。

一旦这种习惯建立起来,后面无论你再新增收益波动指标、区间统计,还是别的滚动结果,都不会只停在“代码能跑”这一层,而会自然多出一层解释和验收。

十一、这一讲结束时,最好已经具备什么样的完成状态

如果这一讲已经真正做扎实,你通常会进入一种比较明确的完成状态:你知道为什么前几行会空,知道为什么滚动指标必须依赖可信顺序,也知道把均线单独看和放回价格旁边看,含义会完全不同。更进一步,你还能说清 5 日和 10 日均线到底在平滑程度上有什么差异,以及这种差异为什么会影响后续阅读。只要这些解释都已经顺起来,这一讲才算真的完成。

这种完成状态很重要,因为它说明你已经从“会生成两列”走到了“会解释两列”。对后面的月度统计和成果导出而言,后者显然更有价值。

十二、总结

这一讲的重点,不只是让 close 列长出 ma_5ma_10 两列,而是第一次真正带你进入 pandas 的滚动计算世界。你需要理解,滚动均线依赖可信顺序,前几行空值来自窗口定义,5 日和 10 日的差异体现了最基础的参数影响,而均线的意义必须放回价格列旁边才能真正看懂。只要这些层都已经建立起来,这一讲就真正完成了。

十三、系列衔接

本讲是《pandas金融数据入门短课》的第 6 讲,当前主题是《计算 5 日和 10 日均线》。上一讲已经把表的时间顺序和索引整理到了可信状态,这一讲则在此基础上加入了第一组滚动指标。下一讲会继续把已有的收益率列按月份汇总,第一次从逐日视角切换到时间段聚合视角。

十四、风险揭示与免责声明

风险揭示与免责声明

本页面内容仅用于量化研究与技术交流,旨在展示研究方法与流程,不构成对任何金融产品、证券或衍生品的要约、招揽、推荐或保证。

本文所涉历史数据、回测结果与示例参数不代表未来表现,也不应作为投资决策依据。

市场存在波动、流动性与执行偏差等不确定性,任何策略均可能出现收益波动或阶段性失效。

读者应结合自身风险承受能力进行独立判断,并在必要时咨询持牌专业机构意见。