第二课:Python基础速通(一)——环境搭建与核心数据结构

各位同学,欢迎来到第二课。

说实话,每次带新人入门,我最怕的就是环境配置这一步。明明代码逻辑没问题,结果卡在装包上,一卡就是半天。我自己当年也踩过这个坑——装Python的时候选了官网的原始版本,结果后面装科学计算库的时候,依赖冲突搞得我差点想砸电脑。

所以这节课,我直接带你用Anaconda。这是量化圈最主流的Python发行版,没有之一。你想想看,它把Python解释器、常用库、包管理器全打包好了,省去你一个个手动装的痛苦。

2.1 Anaconda安装:一步到位

Anaconda是什么?说白了就是一个「全家桶」。你装完它,就等于同时拥有了Python、Jupyter Notebook、以及200多个常用的数据科学库。

安装步骤:

  1. 去Anaconda官网下载对应系统的安装包(Windows/Mac/Linux都支持)
  2. 双击安装,一路默认选项即可
  3. 安装完成后,打开终端(或CMD),输入 conda --version 验证
💡 我的小习惯:安装时记得勾选「Add Anaconda to my PATH environment variable」。虽然安装程序会提醒你不推荐,但我个人觉得加上更方便,省得后面还要手动配环境变量。

验证成功后,你会看到类似这样的输出:

conda 23.7.4

看到版本号,说明环境已经就绪。

2.2 Jupyter Notebook:量化分析的交互式利器

Jupyter Notebook是我在量化交易中最常用的工具。它不像传统IDE那样需要写完整脚本才能运行,而是可以一句一句地执行代码,实时看到结果。

启动方式:

# 在终端输入
jupyter notebook

命令执行后,浏览器会自动打开一个页面。你点右上角的「New」→「Python 3」,就能新建一个Notebook文件。

核心快捷键(记牢这3个):

  • Shift + Enter:运行当前单元格,并跳到下一个
  • Ctrl + Enter:运行当前单元格,不跳转
  • Esc + M:把当前单元格切换为Markdown模式(写注释用)

我在做策略回测时,习惯把数据加载、清洗、回测、可视化分别放在不同的单元格里。这样哪一步出问题,一眼就能定位到。嗯,这个习惯帮我省了不少排查时间。

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

Python的变量不需要提前声明类型。你直接赋值,它自动识别。这一点对量化交易来说特别友好——你从交易所API拿到数据,直接塞进变量就行,不用操心类型转换。

常见数据类型:

类型 示例 说明
int(整数) volume = 10000 成交量、持仓量
float(浮点数) price = 3.1415 价格、收益率
str(字符串) symbol = "BTC/USDT" 交易对名称
bool(布尔值) is_market_open = True 条件判断
# 实战示例:模拟获取行情数据
symbol = "ETH/USDT"
bid_price = 2345.60
ask_price = 2345.80
volume_24h = 1250000

print(f"交易对:{symbol}")
print(f"买一价:{bid_price},卖一价:{ask_price}")
print(f"24小时成交量:{volume_24h}")
⚠️ 我曾经踩过的坑:浮点数精度问题。在计算累计收益率时,0.1 + 0.2 的结果并不是精确的0.3,而是0.30000000000000004。做资金计算时,建议用 Decimal 模块,或者直接保留两位小数。

2.4 列表:有序的数据容器

列表是量化交易中最常用的数据结构之一。你可以把它想象成一个「购物车」,什么都能往里装,而且顺序固定。

# 创建一个价格列表
prices = [3.25, 3.26, 3.24, 3.27, 3.28]

# 常用操作
prices.append(3.29)        # 尾部追加
prices.insert(0, 3.23)     # 头部插入
last_price = prices.pop()  # 弹出最后一个元素
length = len(prices)       # 获取长度

print(f"最新价格:{prices[-1]}")
print(f"最高价:{max(prices)}")
print(f"最低价:{min(prices)}")

列表切片(量化必备技能):

# 取最近3个价格
recent_3 = prices[-3:]

# 每隔一个取一个
every_other = prices[::2]

# 反转列表
reversed_prices = prices[::-1]
💡 实战经验:我在做移动平均线策略时,经常用 prices[-5:] 取最近5个收盘价来计算均值。切片操作比循环快得多,尤其是处理百万级数据时,性能差距很明显。

2.5 字典:键值对的映射关系

字典在量化交易中用来存储「有标签」的数据。比如一个交易对的完整信息,用字典存起来,比用列表清晰得多。

# 存储一个交易对的完整信息
symbol_info = {
    "name": "BTC/USDT",
    "bid": 50000.00,
    "ask": 50001.50,
    "volume_24h": 25000,
    "high_24h": 51000,
    "low_24h": 49000
}

# 访问数据
print(f"当前买一价:{symbol_info['bid']}")
print(f"24小时最高:{symbol_info['high_24h']}")

# 修改数据
symbol_info['bid'] = 50010.00

# 新增字段
symbol_info['change_pct'] = 2.5

# 遍历字典
for key, value in symbol_info.items():
    print(f"{key}: {value}")

字典推导式(一行代码搞定复杂操作):

# 假设有多个交易对,提取所有买一价
symbols = ["BTC/USDT", "ETH/USDT", "SOL/USDT"]
bids = [50000, 2345, 150]

bid_dict = {sym: bid for sym, bid in zip(symbols, bids)}
print(bid_dict)
# 输出:{'BTC/USDT': 50000, 'ETH/USDT': 2345, 'SOL/USDT': 150}

2.6 本章知识体系总览

下面这张图,帮你把今天学的内容串起来。你想想看,从环境搭建到数据操作,其实就这三步:

Python量化基础 · 知识体系 环境搭建 Anaconda 安装 Jupyter Notebook conda 包管理 虚拟环境隔离 基础语法 变量赋值 int / float / str / bool 类型自动推断 浮点数精度注意 核心数据结构 列表:有序序列 字典:键值映射 切片与推导式 增删改查操作 环境就绪 → 语法掌握 → 数据操作,量化交易的第一步就稳了

说白了,今天这节课就是帮你把「工具箱」准备好。Anaconda是工作台,Jupyter是操作面板,变量和数据结构就是你的零件。零件用熟了,后面组装策略就快了。

💡 课后小练习:打开Jupyter Notebook,创建一个字典存储你关注的3个交易对信息(名称、当前价格、24h涨跌幅),然后用列表把它们的价格存起来,试试切片取出前两个价格。

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