
Python自动化交易到底在自动化什么
很多人以为自动化交易就是写个代码躺赚,真相是程序替代的是你的手和眼,不是脑子。手工交易时你盯着K线图找买卖点、敲键盘下单、算保证金够不够,这些动作全部交给Python脚本完成。核心就三件事:拿到实时行情数据、根据预设规则判断该不该开仓、把买卖指令发给期货公司或券商。程序不会累不会冲动,但规则是你定的,亏了别赖代码。
第一步 搞定数据接口
行情数据是自动化交易的粮食。做股票用Tushare、AkShare这类免费库就能拿到日线和分钟线,延迟在秒级,适合中低频策略。做期货必须上Ctp接口,上期技术的综合交易平台是行业标准,通过Python的ctpbee或vnpy封装库连接期货公司柜台,能拿到Tick级数据,每500毫秒推一次盘口。别幻想免费接口能给你毫秒级行情,高频交易光托管机房和专线一年烧几十万,散户用分钟线足够了。
数据落地记得存本地。用pandas把Tick数据转成DataFrame写进SQLite或Parquet文件,回测时直接读本地库,比每次调接口快十倍。新手常犯的错是边跑策略边拉历史数据,网络一抖策略就卡死。

第二步 把交易逻辑翻译成代码
策略逻辑就是if-else的堆叠。举个双均线例子:5日均线上穿20日均线做多,下穿平仓。用pandas两行代码算均线,循环判断交叉点。关键是处理信号确认——收盘价站上均线才算数,盘中假突破不认。股票T+1没法当日平仓,信号要延到第二天开盘执行。期货T+0灵活得多,但主力合约换月时得手动迁移仓位,程序里加个合约到期前五天平仓的逻辑。
仓位计算别拍脑袋。总资金十万,单笔亏损上限设2%,即两千块。止损幅度设1%,那开仓手数=2000/(合约乘数×1%×价格)。螺纹钢一手10吨,价格4000,每手波动1%是400块,2000/400=5手。程序里把这个公式写成函数,每次开仓自动算手数,防止情绪上头重仓。
第三步 回测不是过家家
回测必须用样本外数据验证。拿2018到2020年数据调参数,2021到2023年数据跑验证,收益曲线断崖式下跌说明过拟合了。手续费和滑点往狠里设——股票双边万三加千一印花税,期货按交易所标准的1.5倍算,滑点设两个最小变动价位。回测年化20%实盘能剩8%就算成功。
重点看最大回撤和收益回撤比。回撤超过20%的策略实盘拿不住,人性受不了连续三个月亏钱。用backtrader或vnpy的回测引擎跑,别自己手搓循环,光处理除权除息和合约换月就能耗掉一周。
第四步 实盘对接的坑
股票自动化交易走券商API,华泰、国金都提供Python接口,开通权限要临柜签协议,资金门槛五十万起。期货走CTP接口,期货公司开户后给仿真实盘账号,先用SimNow模拟环境跑两周。CTP的登录流程分三步:创建Api对象、注册前置机地址、订阅私有流。代码里加心跳检测,网络断线自动重连,重连后先查持仓再恢复交易,防止重复下单。
订单状态要轮询。发单后别傻等成交回报,每两秒查一次委托状态,部分成交的剩余手数撤单重发。期货有平今仓手续费翻倍规则,程序里区分开仓和平仓标志,上期所的品种平今仓指令单独发。
第五步 风控是保命符
程序里硬编码三条铁律:单日亏损超总资金5%自动锁仓、单品种持仓不超总资金30%、连续三次开仓失败暂停策略十分钟。用装饰器模式把风控函数套在交易函数外层,任何下单指令先过风控检查。记日志别偷懒,每笔委托的报价、成交价、手续费、滑点全写进CSV文件,月底复盘找漏洞。
服务器别用家用电脑。云服务器选上海或深圳机房,离交易所物理距离近,延迟能压到10毫秒以内。程序设成守护进程,用supervisor监控,崩溃自动重启。每天收盘后自动跑一遍对账脚本,比对本地持仓和期货公司结算单,差一手都得查清楚。
散户最容易踩的三个雷
第一个雷是把回测收益当预期收益,实盘前三个月能保持回测一半的收益就算烧高香。第二个雷是策略逻辑太复杂,加了二十个指标过滤信号,回测漂亮实盘一塌糊涂,因子越多过拟合越狠。第三个雷是忽略流动性,小盘股挂单半天不成交,程序追价追到涨停板。
自动化交易本质是纪律工具,帮你克服手痒和恐慌,不是印钞机。先拿两万块跑半年实盘,把接口稳定性、滑点冲击、极端行情下的表现摸清楚,再考虑加资金。代码写烂了亏钱比手动交易更快,毕竟程序不会犹豫。