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

4.5 KiB
Raw Permalink Blame History

益盟操盘手数据抓取器

前言

比起将其整合到整个平台应用中,解耦出一个数据抓取器更加便于维护和管理。抓取器只需要获取股票池定时更新

获取股票池

股票池从存放 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 为例:打开主界面——订阅——全局扩展脚本,编辑脚本如下:

// 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 或其他内网穿透软件进行穿透。

预案

对于可能暴露的情况,需要准备预案,对内容进行销毁。可以为程序添加“毁灭模式”,一旦被触发,自动清除程序和附加的文件。