美股和港股最大的差异是交易时段不同。美股的活跃期是北京时间22:30-05:00,港股是09:30-16:00。我的策略需要同时监控两个市场,但不需要实时全时段监控。解决方案是在函数计算里配置两个定时触发器,分别在不同时段启动采集任务。
yaml
函数计算配置
triggers:
- name: hk-trigger
schedule: "0 9-16 1-5" - name: us-trigger
schedule: "0 22-4 1-5"
采集任务的核心代码不到50行。调用指数接口获取恒生指数和标普500的数据,写入OSS。每天生成一个数据文件,按月归档。代码里加了指数退避重试,遇到网络错误自动重试三次。
python
@retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=2, max=10))
def fetch_market_data(country_id):
url = f"http://api.jkidata.com/stock/indices?countryId={country_id}&key={KEY}"
return requests.get(url, timeout=10).json()
数据存储用了OSS的生命周期管理,30天以上的数据自动归档到冷存储,成本降低70%。查询历史数据时,用SDK直接读取OSS文件,不需要重新调用API。
跨市场数据对齐是个技术活。港股收盘时美股还没开盘,我的策略用的是各自市场的收盘价计算日收益率,不需要做时间对齐。但做跨市场相关性分析时,需要把两个市场的数据按日期合并,用pandas的merge操作。
docs.jkidata.com上有函数计算的集成示例,包括触发器配置、代码模板、权限设置。
【数据API】jkidata.com | 文档中心 docs.jkidata.com