3、Python基础速通(上):变量与数据类型、列表与字典、条件判断与循环、函数定义
说实话,很多做量化的朋友,一开始都被Python吓住了。
觉得编程是程序员的事,自己搞金融的学不会。
我当年也是这么想的。直到有一天,我手动算了一下午的股票波动率,结果发现公式里有个括号写错了……
嗯,从那以后,我老老实实学了Python。
其实Python没那么玄乎。你想想看,它本质上就是个工具。就像计算器一样,只不过功能强大了点。
这一章,我带你把最核心的几个概念过一遍。不用背,理解就行。
一、变量与数据类型
变量是什么?说白了就是个“标签”。
你把数据放在内存里,然后贴个标签,方便以后找它。
# 这就是变量
stock_code = "AAPL"
price = 150.25
volume = 10000
is_bullish = True
Python里常见的数据类型,我列个表给你看:
| 类型 | 例子 | 说明 |
|---|---|---|
| int(整数) | 100, -5, 0 | 交易数量、持仓量 |
| float(浮点数) | 150.25, 3.1415 | 股价、收益率 |
| str(字符串) | "AAPL", "2024-01-15" | 股票代码、日期 |
| bool(布尔值) | True, False | 判断条件的结果 |
close_price 而不是 shoupanjia。不然代码写长了,自己都看不懂。
还有一个细节——Python是动态类型语言。什么意思?
就是你不需要提前声明“这个变量是整数还是字符串”。Python会自动判断。
x = 10 # 这时候x是整数
x = "hello" # 现在x变成了字符串
print(x) # 输出 hello
这在写策略的时候特别方便。但也要小心——我在项目中遇到过,因为变量类型被意外改变,导致计算报错的情况。
二、列表与字典
做量化,你肯定要处理一堆数据。比如同时跟踪10只股票的价格。
这时候就需要“容器”来装它们。
列表(List)——有序的集合
# 一个股票代码列表
stocks = ["AAPL", "GOOGL", "MSFT", "AMZN"]
# 获取第一个元素
print(stocks[0]) # AAPL
# 添加新股票
stocks.append("TSLA")
# 列表长度
print(len(stocks)) # 5
列表的索引从0开始。这个初学者容易搞混。
我记得刚开始写策略时,想取第3只股票,结果写了 stocks[3],取到的是第4只……
stocks[0] 是第一个,stocks[1] 是第二个。
字典(Dict)——键值对存储
列表用数字做索引,但有时候用名字更方便。字典就是干这个的。
# 存储股票的最新价格
prices = {
"AAPL": 150.25,
"GOOGL": 2750.80,
"MSFT": 330.15
}
# 获取苹果的价格
print(prices["AAPL"]) # 150.25
# 添加新数据
prices["TSLA"] = 700.50
# 检查是否存在
if "AAPL" in prices:
print("苹果的价格已记录")
字典在量化里用得特别多。比如存储每个股票的历史数据、持仓信息、策略参数等等。
三、条件判断与循环
程序不是从头到尾傻跑一遍的。它需要“做决定”和“重复做某件事”。
条件判断:if / elif / else
price = 150.0
target = 155.0
if price > target:
print("价格超过目标,考虑卖出")
elif price < target * 0.95:
print("价格低于目标5%,考虑买入")
else:
print("价格在合理区间,观望")
这里有个坑——Python用缩进来表示代码块,不是用花括号 {}。
我曾经因为缩进不对,找bug找了半小时……
循环:for 和 while
做量化,你经常要遍历一堆股票,或者回测很多天数据。循环就是干这个的。
# 遍历股票列表
stocks = ["AAPL", "GOOGL", "MSFT"]
for stock in stocks:
print(f"正在分析 {stock}...")
# 循环10次
for i in range(10):
print(f"第{i+1}次迭代")
range(10) 生成0到9的数字。配合循环,可以控制重复次数。
while循环用得少一些,但有时候也很有用:
# 模拟等待价格触发
price = 100.0
target = 105.0
while price < target:
price += 0.5 # 价格慢慢上涨
print(f"当前价格: {price}")
print("目标价格已触发!")
四、函数定义
写代码最怕重复。如果你发现自己在复制粘贴同一段逻辑,就该用函数了。
函数就是“把一段代码打包,起个名字,以后随时调用”。
def calculate_sma(prices, window):
"""计算简单移动平均线(SMA)"""
if len(prices) < window:
return None
sma = sum(prices[-window:]) / window
return sma
# 使用函数
daily_prices = [150, 152, 149, 155, 157]
sma_3 = calculate_sma(daily_prices, 3)
print(f"3日均线: {sma_3}")
函数的好处很明显:
- 复用性——写一次,到处用
- 可读性——
calculate_sma()比一堆数学公式好懂多了 - 易维护——要改逻辑,只改函数内部就行
我个人习惯,每个函数只做一件事。如果一个函数超过20行,我就会想是不是该拆分了。
get_price()、calculate_volatility()、check_signal()。这样一看就知道是干什么的。
知识体系总览
这一章的内容,其实就围绕一个核心:用Python处理数据,做决策,重复执行。
下面这张图,帮你理清它们之间的关系:
说白了,这一章就是给你搭个架子。变量存数据,条件判断做决策,循环重复执行,函数把逻辑打包。
这四个东西组合起来,就能写出像模像样的量化策略了。
下一章,我们会继续深入。把字符串操作、文件读写、异常处理这些实战必备的技能补上。
到时候,你就可以开始写真正的量化分析脚本了。