Skip to content

7.1 Python最小必会

课前导读

本章目标

学完能解决什么困惑:知道 Python 在量化研究里不是神秘魔法,而是“计算器 + 规则翻译器”;能读懂最短的变量、列表、字典、条件、循环和函数示例,并把第 6 章的交易想法写成清楚的伪代码。 难度:入门 用时:约 35 分钟

如果你刚学完第 6 章,已经知道量化不是“自动赚钱”,而是把想法写成可检查规则。

这一章不要求你成为程序员。

你只需要先建立一个感觉:Python 像一台不会嫌麻烦的计算器。

它还像一位严格的翻译员,把“我觉得这只股票还行”翻译成“如果 A 条件满足,就做 B 动作”。

我们会用 A 股里最熟悉的材料:收盘价、成交量、止损线、收益率。

你看到的代码都很短,不需要联网,也不要求现在安装任何软件。

学习目标不是背语法,而是能把投资规则写得更清楚。


知识正文

一、先把 Python 想成“记账本 + 计算器”

想象你每天收盘后打开一本投资记账本。

你会写下今天某只 A 股的收盘价、成交量、买入价、计划止损线。

如果用手算,你要反复按计算器。

如果用 Python,你只是把这些数字交给它,让它按同一套规则算。

在量化研究里,Python 主要做两件事。

第一件事,是保存事实。

第二件事,是按规则计算和判断。

mermaid
flowchart TD
    A["A股观察事实"] --> B["写进 Python"]
    B --> C["用规则计算"]
    C --> D["得到可复查结果"]
    D --> E["写进复盘记录"]

这里的“事实”可以很简单。

比如某日收盘价是 10.50 元。

比如你计划的止损线是 9.80 元。

比如成交量比前一天放大。

这些都不是预测,只是记录和检查。

二、变量:给数字贴标签

生活类比:你在记账本上写“买入价 = 10 元”。

“买入价”就是标签,“10 元”就是被标签指向的数字。

Python 里的变量也一样。

它不是数学考试里的未知数,而是给一个数据起名字。

python
buy_price = 10.00
close_price = 10.50
profit_rate = (close_price - buy_price) / buy_price
print(profit_rate)

逐行解释如下。

第 1 行:把买入价记为 10.00 元。

第 2 行:把今天收盘价记为 10.50 元。

第 3 行:用“收盘价减买入价,再除以买入价”计算简单收益率。

第 4 行:把计算结果显示出来,方便你检查。

这段代码表达的是一个非常朴素的问题:买入后到今天,价格变化了多少比例。

如果结果是 0.05,就表示 5%。

它不代表你应该买,也不代表未来会继续涨。

它只是把第 6 章的“收益率”从口头概念变成可计算数字。

关键理解

变量不是难词,它只是“给数据贴标签”。标签起得越清楚,规则越不容易写错。

三、列表:把一串收盘价排成队

生活类比:你连续五天记录同一只股票的收盘价。

纸上会出现一排数字。

Python 里的列表,就是把这一排数字放进同一个盒子。

python
close_prices = [10.00, 10.20, 10.10, 10.50, 10.80]
latest_close = close_prices[-1]
first_close = close_prices[0]
change = latest_close - first_close
print(change)

逐行解释如下。

第 1 行:把 5 个交易日的收盘价按时间顺序放进列表。

第 2 行:取出最后一天的收盘价,也就是最新收盘价。

第 3 行:取出第一天的收盘价。

第 4 行:计算最新价与第一天价格的差额。

第 5 行:显示差额。

这里最重要的是顺序。

第 6 章讲过时间序列,数据必须按时间排列。

如果你把日期顺序打乱,计算结果就可能失真。

所以列表像排队,不是随便堆在一起。

四、字典:给一只股票做资料卡

生活类比:你给观察池里的每只股票准备一张资料卡。

卡片上有代码、名称、收盘价、成交量、计划止损线。

Python 里的字典就像这张卡片。

它用“字段名 → 字段值”的方式保存信息。

