一、简介
大家好,我是Snowball。今天给大家分享的内容是基于Java编程,实现股票交易相关功能开发,如果读者对股票或金融衍生物交易不太了解,又比较感兴趣的话可自行查询相关资料。
常见的交易策略有很多种,例如趋势型,网格型,剥头皮,概率法则,高频交易等,今天主要给大家介绍2种低频的交易策略,高抛低吸网格交易策略、日内做T策略。
二、需求分析&实现思路
每个交易日的股票都会上涨或者下跌,在这个过程中笔者们偶尔会想针对部分股票进行股价的涨跌幅进行监控,或者自动进行交易,在这个需求前提下,现有券商、股票分析软件都会带有机器人自动交易策略功能,大部分都需要收费或者部分策略不能满足自己的需求,笔者这边提供2种实现思路:
1、借助现有量化平台编写策略和回测分析,然后在券商软件层面进行策略执行。
2、自己编写功能代码来监控估价,对股价波动进行特殊处理满足特殊需求。
第一种实现成本较低,但功能受限于平台;第二种实现成本毋庸置疑相对较高,但是逻辑可以自己控制。
这个量化平台在笔者的熟悉情况下,它可以很方便的回测你的交易策略,但是在股价盯盘上,或者自定义逻辑上支持的不是很完善,很多功能也是需要收费才能使用,下面笔者简单介绍下手撸个股票区间交易盯盘系统的实现过程。
三、区间交易盯盘系统
1)实现思路
大致分为以下四大功能模块,分别为
1、股票池:需要获取数据的股票列表
2、股票实时数据收集服务:针对不同数据源配置拉取对应的股票实时数据,并提供重试机制
3、股票组合、交易策略配置、交易策略运行:具体可以参考接口文档,代码实现
4、通知服务:通知支持邮件通知,企业微信聊天机器人通知。(在application.yml配置)
2)代码实现
工程采用单机应用架构,使用框架为SpringBoot + Spring Data Jpa + Redis等常规开发框架。数据库采用mysql,结构和文件见源码工程data目录
源码地址:
https://gitee.com/snowball2dev/stock-trade-strategy
maven工程结构
- stock-back-test
- 策略回测模块,暂未实现
- stock-base
- 基础模块,主要是通用工具类
- stock-data
- 股票数据模块,功能包含股票池、股票数据源实时采集、数据更新、事件通知等
- stock-platform
- 股票后台平台启动模块,包含工程配置
- stock-trade
- 股票交易策略模块,功能有股票组合管理、网格交易策略参数配置、T0交易参数配置、2种交易策略的实现和执行等
- stock-user
- 用户模块,包含用户基础功能
3)接口文档
这里贴一个接口,其他接口见接口文档地址描述
- 网格交易-创建/更新计划
- /stock/tradePlan/grid/save
4)部署工程
1、根据data目录下的stock_sql.sql创建数据库相关表
2、修改工程yml配置文件,配置自己的邮箱通知地址、企业微信聊天机器人地址
3、maven工程对stock-platform模块进行package打包,将输出的jar包上传到服务器,运行jar
5)运行效果
1、表结构
2、Idea本地运行日志
3、服务端运行目录
4、服务端运行日志
6)小结
以上就是手写的区间交易盯盘系统相关功能描述和结果展示,包含用户模块、股票模拟组合模块、套利策略模块、股票通用模块等,工程后端服务在服务器单机部署,在A股股票实践验证几个月,代码暂无发现bug,部分结果通知截图暂未提供,读者可以自行下载代码使用Idea运行工程实践,有什么问题和想法随时可以留言或者联系小编。
四、总结
以上就是笔者根据个人炒股经验和量化交易知识,独立在业余时间花了1个月左右零碎时间开发的股票区间交易的盯盘后台系统,实现了高抛低吸网格交易策略、日内做T策略两种策略的线上运行,以及触发交易的通知机制功能。虽然功能完善性可能不是很够,但基本可以满足这两种策略的套利功能。