Fugle Realtime API 客户端的 Swift 实现。
将 fugle-realtime-swift
添加为 Package.swift
文件的依赖项
dependencies: [
.package(url: "https://github.com/KeanuPang/fugle-realtime-swift.git", .upToNextMajor(from: "0.1.1"))
]
在 Package.swift
中为您要使用的目标添加依赖项
dependencies: [
.product(name: "FugleRealtime", package: "fugle-realtime-swift")
]
通过 HTTP 请求,查询代码为 2884
的股票的盘中元数据
import FugleRealtime
do {
if let result = try await client.getIntraday(MetaData.self, symbol: "2884") {
print("\(result.toJSONString(prettyPrint: true) ?? "")")
if let metaData = result.meta {
print("name: \(metaData.nameZhTw ?? "")")
print("priceReference: \(metaData.priceReference?.stringValue ?? "")")
/// will print:
/// name: 玉山金
/// priceReference: 29.6
}
}
client.shutdownWS()
} catch {}
通过 Websocket 实时订阅代码为 2884
的股票的盘中报价数据
import FugleRealtime
var promise: EventLoopPromise<Void>?
// Prepare your callback function for quote data
let quoteDataCallback: ((Result<QuoteData, ClientError>) -> Void) = {
switch $0 {
case .success(let result):
print("\(result.quote?.priceAvg?.price?.stringValue ?? ""), \(result.quote?.priceAvg?.at ?? "")")
case .failure(let failures):
promise?.fail(failures)
}
}
// connect and subscribe intraday websocket endpoint
do {
promise = try await client.streamIntraday(QuoteData.self, symbol: "2884", callback: quoteDataCallback)
try promise?.futureResult.wait()
} catch {
client.shutdownWS()
}
将您的 API Token 传递给 FugleClient
let token = "demo"
let client = FugleClient = FugleClient.initWithApiToken(demo)
或者,您可以将包含以下环境变量声明的 .env
文件放入工作目录中
FUGLE_API_TOKEN=demo
现在您可以直接使用 FugleClient
,而无需传递 Token 参数
let client = FugleClient.shared
通过 HTTP 端点调用盘中资源,只需将 Mapped
数据类传递给 getIntraday()
函数
let response: MetaData? = try await client.getIntraday(MetaData.self, symbol: "2884")
如果您想通过 HTTP 端点获取带有分页的成交明细数据,您可以调用 getIntradayDealts()
函数
let response: DealtsData? = try await client.getIntradayDealts(symbol: "2884", pagingLimit: 10)
类型 | 映射的数据类 (Mapped Data Class) |
---|---|
Meta(元数据) | MataData |
Quote(报价) | QuoteData |
Chart(图表) | ChartData |
Dealts(成交明细) | DealtsData |
Volumes(成交量) | VolumesData |
对于历史股票数据,只需调用 getMarketData()
函数
let response: CandleData? = try await client.getMarketData(symbol: "2884", from: "2022-04-25", to: "2022-04-29")
类型 | 映射的数据类 (Mapped Data Class) |
---|---|
Candles(K 线) | CandleData |
如果您在使用此 SDK 时遇到任何问题,请在 GitHub issue 上提交 Bug 报告。