3、Python基础速通(一):变量与数据类型、列表与字典、条件判断与循环、函数定义与调用

各位同学,欢迎来到Python基础速通的第一部分。说实话,很多做量化交易的朋友,一开始都被Python的语法细节劝退了。但我想说,你不需要成为Python专家,只需要掌握20%的核心语法,就能搞定80%的量化任务。

今天这一章,我带你快速过一遍最常用的基础语法。我会结合量化交易中的实际场景来讲,而不是枯燥地罗列概念。准备好了吗?我们开始。

本章核心目标:掌握Python编程的5大基础模块,能够独立编写简单的股票数据处理脚本。

3.1 变量与数据类型:量化数据的基石

变量,说白了就是给数据贴个标签。在Python里,你不需要声明类型,直接赋值就行。我个人习惯用有意义的英文单词做变量名,比如 stock_price 而不是 sp

# 常见的量化数据类型
stock_name = "贵州茅台"        # 字符串
current_price = 1850.50       # 浮点数
shares_held = 100             # 整数
is_buy_signal = True          # 布尔值

print(f"股票:{stock_name},当前价格:{current_price},持有数量:{shares_held}")

我在项目中遇到过一个问题:用浮点数计算交易金额时,出现了精度丢失。比如 0.1 + 0.2 不等于 0.3,而是 0.30000000000000004。这在量化交易中可能会造成计算误差。

避坑指南:涉及金额计算时,建议使用 Decimal 类型,或者将价格乘以100转换为整数处理。

3.2 列表与字典:组织你的股票池

列表和字典,是量化交易中最常用的两种数据结构。列表就像有序的抽屉,字典就像带标签的储物柜。

3.2.1 列表:有序的股票集合

# 创建一个股票池列表
stock_pool = ["贵州茅台", "五粮液", "泸州老窖", "山西汾酒"]

# 添加新股票
stock_pool.append("洋河股份")

# 访问第一个元素
print(stock_pool[0])  # 输出:贵州茅台

# 列表切片:获取前3只股票
top_3 = stock_pool[:3]
print(top_3)  # 输出:['贵州茅台', '五粮液', '泸州老窖']

我曾经用列表来管理一个动态的股票池,每天根据条件筛选出新的股票加入,同时剔除不符合条件的。列表的 appendremove 方法非常实用。

3.2.2 字典:键值对存储股票信息

字典更适合存储股票的详细信息。你想想看,每只股票都有名称、代码、价格、市盈率等多个属性,用字典来存再合适不过了。

# 用字典存储单只股票信息
stock_info = {
    "name": "贵州茅台",
    "code": "600519",
    "price": 1850.50,
    "pe_ratio": 35.6,
    "market_cap": 23200  # 市值,单位:亿
}

# 访问股票代码
print(stock_info["code"])  # 输出:600519

# 更新价格
stock_info["price"] = 1860.00

# 添加新字段
stock_info["dividend_yield"] = 1.2

小技巧:stock_info.get("pe_ratio", 0) 来安全地获取字典值,如果键不存在,返回默认值0,避免程序报错。

3.3 条件判断与循环:让程序做决策

量化交易的核心,就是根据条件做出买卖决策。条件判断和循环,就是实现这个逻辑的基础工具。

3.3.1 if-elif-else:交易信号判断

# 模拟一个简单的均线策略
ma5 = 18.50  # 5日均线
ma20 = 17.80  # 20日均线
current_price = 18.80

if current_price > ma5 and ma5 > ma20:
    print("金叉信号:买入")
    action = "buy"
elif current_price < ma5 and ma5 < ma20:
    print("死叉信号:卖出")
    action = "sell"
else:
    print("无明确信号:持有")
    action = "hold"

嗯,这里要注意:条件判断的顺序很重要。Python会从上到下依次检查,一旦找到满足的条件,就会执行对应的代码块,然后跳出整个判断结构。

3.3.2 for循环:批量处理股票数据

在量化交易中,你很少会只处理一只股票。for循环就是用来批量处理数据的利器。

