4、Python基础速通(上):变量与数据类型、列表与字典、条件判断与循环
各位同学好,我是你们的量化讲师。今天咱们开始真正动手写代码了。
Python 这东西,说白了就是量化交易圈的“普通话”。不管你是用聚宽、米筐,还是自己搭回测框架,底层全是 Python。我见过太多人一上来就研究机器学习、高频策略,结果连个列表切片都写错,回测数据一跑就崩——嗯,这种坑我自己也踩过不少。
所以这一章,咱们把地基打牢。只讲量化里最常用的几个知识点:变量、数据类型、列表、字典、条件判断和循环。别的花里胡哨的语法,暂时用不上,先放一边。
4.1 变量与数据类型:存数据的基本功
变量是什么?你可以把它想象成一个贴了标签的盒子。你把数据放进去,然后通过标签来取用。
在 Python 里,变量不需要提前声明类型。直接赋值就行。我个人习惯用有意义的英文命名,比如 close_price 而不是 cp,不然代码过两周自己都看不懂。
# 定义一个价格变量
close_price = 4850.5
volume = 12000
symbol = "RB2401"
print(close_price)
print(type(close_price)) # <class 'float'>
常用的数据类型就这几种:
| 类型 | 例子 | 说明 |
|---|---|---|
| int | 12000 | 整数,比如成交量 |
| float | 4850.5 | 浮点数,比如价格 |
| str | "RB2401" | 字符串,比如合约代码 |
| bool | True / False | 布尔值,比如是否开仓 |
float() 或 int() 做类型转换,避免字符串拼接导致的 bug。
4.2 列表与字典:量化数据的“容器”
做量化,你不可能只处理一个价格。你手里是一串价格、一堆合约、一组信号。这时候就需要容器来装它们。
4.2.1 列表:有序的数据序列
列表用方括号 [] 表示,里面的元素用逗号隔开。你可以存价格序列、合约列表,甚至混合类型——但我建议你别混着用,容易出问题。
# 存储最近5根K线的收盘价
close_prices = [4820.0, 4835.5, 4850.0, 4845.0, 4860.5]
# 取最后一个价格(最新价)
latest_price = close_prices[-1]
print(latest_price) # 4860.5
# 取前3个价格
recent_3 = close_prices[:3]
print(recent_3) # [4820.0, 4835.5, 4850.0]
我在项目中经常用列表来存历史行情数据,然后通过切片来获取不同周期的数据。比如计算5日均线,就是取列表最后5个元素的平均值。
4.2.2 字典:键值对的“名片夹”
字典用花括号 {} 表示,每个元素由“键:值”组成。它特别适合存合约信息,因为你可以用合约代码当键,快速查到对应的数据。
# 存储多个合约的当前价格
contracts = {
"RB2401": 4850.0,
"RB2405": 4780.0,
"HC2401": 4920.0
}
# 查询螺纹钢2401的价格
print(contracts["RB2401"]) # 4850.0
# 添加新合约
contracts["RB2410"] = 4700.0
4.3 条件判断:让代码“做决策”
交易的本质就是做决策:价格突破就买入,跌破就卖出。在代码里,我们用 if 语句来实现。
current_price = 4860.0
ma5 = 4840.0
if current_price > ma5:
print("价格在均线上方,考虑做多")
elif current_price < ma5:
print("价格在均线下方,考虑做空")
else:
print("价格等于均线,观望")
这里要注意缩进。Python 用缩进来表示代码块,不像其他语言用花括号。我刚开始写的时候经常忘记缩进,一运行就报错——嗯,习惯就好。
量化里常用的条件判断场景:
- 价格突破某条均线
- 成交量异常放大
- 持仓时间超过设定值
- 止损/止盈触发
4.4 循环:批量处理数据
手动处理1000根K线?不可能。循环就是用来干这个的。
4.4.1 for 循环:遍历数据
for 循环最常用,用来遍历列表、字典等可迭代对象。
# 遍历价格列表,计算每日涨跌幅
prices = [4820.0, 4835.5, 4850.0, 4845.0, 4860.5]
for i in range(1, len(prices)):
change = (prices[i] - prices[i-1]) / prices[i-1] * 100
print(f"第{i}天涨跌幅: {change:.2f}%")
你想想看,如果不用循环,你得写多少行重复代码?
4.4.2 while 循环:条件控制
while 循环用得少一些,但在某些场景下很管用,比如等待某个条件满足才退出。
# 模拟等待价格触发
target_price = 4900.0
current_price = 4820.0
while current_price < target_price:
# 模拟价格每次上涨5个点
current_price += 5.0
print(f"当前价格: {current_price}")
print("目标价格已触发!")
while 循环时一定要确保条件最终会变为 False,否则就是死循环。我曾经在实盘模拟中忘记更新条件,结果程序一直跑,CPU 直接拉满。
4.5 本章知识体系
下面这张图帮你梳理了本章的核心内容,建议保存下来随时回顾。
这一章的内容就到这里。变量是基础,列表和字典是工具,条件判断和循环是逻辑。把这几个东西练熟了,你就能写出一个简单的交易信号判断程序了。
别急着往下翻,先打开你的 Python 环境,把上面的代码敲一遍。光看是学不会编程的——我当年也是敲了无数遍才形成肌肉记忆。