python
stock = {
    "code": "600000",
    "name": "示例银行",
    "close": 10.50,
    "volume": 1200000,
    "stop_loss": 9.80,
}
print(stock["close"])

逐行解释如下。

第 1 行:开始建立一张名叫 stock 的股票资料卡。

第 2 行:记录股票代码,这里只是示例代码。

第 3 行:记录股票名称,这里也是示例名称。

第 4 行:记录收盘价。

第 5 行:记录成交量。

第 6 行:记录止损线。

第 7 行:结束这张资料卡。

第 8 行:取出这张卡片上的收盘价。

这和第 6 章的数据字段完全对应。

字段名越稳定,后面越容易复查。

如果今天叫 close,明天又叫 price,自己很快就会混乱。

五、条件:把“如果……就……”写清楚

生活类比:你出门前看天气。

如果下雨,就带伞。

如果没下雨,就不带伞。

交易规则也应该这样清楚。

如果收盘价跌破止损线,就提示风险。

如果没有跌破,就继续观察。

python
close_price = 9.70
stop_loss = 9.80

if close_price < stop_loss:
    print("触发止损提醒")
else:
    print("暂未触发止损")

逐行解释如下。

第 1 行:记录今天收盘价为 9.70 元。

第 2 行:记录计划止损线为 9.80 元。

第 3 行:空行只是让代码更易读。

第 4 行:判断收盘价是否低于止损线。

第 5 行:如果判断成立,就显示“触发止损提醒”。

第 6 行:否则进入另一种情况。

第 7 行:如果判断不成立,就显示“暂未触发止损”。

注意,这里只是提醒。

真实交易还会受到 T+1、涨跌停、流动性和成交价格影响。

本章只练习规则翻译,不把提醒直接等同于下单。

六、循环:让 Python 反复检查同一件事

生活类比:老师批改 50 份作业,不会每份都重新发明一套标准。

她会按同一份评分规则,一份一份看。

循环就是让 Python 按同一规则检查一串数据。

python
close_prices = [10.00, 9.90, 9.70, 9.60]
stop_loss = 9.80

for price in close_prices:
    if price < stop_loss:
        print("低于止损线", price)

逐行解释如下。

第 1 行:准备 4 个交易日的收盘价。

第 2 行:设定止损线为 9.80 元。

第 3 行:空行帮助阅读。

第 4 行:让变量 price 依次代表列表里的每一个收盘价。

第 5 行:每次都判断当前价格是否低于止损线。

第 6 行:如果低于,就把提醒和对应价格显示出来。

循环的价值在于“不嫌烦”。

人看几十天数据容易疲劳。

Python 可以一行一行检查,但前提是你的规则写得清楚。

七、函数:把常用算法做成按钮

生活类比:你家里有一个计算器按钮叫“收益率”。

每次只要输入买入价和卖出价,它就给出结果。

Python 的函数就像自制按钮。

python
def calc_return(buy_price, sell_price):
    return (sell_price - buy_price) / buy_price

result = calc_return(10.00, 10.50)
print(result)

逐行解释如下。

第 1 行:定义一个函数,名字叫 calc_return,意思是计算收益率。

第 1 行括号里:buy_price 是买入价,sell_price 是卖出价。

第 2 行:规定这个函数的计算公式。

第 3 行:空行表示函数定义结束,方便阅读。

第 4 行:把 10.00 和 10.50 交给函数计算。

第 5 行:显示计算结果。

函数让规则更稳定。

你不必每次重写公式,也更容易发现错误。

但函数不是越多越好。

新手阶段只要会把重复计算封装起来,就已经够用。

八、把 Python 放回量化研究的位置

到这里,你已经见过六个最小工具。

变量保存一个数字。

列表保存一串数字。

字典保存一张资料卡。

条件表达“如果……就……”。

循环重复检查。

函数把常用计算做成按钮。

它们合起来,就是第 6 章量化规则的翻译工具。

mermaid
flowchart LR
    A["中文投资想法"] --> B["变量保存数据"]
    B --> C["条件写成判断"]
    C --> D["循环检查样本"]
    D --> E["函数复用公式"]
    E --> F["形成可复查记录"]

