# hedge
**Repository Path**: eddylapis/hedge
## Basic Information
- **Project Name**: hedge
- **Description**: 本分支暂停开发,迁移到coding.net
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: http://diorsunion.com
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2017-07-02
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
项目结构图

项目结构说明
> * hedge-server:服务端,负责所有的业务逻辑功能,数据同步,算法执行,指令发送,启动方式:运行server-run.bat
在开发时则直接运行com.diorsunion.hedge.ServerApplication
> * hedge-client:客户端,连接券商软件,向服务端发送数据,同时接收服务端指令,向券商软件下达交易信息,启动方式:运行client-run.bat
在开发时则直接运行com.diorsunion.hedge.client.ClientApplication
为了安全,客户端和券商软件一般安装在同一台机器上
> * hedge-common:一些共同的代码
> * hedge-build: mvn clean时该工程会将项目需要的一些jar包install到本地maven仓库中去
开发的步骤
> 第一步. 将代码取到本地:git clone http://git.oschina.net/harleydog/hedge -b dev
> 第二步. 将database/里的sql执行到数据库,建立表结构,
> 第三步. 确定dev.properties里的各项配置是否正确, (如果要使用阿里云上的开发库请联系楼主)
# 研究股票量化对冲
量化:用程序化实现股票的交易,让机器来代替人来做计算,做决策。
目前本项目主要使用的是美股,之所以用美股的原因是
> 1. 美股支持双向市场,可以做多,也可以做空,更利于量化
> 2. 美股有成熟的期权交易,可以对股票交易实现保障
> 3. 本人美粉(勿喷)
#项目的最终目标:
实现`自动化交易`(目前已经打通了盈透证券,可以支持自动化下单交易)
##目前的几个量化策略
> * 对冲套利:通过同时做多和做空的方式赚取利差
> * 日内交易:在一个交易日以内高频的实现买卖,到收盘前平仓所有多头和空头头寸,来应对风险
> * 趋势交易:利用日线级别的量化指标进行趋势交易
##一、当前目标(2016-04-24)
> 1. ~~日、周、月级的数据的定时同步 ~~ 已完成
> 2. ~~日、周、月级的数据量化指标(MACD,KDK,RSI,BOLL)的计算 ~~ 已完成
> 3. 秒级数据的获取,利用盈透证券API(接口已经打通)
> 4. 1分钟、5分钟、15分钟、30分钟、1小时、4小时数据的计算
> 5. 核心算法的完善 (这尼玛是最大最难的一个活)
> 6. web程序,数据的查看,各种K线图,量化指标图,账户盈利报表 (可能需要前端参与)
> 7. 账户管理,包括账户盈利统计这些
> 8. 交易触发短信提醒 (短信接口已有)
##二、项目环境搭建
1.安装Java
> 请安装jdk1.8,官网链接(http://www.oracle.com/technetwork/java/javase/downloads/index.html)
> 环境变量设置:
> `JAVA_HOME = JAVA安装目录,默认是C:\Program Files\Java\jdk1.8.0_65`
> `PATH = %PATH%;%JAVA_HOME%\bin;`
2.开发工具
> 请使用Eclipse\ MyEclipse \ Intellij IDEA均可,不管使用什么IDE,请将语法环境设置成java8
3.Maven
> Maven下载: (http://maven.apache.org/download.cgi#)
> 环境变量配置
> `MAVEN_HOME = Maven解压缩目录`
> `PATH = %PATH%;%JAVA_HOME%\bin;%MAVEN_HOME%\bin;`
3.nginx
> 本机开发可以考虑不安装nginx,直接用tomcat即可
> 如打算安装nginx,请参考配置
> (https://git.oschina.net/harleydog/hedge/blob/master/config/nginx/nginx.conf)
4.DB
> 如果开发请使用本地MySQL,DB初始化脚本请使用
> MySQL下载: (http://www.mysql.com/downloads/)
> (https://git.oschina.net/harleydog/hedge/blob/master/config/sql/database.sql)
> 具体的数据导入 可以联系作者索要
5.外部API参考
>本项目中使用的一些外部API参考如下
> 1. 盈透证券TWS API:(http://git.oschina.net/harleydog/IB_TWS_API)
Version: API 9.71 Release Date: April 24 2015
> 2. 老虎证券API:(http://developers.tigerbrokers.com/docs/oauth2/)
> 3. 富途证券API:(https://www.futu5.com/faq/category/cid/366)
> 4. DBTest,基于内存数据库的单元测试API(http://git.oschina.net/harleydog/dbtest)
> 5. 淘宝开放平台:(http://open.taobao.com)
> 6. 阿里大鱼短信发送接口:(http://www.alidayu.com/)
> 7. 雪球网(抓取股票数据):(http://www.xueqiu.com)
6.配置文件
> 1. application.yml ,spring核心配置文件,其中一些${var}的变量使用dev.properties中的同名变量替换
> 2. test.properties ,运行单元测试和集成测试的配置文件,其中${var}的变量使用dev.properties中的同名变量替换
> 3. dev.properties 开发时的配置文件,通过maven的filter功能将替换application.yml和test.properties中的${var}同名变量
7.启动程序
> 1. 启动web服务使用springboot进行启动,com.diorsunion.hedge.Application 是启动入口程序,
启动后可以访问http://localhost:9090/s 查看启动结果
> 2. 测试程序在src/test/java/ 可以用IDE逐一执行,或运行mvn test命令跑所有的单测
##三、代码说明
1. 重要的包说明
> 1.1. com.diorsunion.hedge.algo :算法实现包,量化算法和股票对冲算法都实现在此包中
> 1.2. com.diorsunion.hedge.bo.datasync :数据同步不包,完成每天抓取数据同步到本地库中的功能
> 1.3. com.diorsunion.hedge.bo.db 基于数据库CRUD的业务实现类
> 1.4. com.diorsunion.hedge.bo.net 访问外部网络接口(比如雪球网)的功能
> 1.5. com.diorsunion.hedge.bo.quota 一些量化指标的计算和实现,比如MACD,KDJ
> 1.6. com.diorsunion.hedge.bo.sms 手机短信发送功能的实现
> 1.7. com.diorsunion.hedge.bo.stockdatainit 算法启动数据初始化的功能
> 1.8. com.diorsunion.hedge.common 公共类库
> 1.9. com.diorsunion.hedge.dal.entity 数据访问实体层
> 1.10. com.diorsunion.hedge.dal.repository 数据访问操作层
> 1.11. com.diorsunion.hedge.domain 业务域对象
> 1.12. com.diorsunion.hedge.exception 异常包
> 1.13. com.diorsunion.hedge.task 定时任务调度
> 1.14. com.diorsunion.hedge.util 工具包集合
> 1.15. com.diorsunion.hedge.web web层,包括controller和interceptor
2. 重要的类说明
2.1.目前大部分的启动函数都在src/test/java中,以测试的方式来完成功能
> 2.1.1 com.diorsunion.hedge.algo.test 算法测试包
> 2.1.2 com.diorsunion.hedge.bo.datasync.test 数据同步测试包
> 2.1.3 com.diorsunion.hedge.bo.db.test 业务测试包
> 2.1.4 com.diorsunion.hedge.bo.net.test 网络接口测试包
> 2.1.5 com.diorsunion.hedge.bo.quota.test 量化指标生成测试包
> 2.1.6 com.diorsunion.hedge.bo.sms.test 短信息发送测试包
2.2.重要的测试基类
> 2.2.1 com.diorsunion.hedge.base.EmbeddedBOBaseTest 内存数据库单元测试基类,(参加单元测试覆盖率统计)
> 2.2.2 com.diorsunion.hedge.base.ExternalApiBaseTest 外部API集成测试基类
> 2.2.3 com.diorsunion.hedge.base.NetBaseTest 网络接口集成测试基类(单元测试)
> 2.2.4 com.diorsunion.hedge.base.RealDataSourceBOBaseTest 真实数据库集成测试基类
> 2.2.5 com.diorsunion.hedge.base.RepositoryBaseTest 持久层单元测试基类(参加单元测试覆盖率统计)
> 2.2.6 com.diorsunion.hedge.base.SpringBootBaseTest 启动springboot,用http的方式测试web层的Controller接口(参加单元测试覆盖率统计)
> 2.2.7 com.diorsunion.hedge.base.UnitBaseTest 普通单元测试基类(参加单元测试覆盖率统计)
凡是参加单元测试覆盖率统计的类,必须100%通过后,才能提交代码
生产环境也是这些测试类100%通过,才能build成功
##四、注意事项
> 1. 本项目对单测要求很高,单测通过率必须100%才能提交代码,因为涉及到金钱交易,所以要求每一个方法都要有单测保证正确率
,编译运行的时候,也是单测全通过才能启动服务。