
为什么选择Python做量化交易
量化交易的本质是用程序代替人脑,自动捕捉市场机会。Python语法接近英语,库丰富,社区活跃,是散户和机构都爱用的工具。股票、期货、期权,所有品种都能用同一套框架处理。
你不需要成为程序员,只要会基础语法,就能写出赚钱的策略。

第一步 获取数据
数据是量化的燃料。股票用tushare或akshare,期货用CTP接口或vnpy。免费数据有延迟,实盘要买付费源。
import akshare as ak
df = ak.stock_zh_a_hist(symbol="600519", period="daily", start_date="20200101", end_date="20241231")
print(df.head())
数据要清洗:去掉停牌日,处理复权,对齐时间戳。期货还要拼接主力合约,避免换月跳空。
第二步 写策略逻辑
策略就是买卖规则。股票常用双均线:5日均线上穿20日均线买入,下穿卖出。期货可以做多空,加ATR止损。
df['ma5'] = df['close'].rolling(5).mean()
df['ma20'] = df['close'].rolling(20).mean()
df['signal'] = 0
df.loc[df['ma5'] > df['ma20'], 'signal'] = 1
df.loc[df['ma5'] < df['ma20'], 'signal'] = -1
逻辑越简单越稳健。别用未来函数,信号要滞后一天执行,避免偷价。
第三步 回测验证
回测是照妖镜。用backtrader或vectorbt跑历史数据,看年化收益、最大回撤、夏普比率。
import backtrader as bt
cerebro = bt.Cerebro()
cerebro.addstrategy(MyStrategy)
cerebro.run()
cerebro.plot()
股票回测要算佣金和印花税,期货要算保证金和手续费。滑点按1跳预估。曲线好看不代表实盘赚钱,参数过拟合会害死人。
第四步 实盘执行
回测通过后,接实盘接口。股票用easytrader或券商API,期货用vnpy的CTP网关。
from vnpy.app.cta_strategy import CtaTemplate
class MyStrategy(CtaTemplate):
def on_bar(self, bar):
if self.pos == 0 and bar.close > self.ma20:
self.buy(bar.close, 1)
实盘要处理网络断开、行情丢包、订单拒绝。风控模块必须独立,单笔亏损不超过总资金2%。
常见坑与对策
股票T+1,当天买不能卖,策略要调仓频率低。期货有夜盘,时间对齐要小心。回测用复权价,实盘用真实价,除权日会跳空。
Python版本用3.8以上,库版本锁死。多进程回测加速,用joblib并行。
从零到一的路径
先学pandas处理数据,再写简单均线策略,用backtrader回测三年数据,最后模拟盘跑一个月。股票和期货分开测试,别混在一起。
量化交易不是圣杯,是概率游戏。Python让你快速试错,找到正期望的系统。