请记住边界:这一章不是教你自动交易。

也不是让你今天就用代码筛出“必涨股票”。

专业量化开发最重视的,往往不是炫技,而是规则是否清楚、数据是否可靠、结果是否能复查。

投资者视角看,Python 帮你减少情绪化判断。

老师视角看,Python 是把抽象规则变成步骤的教具。

开发视角看,Python 是让规则可以重复运行的脚本语言。


交互实验室

练习一:把第 6 章规则翻译成伪代码

伪代码不是正式代码。

它像菜谱草稿,用接近中文的方式写出步骤。

请拿出你在第 6 章学过的一个想法。

例如:“只观察收盘价站上 20 日均线、成交量不太低、且没有触发止损的股票。”

先不要追求精确公式。

先把它写成清楚的“如果……就……”。

text
准备:一只 A 股的最近收盘价、20 日均线、成交量、计划止损线
如果 收盘价 高于 20 日均线
并且 成交量 不低于自己的最低要求
并且 收盘价 没有跌破止损线
那么 记录为“可以继续观察”
否则 记录为“暂不观察或等待下一次”

逐行解释如下。

第 1 行:先列出需要哪些数据,避免凭感觉判断。

第 2 行:把趋势条件写清楚。

第 3 行:把成交活跃度条件写清楚。

第 4 行:把风险边界写清楚。

第 5 行:满足条件时只进入观察,不直接等于买入。

第 6 行:不满足时也有明确动作,避免临时冲动。

练习二:把伪代码改成最短 Python 草稿

下面的代码仍然只是学习草稿。

它不需要真实行情,也不连接任何网站。

python
close_price = 10.80
ma20 = 10.50
volume_ok = True
stop_loss = 9.80

if close_price > ma20 and volume_ok and close_price > stop_loss:
    print("可以继续观察")
else:
    print("暂不观察")

逐行解释如下。

第 1 行:记录当前收盘价。

第 2 行:记录 20 日均线的数值。

第 3 行:用 True 表示成交量条件已经通过人工检查。

第 4 行:记录止损线。

第 5 行:空行帮助区分数据和规则。

第 6 行:同时检查趋势、成交量和风险边界。

第 7 行:三个条件都满足时,只输出“可以继续观察”。

第 8 行:否则进入未通过的情况。

第 9 行:输出“暂不观察”。

现在请你改三处数字。

把 close_price 改成 9.70,看看规则应该输出什么。

把 ma20 改成 11.00,看看趋势条件发生什么变化。

把 volume_ok 改成 False,感受一个条件不满足时整体判断如何变化。

练习三:写下你的规则卡

请在笔记里填空。

  • 我的观察对象:__________
  • 我需要的数据字段:收盘价、
  • 我的第一条条件:如果 __________
  • 我的风险边界:如果 __________ 就停止观察或降低仓位
  • 我的输出结果只允许两种:继续观察 / 暂不观察

这个练习的重点不是选出好股票。

重点是把模糊想法变成别人也能读懂的步骤。

当你能写清楚,Python 才能帮你重复检查。


核心复盘

知识清单

  • [ ] Python 在本阶段是“计算器 + 规则翻译器”,不是自动赚钱机器。
  • [ ] 变量像标签,用来保存买入价、收盘价、止损线等单个数据。
  • [ ] 列表像排队的收盘价,顺序不能随便打乱。
  • [ ] 字典像股票资料卡,用字段名保存代码、价格、成交量等信息。
  • [ ] 条件语句把“如果……就……”写成可检查规则。
  • [ ] 循环让同一规则反复检查多天数据,减少人工疲劳。
  • [ ] 函数把常用计算做成按钮,方便复用和复查。
  • [ ] 所有代码示例都只是学习草稿,不能直接视为买卖建议。

金句总结

“Python 不替你预测市场,它只帮你诚实地执行你写清楚的规则。”

本文档仅供学习交流用途,不构成任何投资建议。股市有风险,入市需谨慎。