# redtorch **Repository Path**: GoogleGM/redtorch ## Basic Information - **Project Name**: redtorch - **Description**: Kotlin(Java)开源量化交易开发框架 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2021-10-02 - **Last Updated**: 2024-11-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # redtorch `但知行好事,莫要问前程。` **在您下载和使用本项目前,请务必阅读相关提示、协议和注意事项** ## 项目简介 项目是基于Kotlin(Java)语言开发的开源量化交易程序开发框架。 项目仓库地址:[ https://github.com/sun0x00/redtorch](https://github.com/sun0x00/redtorch " https://github.com/sun0x00/redtorch") ## 开发语言 Kotlin、Java ## 提示 ### 当前版本2.0.0 **当前版本尚未充分测试,务必充分审阅测试后使用** #### 关于2.0.0升级的重要提示。 本项目自建立均以实际使用需求为导向,经过长时间的使用和总结,决定在2.0.0版本对本项目进行重构和精简。 基金公司运作过程中,一般按照监管要求保证公平交易,同时为了风险隔离和交易安全,一般账户统一管理,基金经理或 其开发的策略独立下达指令,交易部门按权限交易。 在作者使用本项目的过程中,交易信号大多由各策略负责人通过其他复杂手段生成,而后通过脚本策略形式接入本项目进行交易。 因此本项目旧版中的许多复杂功能并未得到有效利用。 已知常用功能为查询投资组合(账户、持仓)、获取交易过程(委托、成交)、获取基本数据(合约)和订阅行情。 风险监控,交易监控等功能均在这些基础数据上实现。 **因此2.0.0版本主要目标是将本项目作为交易管理的核心系统,而非一站式量化系统,增强安全性,增强容错,移除不必要的功能。** + 所有存入Zookeeper的数据使用3DES二次加密脱敏。(安全增强) + 项目使用Kotlin语言重写。(Kotlin语言对Java语言和类库兼容性良好,且对于空指针更为安全) + web管理服务被移除。(安全增强,技术堆栈精简) + 启动服务器可通过参数决定是否同时启动管理GUI,GUI由JavaFX实现。(易用性增强) + web交易页面被移除。如有需求建议单独开发。(安全增强) + 操作员(operator)和用户进行合并。(逻辑精简) + 数据传输移除Protobuf,使用RFC 6902作为替换。(同时测试对比了RFC 7396,性能不佳) + 数据同步利用RFC 6902进行差异化操作,移除复杂的RPC over HTTP/WebSocket。 + 停止对Python客户端的支持。如有需求仍然可以自行开发。(Python重构测试坑太多) + 移除行情记录功能。(非业务必须功能,常有特殊需求) + 移除历史数据访问,K线计算等功能。(功能精简) + **升级到JDK 16+ JavaFX 16+ Gradle 7+** ## 项目文档 此项目仅供代码相互学习,不提供文档,相对于旧版本,已经精简了技术堆栈,部分问题可在FAQ查找答案 。 ## 不适用场景 + 模拟账户或者分账户分仓 **本项目不存在相关功能,用户功能仅用于限制交易权限,避免跨产品交易安全问题** + 收到Tick-发出Order要求延迟3毫秒以下的高频交易 **两次网络转发会造成一定的延迟** + 一站式量化交易开发 **一站式太难做了,奇奇怪怪的需求太多,打个比方,10个人可能有5种生成K线的方法8种过滤数据的方法,无法统一集成** ## 开发环境要求 基本环境需要JDK 16,项目使用Gradle 7作为构建工具。 由于大部分代码为Kotlin,因此建议使用idea作为开发工具。 默认情况下,无需特殊配置,通过git克隆本项目之后,直接导入Gradle工程即可。 ## 表层文件结构 + /redtorch + /gradle **Gradle wrapper** + /log **用户存放运行日志** + /rt-common **通用模块** + /rt-desktop **JavaFX实现的GUI交易终端模块** + /rt-gateway-api **网关接口** + /rt-gateway-ctp **CTP网关具体实现** + /rt-master **主节点模块,管理会话,用户、网关、节点配置,基本的数据管理** + /rt-slave **从节点模块,承载网关运行的具体实例** + .gitignore **Git配置文件** + build.gradle.kts **Gradle配置(基本配置和一些子项目通用的配置)** + gradlew **Gradle wrapper** + gradlew.bat **Gradle wrapper** + README.md + settings.gradle.kts **Gradle配置(增加子项目可修改此文件)** ## 配置和编译 + 将Zookeeper连接字符串配置到rt-master子项目下的resources目录中的application.properties中 + 默认rt-master的端口为9099,如果修改,rt-desktop配置文件应一并修改 + 通过Gradle中的bootJar构建任务可得到支持直接运行的jar文件 ## 启动运行 + 单独下载运行Zookeeper服务器(单机或集群均可),版本需要与项目依赖中配置的客户端版本对应,当前依赖为3.6.2 + 开发过程中rt-desktop、rt-master、rt-slave均可直接通过main方法启动 + 如果通过bootJar得到jar文件,可通过java -jar <文件名>.jar 命令可直接分别启动,无需其它容器 例如 java -jar rt-master.jar + 如果在jar文件所在运行目录中存在配置文件application.properties,其配置会默认覆盖打包在jar中的配置文件,这一点将十分便于生产部署,配置分离。 ## FAQ ##### 能否降低JDK版本? + 可自行尝试降低,但JavaFX最低要JDK11 ##### 支持哪些操作系统? + 本系统已经在windows和linux中应用 + 支持MAC,但是请注意,rt-slave承载的网关底层实现可能依赖一些第三方运行库,例如ctp相关的dll和so,这些第三方库不一定支持mac,因此无法完全兼容 ##### 如何编写策略? + 请自行拓展开发 ##### 只能用来做国内期货吗? 此项目的的网关可自行拓展开发,不限制API类型,证券等数据类型可根据实际需求开发接入对应网关。 ## 协议(License) MIT # 重要提示 **作者不参与何形式的商业支持,任何关于本项目的商业活动或涉及金钱的内容均与作者无关** **用户在遵循MIT协议的同时,如果用户下载、安装、使用本项目中所提供的软件,软件作者对任何原因在使用本项目中提供的软件时可能对用户自己或他人造成的任何形式的损失和伤害不承担任何责任。如果用户不同意上述内容,用户可以自行删除本项目。** **务必严格遵守当地法律法规** **市场莫测 风险自负** **请务必充分理解各类相关风险**