rossmitchell/fund-services

从不同提供商获取基金信息的一套接口

v0.1.0 2019-07-07 14:08 UTC

This package is auto-updated.

Last update: 2024-09-08 01:32:34 UTC


README

一套简单的接口,用于交换关于基金及其价格的信息。

这是一个非常早期的Alpha版本,随着开发进行,预计会有重大变更。

安装

composer require rossmitchell/fund-services

原因

我正在构建一个跟踪投资持仓的系统,但没有找到一个好、开放、免费、源代码的基金价格来源用于其中。因此,我必须尝试不同的选项,并且可能不得不回退到屏幕抓取来获取所需的数据。

为了使这更容易,我将使用提供商的接口以及他们需要返回的内容,这应该允许我在最小麻烦的情况下切换这些接口。

使用

每个提供商都应该实现 FundPriceProvider 接口。它目前有三个需要实现的方法

isFundSupported

并不是所有提供商都支持所有基金,所以我需要一种简单的方法来提前检查。

接受一个 Fund 对象,并应在检查是否可以为其提供定价信息后返回一个布尔值

getPriceForFund

这应该返回提供给它的基金当天的 EndOfDayPrices。这些应该是对于当天的。

如果目前没有可用的价格,它抛出 PricesNotAvailableException

如果它不能从提供商获取价格,它抛出 ServiceDownException

如果它不支持该基金,它抛出 FundNotFoundException

getHistoricPricesForFund

这返回一个包含 EndOfDayPrices 的数组,对于基金,每个元素代表给定范围内的某一天的价格。如果其中某一天没有价格,但其他天有,则数组应包含那些天的价格。如果范围内没有价格,则返回一个空数组。

它接受一个 Fund 和两个 DateTimeImmutable 对象,一个用于开始日期,一个用于结束日期。范围应包括两个日期。如果两个日期相同,则数组应包含该日期的单个元素。

如果它不能从提供商获取价格,它抛出 ServiceDownException

如果它不支持该基金,它抛出 FundNotFoundException

贡献

欢迎 Pull requests。对于重大更改,请首先提出一个问题来讨论您想进行哪些更改。

请确保适当地更新测试。

许可证

GPL3