# 批量计算多只股票的涨跌幅
stocks = [
    {"name": "贵州茅台", "open": 1850, "close": 1865},
    {"name": "五粮液", "open": 168, "close": 172},
    {"name": "泸州老窖", "open": 220, "close": 218}
]

for stock in stocks:
    change_pct = (stock["close"] - stock["open"]) / stock["open"] * 100
    print(f"{stock['name']}:涨跌幅 {change_pct:.2f}%")

我曾经用for循环遍历一个包含3000多只股票的列表,计算每只股票的技术指标,然后筛选出符合条件的股票。虽然数据量大,但Python的处理速度还是很快的。

3.3.3 while循环:等待交易时机

# 模拟等待价格触发买入条件
target_price = 1800
current_price = 1820

while current_price > target_price:
    print(f"当前价格 {current_price},等待跌到 {target_price}...")
    # 模拟价格下跌
    current_price -= 5
    
print(f"价格已到 {current_price},执行买入!")

避坑指南:使用while循环时,一定要确保循环条件最终会变为False,否则会陷入死循环。我刚开始写代码时就犯过这个错误,程序跑了一整夜都没停。

3.4 函数定义与调用:封装你的交易逻辑

函数,说白了就是把一段重复使用的代码打包起来,给它起个名字,需要的时候直接调用。这样做的好处是:代码更整洁、更容易复用、也更容易调试。

3.4.1 定义和调用函数

def calculate_moving_average(prices, period):
    """
    计算移动平均线
    :param prices: 价格列表
    :param period: 周期
    :return: 移动平均值
    """
    if len(prices) < period:
        return None
    
    return sum(prices[-period:]) / period

# 调用函数
daily_prices = [18.2, 18.5, 18.8, 19.0, 18.6, 18.4, 18.9]
ma5 = calculate_moving_average(daily_prices, 5)
print(f"5日均线值:{ma5}")

3.4.2 带默认参数的函数

def generate_signal(price, ma_short=5, ma_long=20):
    """
    生成交易信号
    :param price: 当前价格
    :param ma_short: 短期均线周期,默认5
    :param ma_long: 长期均线周期,默认20
    :return: 交易信号
    """
    # 这里简化处理,实际需要计算均线
    if price > ma_short * 10:  # 示意逻辑
        return "buy"
    else:
        return "hold"

# 使用默认参数
signal1 = generate_signal(18.8)

# 自定义参数
signal2 = generate_signal(18.8, ma_short=10, ma_long=30)

小技巧:写函数时,一定要写docstring(文档字符串)。这样不仅方便自己以后查看,也方便团队协作。我见过太多没有注释的函数,三个月后连自己都看不懂了。

3.5 本章知识体系总览

为了让你更直观地理解本章的知识结构,我画了一张图。这张图展示了Python基础语法在量化交易中的应用脉络。

Python基础语法在量化交易中的应用 Python基础语法 变量与数据类型 字符串、整数、浮点数、布尔值 列表与字典 股票池管理、股票信息存储 条件判断与循环 交易信号判断、批量数据处理 函数定义与调用 封装交易逻辑、代码复用 量化交易应用场景 股票筛选 | 技术指标计算 | 交易信号生成 | 回测系统 图:Python基础语法与量化交易应用关系图

这张图清晰地展示了:变量与数据类型是基础,列表和字典是组织数据的工具,条件判断和循环是逻辑控制的核心,而函数则是将这些能力封装起来的关键。最终,所有这些都服务于量化交易的实际应用。

本章小结:我们学习了Python的5大基础模块。变量和数据类型是存储数据的基础;列表和字典是组织数据的利器;条件判断让程序能做出决策;循环让我们能批量处理数据;函数则帮助我们封装和复用代码。这些知识,足够你开始编写简单的量化交易脚本了。

好了,这一章的内容就到这里。记住,编程是一门实践的艺术,光看不练是学不会的。打开你的Python环境,把上面的代码都敲一遍,然后试着修改参数,看看结果有什么变化。下一章,我们会继续深入Python的核心语法,敬请期待。


公众号:蓝海资料掘金营,微信deep3321