基于webman编写的量化交易机器人

简介

基于webman编写的量化交易机器人,核心是多进程+Epoll+非阻塞IO,常驻内存、超高性能。

一个交易账号(账号进程)对应一个自定义进程,账号进程与交易所建立两个websocket长链接,接收信息实时计算、发送交易指令;

账号进程内繁重的任务通过队列投递到消费者进程异步处理,如数据库写入、调用RestApi、微信通知等;

性能

每个交易进程每秒实时处理1500+的行情数据;

技术栈

  • PHP多进程
  • Linux事件EPoll非阻塞IO
  • 毫秒定时器
  • 异步Socket
  • 异步Redis
  • 异步HTTP
  • 异步消息队列
  • Redis字符串、列表、哈希、集合、有序集合
  • WebSocket长链接
  • 自定义通信协议
  • Layui前端UI组件

功能

  • [x] 自动策略委托
  • [x] 自动下单
  • [x] 自动平仓
  • [x] 盈利单向阀
  • [x] 入仓通知
  • [x] 浏览器爬虫插件
  • [x] 定时更新技术指标
  • [x] 定时解锁产品ID
  • [x] 自动平仓后自动解锁
  • [x] 优化币种的行情订阅
  • [x] 新增admin_id数据限制
  • [x] 单向阀api_key改成对应账号
  • [x] 策略委托入仓自动解锁
  • [x] 下单、撤单自动解锁
  • [x] 批量设置杠杆倍数
  • [x] 微信通知增加平仓原因:相反方向平仓、正常平仓
  • [x] 优化单持仓时挂单逻辑
  • [x] 增加订单标签、方便统计
  • [x] 优化旧数据清理规则,仅清理pos为0的仓位
  • [x] 新增批量撤销策略委托单
  • [x] 新增批量解锁产品ID
  • [x] SaaS后台管理界面直接生成交易进程的配置文件
  • [x] 编辑api账户时,实时验证关键参数
  • [x] 优化后台低分辨率显示
  • [x] 增加谷歌验证器,对高危操作校验6位授权码
  • [x] 修复接口流控引起的批量撤销策略委托单失败
  • [x] 增加接口限速锁,优化接口限速提示
  • [x] 新增手动平仓功能
  • [x] 新增策略委托单信息
  • [x] 平仓失败重试机制
  • [x] ACK确认,跟踪校验下单指令,确保每一个指令都执行,否则预警人为干预
  • [x] 新增手动批量平仓
  • [ ] 单向阀新增保证金列
  • [ ] 单向阀新增收益金额列
  • [ ] 记录对冲次数
  • [ ] 关键节点微信通知
  • [ ] 量化交易数据可视化
  • [ ] 余额不足提醒
  • [ ] 持仓信息新增总体未实现盈亏
  • [ ] 仪表盘新增总体未实现盈亏(按账号)

延后的功能

  • [ ] 增加时间窗口内单向阀下跌检测

运行环境

基础环境:Linux、Nginx 1.20.2、PHP8.1.7、MySQL 5.7.41、Redis 7.0.0

PHP扩展:ext-xlswriter、ext-redis

composer软件包

作用包名版本
日志monolog/monolog2.9.1
命令行webman/console1.2.33
事件webman/event1.0.4
定时任务workerman/crontab1.0.6
数据库ORMwebman/think-orm1.1.0
验证器topthink/think-validate2.0.2
PSR规范psr/container1.1.1
环境变量vlucas/phpdotenv5.5.0
Redis消息队列workerman/redis-queue1.1.0
Redisilluminate/redis8.83.27
数据库事件illuminate/events8.83.27
数据库ORMilluminate/database8.83.27
数据库ORMilluminate/pagination8.83.27
数据库ORMsymfony/var-dumper5.4.22
管理后台UIwebman/admin0.6.7
进程通信workerman/channel1.2.0
Curlcurl/curl2.5.0
WebSocketwebman/push1.0.12
symfony/lock5.4.22

研发人员

架构:david

算法:yang

后端逻辑:david

后台管理界面:daivd

浏览器插件爬虫:rui、david

鸣谢

webman

High performance HTTP Service Framework for PHP based on Workerman.

Manual

https://www.workerman.net/doc/webman

LICENSE

MIT

最后修改:2023 年 04 月 24 日 07 : 38 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论