第2章:Python基础回顾——环境配置与语法速通

说实话,很多新手学量化交易,第一关就卡在环境配置上。

我见过太多人,代码写好了,结果跑不起来。原因很简单——Python环境没配好。今天咱们就把这事一次性搞定。

2.1 Anaconda:量化交易的瑞士军刀

Anaconda是什么?说白了,它是一个Python发行版,自带了一堆数据科学和量化常用的库。你不需要一个个去pip install,省心不少。

为什么我推荐Anaconda?

  • 自带conda包管理器——比pip更稳,依赖冲突少
  • 预装200+常用库——numpy、pandas、matplotlib全都有
  • 环境隔离——不同项目用不同Python版本,互不干扰

安装要点:

下载时选对系统版本(Windows/Mac/Linux)。安装路径不要有中文,不要有空格。我个人习惯装到C盘根目录下的某个文件夹,比如 C:\anaconda3

避坑指南:

我曾经在项目里因为路径带了中文,导致pandas读取csv文件时报编码错误。查了半天才发现是路径问题。嗯,从那以后我所有工具都装英文路径。

2.2 Jupyter Notebook:交互式编程利器

Jupyter Notebook是量化交易员的标配。为什么?因为它支持边写代码边看结果,还能加注释、画图表。你想想看,做策略回测时,每一步都能看到中间结果,调试起来多方便。

启动方式:

# 在终端或Anaconda Prompt中输入
jupyter notebook

启动后浏览器会自动打开一个页面。你可以在里面新建Python文件,写代码、跑结果。

常用快捷键:

快捷键 功能
Shift + Enter 运行当前单元格并跳到下一个
Ctrl + Enter 运行当前单元格但不跳转
Esc + A 在上方插入新单元格
Esc + B 在下方插入新单元格
Esc + M 切换为Markdown模式(写注释用)

注意:Jupyter Notebook的单元格是有状态的。你运行过的变量会一直保留在内存里。如果改了前面的代码,记得重新运行一下相关单元格,否则结果可能不对。

2.3 Python基础语法速通

这部分我尽量精简。量化交易里常用的语法其实不多,咱们挑重点讲。

2.3.1 变量与数据类型

Python是动态类型语言。你不需要声明变量类型,直接赋值就行。

# 数值类型
price = 100.5        # 浮点数
volume = 5000        # 整数
is_bullish = True    # 布尔值

# 字符串
symbol = "AAPL"

# 列表——存多个股票代码
stocks = ["AAPL", "GOOGL", "MSFT"]

# 字典——存股票信息
stock_info = {
    "AAPL": {"price": 150, "volume": 10000},
    "GOOGL": {"price": 2800, "volume": 5000}
}

我个人习惯:变量名用下划线命名法,比如 close_pricemoving_average。这样代码可读性高,别人一看就懂。

2.3.2 循环——处理时间序列数据

量化交易里,循环用得最多的地方就是遍历历史数据。

# for循环——遍历股票列表
prices = [100, 102, 101, 105, 103]
for i, price in enumerate(prices):
    print(f"第{i+1}天的收盘价: {price}")

# while循环——适合条件不确定的场景
day = 0
while day < len(prices):
    print(f"处理第{day+1}天数据")
    day += 1

经验之谈:处理大量数据时,尽量用向量化操作(比如pandas的apply),别用纯Python循环。我曾经用for循环处理10万条数据,跑了3分钟。换成向量化后,3秒搞定。差距就是这么大。

2.3.3 函数——封装交易逻辑

函数是代码复用的基础。写量化策略时,每个信号计算、风险控制都可以封装成函数。

def calculate_sma(prices, window=5):
    """计算简单移动平均线"""
    if len(prices) < window:
        return None
    return sum(prices[-window:]) / window

def check_buy_signal(price, sma):
    """判断买入信号"""
    if sma is None:
        return False
    return price > sma

# 使用示例
current_price = 105
sma_5 = calculate_sma([100, 102, 101, 105, 103])
if check_buy_signal(current_price, sma_5):
    print("触发买入信号!")

注意:函数名要能说明功能。别用 func1func2 这种名字。你过两周再看,绝对想不起来是干嘛的。

2.3.4 类——构建交易系统

类适合封装复杂的状态和行为。比如一个简单的交易策略类:

class MovingAverageStrategy:
    def __init__(self, short_window=5, long_window=20):
        self.short_window = short_window
        self.long_window = long_window
        self.position = 0  # 持仓状态
    
    def generate_signal(self, prices):
        """生成交易信号"""
        if len(prices) < self.long_window:
            return "hold"
        
        short_sma = sum(prices[-self.short_window:]) / self.short_window
        long_sma = sum(prices[-self.long_window:]) / self.long_window
        
        if short_sma > long_sma and self.position == 0:
            self.position = 1
            return "buy"
        elif short_sma < long_sma and self.position == 1:
            self.position = 0
            return "sell"
        else:
            return "hold"

# 使用
strategy = MovingAverageStrategy(short_window=5, long_window=20)
signal = strategy.generate_signal([100, 102, 101, 105, 103, 106, 108])
print(f"信号: {signal}")

核心要点:

  • __init__ 是构造函数,初始化对象时自动调用
  • self 代表实例本身,所有方法都要带这个参数
  • 类的好处是能把数据和操作数据的方法打包在一起

2.4 本章知识体系

下面这张图帮你理清本章的知识结构:

Python基础回顾 环境配置 Anaconda安装 conda环境管理 包安装与依赖管理 Jupyter Notebook 交互式编程 单元格操作 Markdown注释 基础语法 变量与数据类型 循环(for/while) 函数定义 类与对象 目标:搭建量化交易开发环境,掌握核心语法

这张图把本章内容分成三大块:环境配置、Jupyter使用、基础语法。三者缺一不可。环境是基础,Jupyter是工具,语法是核心。搞定了这些,后面写策略代码就顺手多了。

最后说一句:别急着把所有语法都背下来。量化交易里常用的就那么几个——列表、字典、循环、函数、类。先会用,再慢慢深入。我刚开始也是边写边查,慢慢就熟了。


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