
为什么越来越多人用Python做程序交易
以前做交易,得盯着屏幕,手动下单。现在不少人开始用Python写程序,让电脑自动买卖。原因很简单:电脑不会累、不会犹豫、不会因为害怕或贪婪乱操作。股票、期货市场里,价格变化快,手动交易容易错过机会。程序交易能把策略写成代码,让机器严格执行。
Python能流行起来,是因为它容易学,库多,社区大。不管你是想跑个简单的均线策略,还是搞复杂的统计套利,Python都能撑住。
下面就把用Python做程序交易的基本步骤拆开,一步一步说清楚。
第一步:想清楚你的交易逻辑
写代码之前,先得知道自己要做什么。交易逻辑不是拍脑袋,得能说清楚:什么时候买,什么时候卖,买多少,什么情况下止损。

股票和期货的逻辑有差别。股票通常做多,期货可以多空双向。股票没有杠杆,期货有杠杆,风险控制更严格。
拿双均线策略举例。股票上,你可以定:5日均线上穿20日均线就买入,下穿就卖出。期货上,同样逻辑可以做多也可以做空。
这个逻辑必须能用数字和条件表达出来。模糊的想法没法写成代码。
第二步:选一个靠谱的交易接口
程序要连接市场,得通过交易接口。国内股票一般用券商提供的API,比如中泰XTP、华鑫奇点、恒生PTrade。期货常用CTP接口,或者文华财经、易盛。
这些接口负责:获取行情、发送订单、查询持仓和资金。
自己写接口对接很麻烦,所以通常用现成的Python库。股票可以看看easytrader、pywinauto模拟操作,或者券商官方Python SDK。期货有vn.py、CTP的Python封装。
选接口时注意:稳定性、延迟、是否收费。有些接口只对机构开放,散户能用的是少数。
第三步:搭建数据获取和处理模块
程序需要实时行情和历史数据。历史数据用来回测策略,实时数据用来触发交易。
股票数据可以从tushare、akshare、baostock获取。期货数据用CTP的行情接口,或者从万得、同花顺导出。
数据拿到后要清洗。处理缺失值、异常值,把时间对齐。股票有除权除息,期货有主力合约换月,这些都得在数据里调整好。
数据模块的输出是干净的DataFrame,包含时间、开盘价、最高价、最低价、收盘价、成交量。
第四步:写策略代码
策略代码是核心。用Python写策略,就是把第一步的逻辑翻译成函数。
一个简单的双均线策略代码框架:
import pandas as pd
def dual_ma_strategy(data, short_window=5, long_window=20):
data['short_ma'] = data['close'].rolling(short_window).mean()
data['long_ma'] = data['close'].rolling(long_window).mean()
data['signal'] = 0
data.loc[data['short_ma'] > data['long_ma'], 'signal'] = 1
data.loc[data['short_ma'] <= data['long_ma'], 'signal'] = -1
return data
股票只能做多,signal为1时买入,-1时卖出。期货可以多空,signal为1做多,-1做空。
策略要处理仓位管理。比如每次用多少资金,最多持有多少手。
第五步:回测策略
回测是用历史数据检验策略。把策略代码跑在过去的行情上,看看赚不赚钱,最大回撤多少,胜率多少。
回测框架有backtrader、vn.py、zipline。自己写回测也不难,核心是模拟交易:按信号下单,计算盈亏,记录净值曲线。
回测要注意几个坑:未来函数、幸存者偏差、滑点、手续费。股票回测要算印花税和佣金,期货要算保证金和手续费。
回测结果好不代表实盘能赚,但回测差肯定不能上实盘。
第六步:模拟交易
回测通过后,先跑模拟交易。模拟交易用实时行情,但不真下单。目的是检验程序在真实环境下的稳定性,比如网络延迟、接口断线、数据延迟。
股票模拟可以用券商的模拟盘,期货用CTP的SimNow。跑一段时间,看看信号是否正常触发,订单是否正常发送。
模拟交易至少跑一个月,覆盖不同行情。
第七步:实盘交易和风控
模拟没问题,可以上实盘。实盘要从小资金开始。
实盘程序需要处理:订单状态、成交回报、持仓更新、资金查询。还要有风控模块。
风控包括:单笔最大亏损、每日最大亏损、总仓位限制、止损止盈。股票和期货的风控参数不同。期货杠杆高,止损要更敏感。
程序还要有异常处理。接口断了要重连,订单被拒要记录,行情卡住要报警。
第八步:持续监控和优化
实盘跑起来不是终点。每天要检查交易日志,看程序有没有异常。每周要分析绩效,看策略是否失效。
市场风格会变。均线策略在趋势市赚钱,在震荡市亏钱。程序交易不是一劳永逸,得根据市场调整参数或者换策略。
优化不是过度拟合。参数调整要用样本外数据验证,避免把历史噪音当成规律。
股票和期货程序交易的关键差异
股票程序交易通常T+1,当天买入不能卖出。期货T+0,可以日内多次交易。这影响策略频率。
股票没有杠杆,满仓也就1倍。期货有5到10倍杠杆,仓位管理更严格。
股票做空难,融券成本高。期货做空容易,多空对称。
股票数据用复权价,期货用主力连续合约。
手续费和保证金规则不同。股票按成交金额算佣金,期货按手数或成交金额算。
写程序时,股票策略和期货策略要分开处理这些细节。
普通人能学会吗
能。Python基础语法学两周就能上手。交易接口和回测框架有文档,照着例子改。关键是交易逻辑,这个得靠自己琢磨。
不要一上来就搞复杂策略。先跑通一个简单的双均线,把流程走一遍。股票期货都试试,感受差异。
程序交易不是印钞机。它只是工具,帮你执行纪律。真正赚钱的还是策略背后的逻辑。
从模拟盘开始,慢慢来。