QAUtil 模块文档
概述
QAUtil 是 QUANTAXIS 的核心工具模块,提供了丰富的实用功能,包括时间处理、数据转换、文件操作、数据库连接、配置管理等基础设施功能,是整个框架的基础支撑模块。
模块架构
核心组件
时间处理工具
QADate.py: 基础时间日期处理
QADate_trade.py: 交易日期和时间处理
QADateTools.py: 高级日期工具
QABar.py: 时间周期处理
数据处理工具
QATransform.py: 数据格式转换
QACode.py: 股票代码处理
QAList.py: 列表操作工具
QADict.py: 字典操作工具
系统工具
QASetting.py: 系统配置管理
QAMongo.py: MongoDB数据库操作
QASql.py: SQL相关工具
QACache.py: 缓存管理
辅助工具
QALogs.py: 日志管理
QAFile.py: 文件操作
QAMail.py: 邮件发送
QAWebutil.py: 网络工具
主要功能
时间日期处理
基础时间功能 (QADate)
# 时间戳转换
QA_util_date_stamp('2020-01-01') # 获取时间戳
QA_util_stamp2datetime(timestamp) # 时间戳转datetime
# 日期格式转换
QA_util_date_str2int('2020-01-01') # 字符串转整数
QA_util_date_int2str(20200101) # 整数转字符串
# 获取当前时间
QA_util_date_today() # 今日日期
QA_util_time_now() # 当前时间
QA_util_today_str() # 今日字符串格式
交易时间处理 (QADate_trade)
# 交易日判断
QA_util_if_trade('2020-01-01') # 是否交易日
QA_util_if_tradetime('09:30:00') # 是否交易时间
# 交易日计算
QA_util_get_next_trade_date('2020-01-01') # 下一个交易日
QA_util_get_pre_trade_date('2020-01-01') # 前一个交易日
# 获取交易日期范围
QA_util_get_trade_range('2020-01-01', '2020-01-31')
# 期货时间转换
QA_util_future_to_realdatetime('2020-01-01 21:00:00')
日期工具 (QADateTools)
# 月份计算
QA_util_add_months('2020-01-01', 3) # 增加月份
QA_util_getBetweenMonth('2020-01', '2020-12') # 获取月份列表
# 季度计算
QA_util_getBetweenQuarter('2020-Q1', '2020-Q4')
数据格式转换
格式转换 (QATransform)
# pandas 相关转换
QA_util_to_json_from_pandas(df) # DataFrame转JSON
QA_util_to_pandas_from_json(json_data) # JSON转DataFrame
QA_util_to_list_from_pandas(df) # DataFrame转列表
# numpy 相关转换
QA_util_to_list_from_numpy(np_array) # numpy数组转列表
代码处理 (QACode)
# 股票代码格式处理
QA_util_code_tostr(codes) # 代码列表转字符串
QA_util_code_tolist('000001,000002') # 字符串转代码列表
QA_util_code_adjust_ctp(code) # CTP代码调整
QA_util_code_change_format(code, 'wind') # 代码格式转换
数据库操作
MongoDB 工具 (QAMongo)
# MongoDB 连接管理
QA_util_mongo_initial() # 初始化MongoDB连接
QA_util_mongo_status() # 检查MongoDB状态
QA_util_mongo_infos() # 获取MongoDB信息
SQL 工具 (QASql)
# MongoDB查询配置
QA_util_sql_mongo_setting(ip, port, user, password)
QA_util_sql_async_mongo_setting(ip, port, user, password)
# 排序设置
QA_util_sql_mongo_sort_ASCENDING() # 升序排列
QA_util_sql_mongo_sort_DESCENDING() # 降序排列
系统配置
配置管理 (QASetting)
# 系统配置
from QUANTAXIS.QAUtil import QASETTING
DATABASE = QASETTING.get_config('DATABASE')
# IP地址列表
stock_ip_list # 股票数据源IP列表
future_ip_list # 期货数据源IP列表
info_ip_list # 信息数据源IP列表
参数常量 (QAParameter)
# 市场类型
MARKET_TYPE.STOCK_CN # 中国股票市场
MARKET_TYPE.FUTURE_CN # 中国期货市场
# 订单方向
ORDER_DIRECTION.BUY # 买入
ORDER_DIRECTION.SELL # 卖出
# 订单状态
ORDER_STATUS.NEW # 新订单
ORDER_STATUS.FILLED # 已成交
# 数据频率
FREQUENCE.DAY # 日线
FREQUENCE.MIN1 # 1分钟线
工具函数
缓存管理 (QACache)
# 缓存装饰器
@QA_util_cache
def expensive_function():
# 耗时计算
return result
并行处理 (Parallelism)
# 并行处理
from QUANTAXIS.QAUtil import Parallelism
# 创建并行任务
parallel = Parallelism(worker_num=4)
results = parallel.run(func, data_list)
# 线程并行
from QUANTAXIS.QAUtil import Parallelism_Thread
thread_parallel = Parallelism_Thread(worker_num=4)
日志管理 (QALogs)
# 日志记录
QA_util_log_info('信息日志')
QA_util_log_debug('调试日志')
QA_util_log_expection('异常日志')
文件操作 (QAFile)
# 文件MD5校验
md5_hash = QA_util_file_md5('file_path.txt')
网络工具 (QAWebutil)
# 网络连通性测试
is_connected = QA_util_web_ping('www.baidu.com')
邮件发送 (QAMail)
# 发送邮件
QA_util_send_mail(
sender='[email protected]',
password='password',
receiver='[email protected]',
subject='主题',
content='内容'
)
时间周期处理
时间索引生成 (QABar)
# 生成分钟级索引
min_index = QA_util_make_min_index('09:30', '15:00', freq='1min')
# 生成小时级索引
hour_index = QA_util_make_hour_index('09:00', '15:00')
# 计算时间间隔
gap = QA_util_time_gap('09:30', '10:30', freq='min')
设计模式
单例模式 (QASingleton)
from QUANTAXIS.QAUtil import singleton
@singleton
class ConfigManager:
def __init__(self):
self.config = {}
性能监控
from QUANTAXIS.QAUtil import print_used_time
@print_used_time
def time_consuming_function():
# 耗时操作
pass
配置示例
数据库配置
# MongoDB配置
MONGODB_CONFIG = {
'ip': 'localhost',
'port': 27017,
'username': 'user',
'password': 'password',
'database': 'quantaxis'
}
# 初始化数据库连接
QA_util_mongo_initial()
日志配置
# 配置日志级别和输出
import logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
最佳实践
时间处理
统一使用QAUtil的时间函数处理交易时间
注意时区处理,特别是期货夜盘时间
数据转换
使用标准的转换函数确保数据格式一致
注意数据类型检查和异常处理
配置管理
集中管理系统配置,避免硬编码
使用环境变量区分开发和生产环境
性能优化
合理使用缓存减少重复计算
使用并行处理提高数据处理效率
注意事项
线程安全: 在多线程环境下注意共享资源的线程安全
内存管理: 大数据处理时注意内存使用,及时释放不需要的对象
异常处理: 网络操作和文件操作要做好异常处理
时区处理: 处理跨时区数据时要特别注意时间转换
相关模块
QAData: 使用QAUtil的时间和转换工具
QAFetch: 依赖QAUtil的网络和配置工具
QASU: 使用QAUtil的数据库和文件工具
Last updated
Was this helpful?