## 声明 > 这是我们rust课题的第一个版本,有任何问题欢迎提出。 ## 项目结构解析 ``` ├─ src │ ├─ main.rs // 入口 │ ├─ as_libs.rs // AS套利模型的相关库 │ ├─ exchange_libs.rs // 交易所对接相关库 │ └─ exchange_middle_ware.rs // 交易所中间键(方便其他模块对接) │ ├─ tests │ ├─ arc_test.rs // 互锁的测试 │ ├─ binance_ws_test.rs // 币安订阅的集成测试 │ ├─ hook_test.rs // 钩子函数测试 │ ├─ main_test.rs // 与主逻辑相关的一些测试 │ └─ thread_test.rs // 多线程通讯的测试 │ └─ .gitignore // git忽略文件 ``` ## 项目流程解析 > 通过检测币安的spread和当前库存值,计算出预定价格,随后围绕着当前库存等级,结合rl(Risk Level),计算出当前下单量(库存越大,rl越大,下单量越小),委托限价买单之后,实时监测成交情况,如果成交立马委托卖单。 ## 运行方式 > * 将源代码库clone到本地/server。 > * **如果有国内运行需求**,本地配置混合代理地址:proxy_address到环境变量,配合小猫咪或其他代理工具,可以在本地运行、单元测试。 > * 需要配置:okx_access_key、okx_secret_key、okx_passphrase到系统环境变量。 > * 安装相关库之后,直接编译即可运行。 ## 其他问题 ### 1. 我们的实现目标 > 实现一个基于rust的最简化as做市模型(基于之前的经验),这是为了后期快速迭代开发,我们基于TDD和最简系统原则进行测试和实现。 ### 2. 关于库存平衡点 > 我们的目的是维持0库存(库存目标可以通过优化公式来实现)。 ### 3. 关于同时订阅两个交易所的问题 > * 两个交易所之间的深度会有价差,如果同时参考两个交易所,会不可避免地出现委托买单后立即以市价成交的情况。 > * 当然也可以通过简单的价格判断来限制这个问题。 > * 技术上没有实现难度,但是具体细节还需要再研究。 ### 4. 关于订单流的判定问题 > * 严格上来说,目前可以随意增加任何交易所的任何公共信息来作为基础元素。 > * 跟同时订阅两个交易所一样,目前还需要研究订单流的判断逻辑,目前rust技术上已经不会有任何问题。 ### 5. 一些其他细节问题 > * 目前是websocket和主逻辑对cpu时间片进行拆分使用,严格来说实现不了真正的双线程(如理解有误请指教,谢谢)。 > * 目前部分逻辑使用HTTP的形式实现(如k线数据),虽然有点慢,但逻辑是成立的。 > * 需要高频的部分都通过websocket实现的。