orm 包
orm 包提供了数据库访问和数据模型定义的功能。
重要结构体
AdjFactor
价格调整因子结构体,用于处理前复权、后复权等价格调整。
字段:
ID int32- 调整因子IDSid int32- 交易对IDSubID int32- 子交易对IDStartMs int64- 开始时间戳(毫秒)Factor float64- 调整因子值
Calendar
交易日历结构体,用于记录交易时间段。
字段:
ID int32- 日历IDName string- 日历名称StartMs int64- 开始时间戳(毫秒)StopMs int64- 结束时间戳(毫秒)
ExSymbol
交易对信息结构体,包含交易所和交易对的基本信息。
字段:
ID int32- 交易对IDExchange string- 交易所名称ExgReal string- 实际交易所标识Market string- 市场类型Symbol string- 交易对符号Combined bool- 是否为组合交易对ListMs int64- 上市时间戳(毫秒)DelistMs int64- 退市时间戳(毫秒)
InsKline
K线插入任务结构体,用于管理K线数据的插入操作。
字段:
ID int32- 任务IDSid int32- 交易对IDTimeframe string- 时间周期StartMs int64- 开始时间戳(毫秒)StopMs int64- 结束时间戳(毫秒)
KHole
K线数据空洞结构体,用于记录K线数据缺失的时间段。
字段:
ID int64- 空洞记录IDSid int32- 交易对IDTimeframe string- 时间周期Start int64- 开始时间戳(毫秒)Stop int64- 结束时间戳(毫秒)NoData bool- 是否确认无数据
KInfo
K线信息结构体,用于记录K线数据的基本信息。
字段:
Sid int32- 交易对IDTimeframe string- 时间周期Start int64- 开始时间戳(毫秒)Stop int64- 结束时间戳(毫秒)
KlineUn
未复权K线数据结构体,包含原始K线数据。
字段:
Sid int32- 交易对IDStartMs int64- 开始时间戳(毫秒)StopMs int64- 结束时间戳(毫秒)Timeframe string- 时间周期Open float64- 开盘价High float64- 最高价Low float64- 最低价Close float64- 收盘价Volume float64- 成交量Info float64- 附加信息
InfoKline
带有附加信息的K线数据结构体。
字段:
PairTFKline *banexg.PairTFKline- 基础K线数据Adj *AdjInfo- 价格调整信息IsWarmUp bool- 是否为预热数据
AdjInfo
价格调整信息结构体,包含复权相关的详细信息。
字段:
ExSymbol *ExSymbol- 交易对信息Factor float64- 原始相邻复权因子CumFactor float64- 累计复权因子StartMS int64- 开始时间戳(毫秒)StopMS int64- 结束时间戳(毫秒)
KlineAgg
K线数据聚合配置结构体,用于管理不同时间周期的K线聚合。
字段:
TimeFrame string- 时间周期MSecs int64- 周期毫秒数Table string- 数据表名AggFrom string- 聚合来源AggStart string- 聚合开始时间AggEnd string- 聚合结束时间AggEvery string- 聚合间隔CpsBefore string- 补全截止时间Retention string- 数据保留时间
数据库连接相关
Setup
初始化数据库连接池。
返回:
*errs.Error- 初始化过程中的错误信息
Conn
获取数据库连接和查询对象。
参数:
ctx context.Context- 上下文对象,用于控制请求的生命周期
返回:
*Queries- 数据库查询对象*pgxpool.Conn- 数据库连接对象*errs.Error- 错误信息
SetDbPath
设置数据库路径。
参数:
key string- 数据库标识键path string- 数据库文件路径
DbLite
创建SQLite数据库连接。
参数:
src string- 数据源名称path string- 数据库文件路径write bool- 是否可写
返回:
*sql.DB- 数据库连接对象*errs.Error- 错误信息
NewDbErr
创建数据库错误对象。
参数:
code int- 错误码err_ error- 原始错误
返回:
*errs.Error- 格式化的错误信息
交易所相关
LoadMarkets
加载交易所市场数据。
参数:
exchange banexg.BanExchange- 交易所接口reload bool- 是否强制重新加载
返回:
banexg.MarketMap- 市场数据映射*errs.Error- 错误信息
InitExg
初始化交易所配置。
参数:
exchange banexg.BanExchange- 交易所接口
返回:
*errs.Error- 错误信息
交易对相关
GetExSymbols
获取指定交易所和市场的所有交易对信息。
参数:
exgName string- 交易所名称market string- 市场名称
返回:
map[int32]*ExSymbol- 交易对ID到交易对信息的映射
GetExSymbolMap
获取指定交易所和市场的所有交易对信息(以交易对名称为键)。
参数:
exgName string- 交易所名称market string- 市场名称
返回:
map[string]*ExSymbol- 交易对名称到交易对信息的映射
GetSymbolByID
通过ID获取交易对信息。
参数:
id int32- 交易对ID
返回:
*ExSymbol- 交易对信息
GetExSymbolCur
获取当前默认交易所的交易对信息。
参数:
symbol string- 交易对名称
返回:
*ExSymbol- 交易对信息*errs.Error- 错误信息
GetExSymbol
获取指定交易所的交易对信息。
参数:
exchange banexg.BanExchange- 交易所接口symbol string- 交易对名称
返回:
*ExSymbol- 交易对信息*errs.Error- 错误信息
EnsureExgSymbols
确保交易所的交易对信息已加载。
参数:
exchange banexg.BanExchange- 交易所接口
返回:
*errs.Error- 错误信息
EnsureCurSymbols
确保当前交易所的指定交易对信息已加载。
参数:
symbols []string- 交易对名称列表
返回:
*errs.Error- 错误信息
EnsureSymbols
确保指定交易所的交易对信息已加载。
参数:
symbols []*ExSymbol- 交易对信息列表exchanges ...string- 交易所名称列表
返回:
*errs.Error- 错误信息
LoadAllExSymbols
加载所有交易对信息。
返回:
*errs.Error- 错误信息
GetAllExSymbols
获取所有已加载的交易对信息。
返回:
map[int32]*ExSymbol- 交易对ID到交易对信息的映射
InitListDates
初始化交易对的上市日期信息。
返回:
*errs.Error- 错误信息
EnsureListDates
确保交易对的上市日期信息已加载。
参数:
sess *Queries- 数据库查询对象exchange banexg.BanExchange- 交易所接口exsMap map[int32]*ExSymbol- 交易对映射exsList []*ExSymbol- 交易对列表
返回:
*errs.Error- 错误信息
ParseShort
解析简短格式的交易对名称。
参数:
exgName string- 交易所名称short string- 简短格式的交易对名称
返回:
*ExSymbol- 交易对信息*errs.Error- 错误信息
MapExSymbols
将交易对名称列表映射为交易对信息映射。
参数:
exchange banexg.BanExchange- 交易所接口symbols []string- 交易对名称列表
返回:
map[int32]*ExSymbol- 交易对ID到交易对信息的映射*errs.Error- 错误信息
K线数据相关
AutoFetchOHLCV
自动获取K线数据,支持数据补全和未完成K线。
参数:
exchange banexg.BanExchange- 交易所接口exs *ExSymbol- 交易对信息timeFrame string- 时间周期startMS int64- 开始时间(毫秒)endMS int64- 结束时间(毫秒)limit int- 限制数量withUnFinish bool- 是否包含未完成K线pBar *utils.PrgBar- 进度条
返回:
[]*AdjInfo- 价格调整信息[]*banexg.Kline- K线数据*errs.Error- 错误信息
GetOHLCV
获取K线数据。
参数:
exs *ExSymbol- 交易对信息timeFrame string- 时间周期startMS int64- 开始时间(毫秒)endMS int64- 结束时间(毫秒)limit int- 限制数量withUnFinish bool- 是否包含未完成K线
返回:
[]*AdjInfo- 价格调整信息[]*banexg.Kline- K线数据*errs.Error- 错误信息
BulkDownOHLCV
批量下载K线数据。
参数:
exchange banexg.BanExchange- 交易所接口exsList map[int32]*ExSymbol- 交易对列表timeFrame string- 时间周期startMS int64- 开始时间(毫秒)endMS int64- 结束时间(毫秒)limit int- 限制数量prg utils.PrgCB- 进度回调
返回:
*errs.Error- 错误信息
FetchApiOHLCV
从交易所API获取K线数据。
参数:
ctx context.Context- 上下文对象exchange banexg.BanExchange- 交易所接口pair string- 交易对名称timeFrame string- 时间周期startMS int64- 开始时间(毫秒)endMS int64- 结束时间(毫秒)out chan []*banexg.Kline- K线数据输出通道
返回:
*errs.Error- 错误信息
ApplyAdj
应用价格调整因子到K线数据。
参数:
adjs []*AdjInfo- 价格调整信息klines []*banexg.Kline- K线数据adj int- 调整类型cutEnd int64- 截止时间limit int- 限制数量
返回:
[]*banexg.Kline- 调整后的K线数据
FastBulkOHLCV
快速批量获取K线数据。
参数:
exchange banexg.BanExchange- 交易所接口symbols []string- 交易对名称列表timeFrame string- 时间周期startMS int64- 开始时间(毫秒)endMS int64- 结束时间(毫秒)limit int- 限制数量handler func(string, string, []*banexg.Kline, []*AdjInfo)- 数据处理回调函数
返回:
*errs.Error- 错误信息
GetAlignOff
获取K线时间对齐偏移量。
参数:
sid int32- 交易对IDtoTfMSecs int64- 目标时间周期(毫秒)
返回:
int64- 时间偏移量(毫秒)
NewKlineAgg
创建新的K线聚合配置。
参数:
TimeFrame string- 时间周期Table string- 数据表名AggFrom string- 聚合来源AggStart string- 聚合开始时间AggEnd string- 聚合结束时间AggEvery string- 聚合间隔CpsBefore string- 补全截止时间Retention string- 数据保留时间
返回:
*KlineAgg- K线聚合配置
SyncKlineTFs
同步不同时间周期的K线数据。
参数:
args *config.CmdArgs- 命令行参数pb *utils.StagedPrg- 进度条
返回:
*errs.Error- 错误信息
CalcAdjFactors
计算价格调整因子。
参数:
args *config.CmdArgs- 命令行参数
返回:
*errs.Error- 错误信息
数据导入导出
ExportKData
导出K线数据。
参数:
configFile string- 配置文件路径outputDir string- 输出目录numWorkers int- 工作线程数pb *utils2.StagedPrg- 进度条
返回:
*errs.Error- 错误信息
ImportData
导入K线数据。
参数:
dataDir string- 数据目录numWorkers int- 工作线程数pb *utils2.StagedPrg- 进度条
返回:
*errs.Error- 错误信息
工具函数
GetDownTF
获取下一级别的时间周期。
参数:
timeFrame string- 时间周期
返回:
string- 下一级别时间周期*errs.Error- 错误信息
GetKlineAggs
获取所有K线聚合配置。
返回:
[]*KlineAgg- K线聚合配置列表