7.1 Python最小必会
课前导读
本章目标
学完能解决什么困惑:知道 Python 在量化研究里不是神秘魔法,而是“计算器 + 规则翻译器”;能读懂最短的变量、列表、字典、条件、循环和函数示例,并把第 6 章的交易想法写成清楚的伪代码。 难度:入门 用时:约 35 分钟
如果你刚学完第 6 章,已经知道量化不是“自动赚钱”,而是把想法写成可检查规则。
这一章不要求你成为程序员。
你只需要先建立一个感觉:Python 像一台不会嫌麻烦的计算器。
它还像一位严格的翻译员,把“我觉得这只股票还行”翻译成“如果 A 条件满足,就做 B 动作”。
我们会用 A 股里最熟悉的材料:收盘价、成交量、止损线、收益率。
你看到的代码都很短,不需要联网,也不要求现在安装任何软件。
学习目标不是背语法,而是能把投资规则写得更清楚。
知识正文
一、先把 Python 想成“记账本 + 计算器”
想象你每天收盘后打开一本投资记账本。
你会写下今天某只 A 股的收盘价、成交量、买入价、计划止损线。
如果用手算,你要反复按计算器。
如果用 Python,你只是把这些数字交给它,让它按同一套规则算。
在量化研究里,Python 主要做两件事。
第一件事,是保存事实。
第二件事,是按规则计算和判断。
flowchart TD
A["A股观察事实"] --> B["写进 Python"]
B --> C["用规则计算"]
C --> D["得到可复查结果"]
D --> E["写进复盘记录"]这里的“事实”可以很简单。
比如某日收盘价是 10.50 元。
比如你计划的止损线是 9.80 元。
比如成交量比前一天放大。
这些都不是预测,只是记录和检查。
二、变量:给数字贴标签
生活类比:你在记账本上写“买入价 = 10 元”。
“买入价”就是标签,“10 元”就是被标签指向的数字。
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 里的列表,就是把这一排数字放进同一个盒子。
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 里的字典就像这张卡片。
它用“字段名 → 字段值”的方式保存信息。
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,自己很快就会混乱。
五、条件:把“如果……就……”写清楚
生活类比:你出门前看天气。
如果下雨,就带伞。
如果没下雨,就不带伞。
交易规则也应该这样清楚。
如果收盘价跌破止损线,就提示风险。
如果没有跌破,就继续观察。
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 按同一规则检查一串数据。
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 的函数就像自制按钮。
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 章量化规则的翻译工具。
flowchart LR
A["中文投资想法"] --> B["变量保存数据"]
B --> C["条件写成判断"]
C --> D["循环检查样本"]
D --> E["函数复用公式"]
E --> F["形成可复查记录"]请记住边界:这一章不是教你自动交易。
也不是让你今天就用代码筛出“必涨股票”。
专业量化开发最重视的,往往不是炫技,而是规则是否清楚、数据是否可靠、结果是否能复查。
投资者视角看,Python 帮你减少情绪化判断。
老师视角看,Python 是把抽象规则变成步骤的教具。
开发视角看,Python 是让规则可以重复运行的脚本语言。
交互实验室
练习一:把第 6 章规则翻译成伪代码
伪代码不是正式代码。
它像菜谱草稿,用接近中文的方式写出步骤。
请拿出你在第 6 章学过的一个想法。
例如:“只观察收盘价站上 20 日均线、成交量不太低、且没有触发止损的股票。”
先不要追求精确公式。
先把它写成清楚的“如果……就……”。
准备:一只 A 股的最近收盘价、20 日均线、成交量、计划止损线
如果 收盘价 高于 20 日均线
并且 成交量 不低于自己的最低要求
并且 收盘价 没有跌破止损线
那么 记录为“可以继续观察”
否则 记录为“暂不观察或等待下一次”逐行解释如下。
第 1 行:先列出需要哪些数据,避免凭感觉判断。
第 2 行:把趋势条件写清楚。
第 3 行:把成交活跃度条件写清楚。
第 4 行:把风险边界写清楚。
第 5 行:满足条件时只进入观察,不直接等于买入。
第 6 行:不满足时也有明确动作,避免临时冲动。
练习二:把伪代码改成最短 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 不替你预测市场,它只帮你诚实地执行你写清楚的规则。”