免责声明:本文为个人经验分享,仅供技术交流,不构成任何投资建议。文中提及的工具请自行评估是否适合。
一、引子
二十年前我开始做程序化交易的时候,国内能用的工具屈指可数。如今选择多了,但选对工具反而成了一门学问。
今天不聊工具对比,想聊聊我从手动交易转型到量化交易的真实经历,希望能给正在考虑转型的朋友一些参考。
二、手动交易的十年
我是2003年入行做期货的,最开始是纯手动交易。那时候没有什么量化概念,就是看图形、凭感觉、拼手速。
手动交易的日常
- 早上8:50守在电脑前等开盘
- 盯着行情软件,紧张地看每一根K线
- 凭"盘感"决定买卖时机
- 经常因为手抖或犹豫错过最佳时机
- 收盘后复盘到深夜
手动交易的问题
做了几年之后,我发现手动交易有几个很难克服的问题:
- 情绪影响:赚钱时飘飘然,亏钱时不甘心,导致频繁违背交易计划
- 执行偏差:明明定好了止损位,到了却总想再等等
- 精力有限:不可能24小时盯盘,错过夜盘机会
- 无法复现:同样的行情,两次做的决策可能完全不同
当时我就在想:能不能让程序来执行交易,把人的情绪因素排除掉?
三、转型的契机
大概2010年左右,我开始接触程序化交易的概念。但那时候国内的工具确实不成熟,要么太贵(MC几万块),要么太难用(自己写C++接CTP)。
真正开始系统学习是2015年之后,Python量化交易开始兴起,学习门槛大大降低。
我踩过的坑
转型过程并不顺利,踩了不少坑:
坑1:以为学会Python就能赚钱
一开始想得太简单,以为会写代码就行。结果发现,代码只是工具,核心还是交易策略本身。
坑2:沉迷于回测优化
花了大量时间调参数,把回测曲线调得完美无缺,结果一上实盘就崩。这就是典型的过拟合。
坑3:工具折腾太多
VnPy、聚宽、掘金、TB……几乎市面上的工具都试了一遍,每个都浅尝辄止,结果哪个都没精通。
坑4:忽视数据质量
一开始用的数据源质量差,回测结果和实盘差距巨大,浪费了很多时间排查策略问题。
四、找到适合自己的工具
折腾了几年之后,我总结出一个道理:工具不在多,顺手就好。
选择量化工具,我的标准是:
- 数据省心:不想花精力建数据库、维护数据源
- 上手简单:API要直观,学习曲线不能太陡
- 回测实盘一致:回测代码能直接用于实盘,减少出错概率
- 社区有人气:遇到问题能找到答案
几款主流工具的使用体验:
1. 文华财经WH8
优点:入门简单,麦语言对非程序员友好
缺点:功能扩展性有限,想做复杂策略会碰壁
适合:只做简单策略、不想学编程的传统交易员
2. VnPy
优点:完全开源,自由度最高
缺点:配置复杂,数据要自己解决
适合:有较强技术能力、喜欢折腾的开发者
3. TqSdk(天勤量化)
优点:数据开箱即用,API简洁,回测实盘代码一致
缺点:只支持国内期货,股票只能做数据和回测
适合:专注期货量化、有Python基础的交易员
我目前主要使用TqSdk,原因很简单:数据省心,上手快,能把更多精力放在策略研究上。
当然,这只是我的个人选择,每个人情况不同。
五、转型后的变化
从手动交易转到量化交易,最大的变化是什么?
1. 心态更稳了
有了程序执行,不再盯盘焦虑。止损到了就止损,不会再"手抖"。
2. 时间更自由了
策略写好部署上去,程序自动运行。夜盘也不用熬夜盯着了。
3. 可以同时跟踪多个品种
人工盯盘最多看2-3个品种,程序可以同时跟踪几十个。
4. 策略迭代更快了
有了回测工具,验证一个想法只要几分钟,而不是几个月实盘测试。
六、给想转型的朋友一些建议
如果你也在考虑从手动交易转型量化,我的建议是:
1. 先学Python基础
不需要精通,能看懂代码、会简单调试就够了。推荐从pandas和numpy开始学。
2. 从简单策略开始
不要一上来就搞复杂的机器学习。先把双均线、布林带这种经典策略跑通,理解整个流程。
3. 选一个工具深入用
不要像我一样什么都想试。选一个顺手的,花时间精通它。
4. 重视数据和回测
数据质量、回测精度是基础,这个基础不牢,后面都是空中楼阁。
5. 保持对市场的理解
量化只是工具,不能完全依赖程序。对市场的理解和判断能力仍然重要。
七、一个简单的入门示例
最后分享一个简单的双均线策略框架,帮助刚入门的朋友理解量化交易的基本结构:
fromtqsdkimportTqApi,TqAuth,TqSim api=TqApi(TqSim(),auth=TqAuth("账户","密码"))# 订阅合约klines=api.get_kline_serial("SHFE.rb2505",60,200)# 1分钟K线position=api.get_position("SHFE.rb2505")whileTrue:api.wait_update()ifapi.is_changing(klines):# 计算均线ma5=klines.close.iloc[-6:-1].mean()# 5周期均线ma20=klines.close.iloc[-21:-1].mean()# 20周期均线# 交易逻辑ifma5>ma20andposition.pos_long==0:# 金叉开多print("金叉信号,开多")api.insert_order("SHFE.rb2505","BUY","OPEN",1)elifma5<ma20andposition.pos_long>0:# 死叉平多print("死叉信号,平多")api.insert_order("SHFE.rb2505","SELL","CLOSE",1)这个代码可以直接用于回测或模拟交易,帮助理解量化交易的基本流程。
八、结语
文章写到这里就结束了。从手动到量化的转型,我花了好几年时间,走了不少弯路。
希望这篇真实的经历分享,能给正在转型路上的朋友一些启发。
期货量化是一场马拉松,希望每一位同路人都能找到顺手的工具,走得更远。
声明:本文基于个人经验整理,仅供技术交流参考,不构成任何投资建议。量化交易有风险,入市需谨慎。