我负责的任务:
全部由我个人开发,无团队组合
技术栈和架构:
py3.X+requests+concurrent.futures+collections.deque+random+colorama+json
分四层,BrainAPI类封装所有WQB API调用,EvolutionManager类实现进化算法,Worker Task是多线程工作单元,主程序负责启动和信号控制
实现亮点:
模板系统写入了30个Selection模板,覆盖5种不同流派,适应各种市场条件
进化策略50%探索+50%利用,变异概率经过精心设计的,不是全量替换而是局部改良,保证每次变异都有效
鲁棒性设计,三层保护:限流重试、Session超时重登、相关性检查重试。特别是相关性检查,不是立即查而是重试5次:
难点和坑
SUPERAlpha回测慢,最开始用REGULAR的等待时间(2分钟),大部分Alpha超时放弃。后来看WQB文档,SUPER要算Selection和Combo两步,确实慢3-5倍。改法是把等待循环从24次加到120次,最多等10分钟。
相关性数据延迟,Alpha达标后立即查相关性,经常拿到默认值1.0,误判为超标。后来发现WQB计算完回测后,相关性数据可能几十秒后才就绪。解决方案是加5次重试,只有拿到小于0.99的有效值才返回。
多线程限流,4个线程同时提交,经常429错误。最开始没处理,直接就失败了。后来发现WQB的429响应头里有Retry-After字段,读完睡一会儿再递归重试就好了。
Session超时,程序跑一晚上,第二天所有线程报401。原因是WQB的Session 3小时过期。改法是在所有API调用前检查Session年龄,超了就自动重新登录。
需求方专属客服,免费梳理匹配
添加客服微信,免费为您安排与该工程师直接沟通
长按二维码添加客服微信
如当前档期不合,也可免费为您推荐相似案例作者