Files
emo-grab/README.md
2026-01-06 00:49:36 +08:00

89 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 益盟操盘手数据抓取器
## 前言
比起将其整合到整个平台应用中,解耦出一个数据抓取器更加便于维护和管理。抓取器只需要**获取股票池**并**定时更新**。
## 获取股票池
股票池从存放 tushare 数据库获取。抓取器应该能配置简单的股票池筛选规则,如仅限沪深 A 股。这个筛选规则可以是默认的,因为似乎益盟操盘手没有北交所数据。
获取股票池可以直接通过数据库读取。
## 更新
### 更新内容
应提供后台,对更新的内容进行配置,如:需要更新的指标、指标的参数等。
由于从益盟 5.0 版本开始,更新的指标名称由代码替代,所以在系统上也需要提供一份指标名称和代码的对应关系,以便用户能方便地选取指标。目前平台已经基本实现指标说明的获取功能。
指标参数除益盟 APK 内默认的 config_ind_online.json 外,每次启动程序还会从网上抓取一份最新的。可以通过实现抓取来获得最新配置。
另外,最好在平台上有方式对请求进行测试。每次更新前都需要确保既定的访问正常,一旦发现异常情况须立即停止更新,并对管理员发出警告。
### 更新频率
考虑以下两种方式:
1. 可使用 cron 表达式进行更新频率的配置。该表达式应该是忽略当日是否是交易日的,比如周末当然也可以运行更新。
2. 使用写死的逻辑代码进行更新。
### 更新配置
更新过程中的最大线程数、循环延时应提供相应后台进行管理配置。
为避免请求激增,同一请求任务应尽可能多地囊括需要更新的指标,即采用 `2422 CANDLE_STICK_V3` 而非 `2921 INDEX_CALC_V2` 来更新。
### 更新进度
更新进度应可视,进度是已更新股票数÷股票总数。过程应统计平均每支股票的更新时间,得出剩余时间:已用时间÷已更新股票数×未更新股票数。
## 日内更新和推送通知
对于需要特别关注的股票,应提供接收**特别关注股票**的接口(入池、出池)、推送功能、更新频率设置,供日内特别关注。
接口应以某种方式来验证是否是合法请求。
## 其他配置
益盟 client 参数,包括使用的用户参数、设备参数等,应提供简易后台进行配置。 当前使用本地 JSON 保存配置。默认配置应在对应配置类内提供初始值,当本地无 JSON 时从配置类内初始化保存在本地。
## 环境配置
### 测试环境
测试环境需要配置好 Clash、Fiddler。Clash 部分,需要对益盟网址 Phaser 进行设置,强制使用代理访问。
目前,平台已经提供代理设置界面,程序调用 okhttp 的地方基本上已经可以经由配置代理进行网络活动,故大部分确保平台访问能过代理的部分需要在 Clash 上的规则进行配置。
以 Clash Verge 为例:打开主界面——订阅——全局扩展脚本,编辑脚本如下:
```js
// Define main function (script entry)
function main(config, profileName)
// 此处的 dypnsapi.aliyun... 是益盟调用手机号登录的接口
// 为了统一请求 IP 且不暴露真实 IP这部分需要 REJECT-DROP
config.rules.unshift('DOMAIN-SUFFIX,dypnsapi.aliyuncs.com,REJECT-DROP');
config.rules.unshift('DOMAIN-SUFFIX,dypnsapi.aliyun.com,REJECT-DROP');
config.rules.unshift('DOMAIN-SUFFIX,emoney.cn,喵酥云');
config.rules.unshift('DOMAIN-KEYWORD,emapp,喵酥云');
console.log(config.rules);
return config;
}
```
具体使用的代理名称根据机场配置而定,也可以写 js 自动匹配。注意此处添加自定义规则采用的函数是 `unshift` 以添加到规则头部,确保自定义规则的优先级,否则很可能优先 match 到机场的自定义配置,导致自定义规则失效。
访问数据库不需要过代理,可以直连。
### 生产环境
暂未确定生产环境是否在本地环境。若在本地环境,可以选用 Windows 电脑,按照测试环境进行配置。若在云环境,必须明确所用云服务器是国外服务器。
当使用云环境作为生产环境时,须明确主数据库所在位置。若主数据库位于本地环境,则需要 frp 或其他内网穿透软件进行穿透。
## 预案
对于可能暴露的情况,需要准备预案,对内容进行销毁。可以为程序添加“毁灭模式”,一旦被触发,自动清除程序和附加的文件。