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线聚合配置列表