|
点击关注↓↓↓,置顶+星标每天订阅,学习更多指标内容☼↓↓↓
今天仓鼠哥将详细解析一个实用的量化交易工具——将QMT持仓数据导入通达信自定义板块的Python程序。该工具能够自动获取QMT交易系统中的持仓股票,并将其转换为通达信软件可识别的板块文件格式。 界面如下:
这个Python脚本主要实现以下功能: - 1. 通过图形界面获取用户配置信息
- 2. 连接QMT交易系统获取持仓数据
- 3. 将持仓股票转换为通达信格式
- 4. 生成通达信自定义板块文件
代码结构解析 def setup_logger():
# 创建logs目录
ifnot os.path.exists('logs'):
os.makedirs('logs')
# 配置日志文件名(使用日期)
log_file = os.path.join('logs', f'qmt_import_{datetime.now().strftime("%Y%m%d")}.log')
# 创建日志记录器
logger = logging.getLogger('QMTImport')
logger.setLevel(logging.INFO)
# 创建文件处理器(限制单个文件大小为5MB,最多保留5个文件)
file_handler = RotatingFileHandler(log_file, maxBytes=5*1024*1024, backupCount=5, encoding='utf-8')
file_handler.setLevel(logging.INFO)这段代码配置了一个完善的日志系统:
• 自动创建logs目录存储日志文件 • 按日期生成日志文件名 • 使用RotatingFileHandler实现日志轮转,防止单个日志文件过大 • 同时输出到文件和终端控制台 class ConfigGUI:
def __init__(self):
self.root = tk.Tk()
self.root.title("仓鼠智能交易系统--QMT持仓导入通达信")
self.root.geometry("800x600")
# 默认配置
self.qmt_path = tk.StringVar(value=r"D:\通达信\国金QMT交易端模拟\userdata_mini")
self.tdx_path = tk.StringVar(value=r"D:\通达信\自用版")GUI类使用tkinter库创建,主要特点包括:
• 设置默认路径,方便用户直接使用 • 提供浏览按钮选择目录 • 包含日志显示区域,实时反馈操作结果 • 输入验证功能,确保必要参数已填写 def connect_qmt():
try:
# 生成会话ID
session_id = int(time.time()) % 1000000
# 创建交易对象
xt_trader = XtQuantTrader(QMT_PATH, session_id)
xt_trader.start()
# 连接交易服务器
if xt_trader.connect() != 0:
log_message("错误: 连接QMT交易服务器失败")
return None连接QMT的核心步骤: - 1. 生成唯一的会话ID
- 2. 创建XtQuantTrader交易对象
- 3. 启动交易连接
- 4. 订阅指定账户
- 5. 持仓数据获取
def get_positions(xt_trader):
account = StockAccount(QMT_ACCOUNT)
positions = xt_trader.query_stock_positions(account)
# 获取股票名称和最新价格
stock_info = get_stock_info(stock_codes)
# 计算盈亏百分比
profit_percent = (price / cost - 1) * 100获取持仓数据后,程序还会:
• 查询股票的实时行情数据 • 计算每只股票的盈亏比例 • 格式化输出持仓明细 def export_to_tdx(positions):
# 转换代码格式为通达信格式
if code.endswith('.SH'):
tdx_code = '1' + code.split('.')[0]
elif code.endswith('.SZ'):
tdx_code = '0' + code.split('.')[0]
# 写入板块文件
with open(block_file, 'w', encoding='gbk') as f:
f.write('\n'.join(stock_codes))代码转换规则:
• 上海市场股票:前缀1+股票代码 • 深圳市场股票:前缀0+股票代码 • 使用GBK编码写入文件,确保通达信能正确识别 技术要点总结 - 1. 多线程安全:通过生成唯一会话ID确保多实例运行安全
- 2. 错误处理:完善的异常捕获和日志记录机制
- 3. 性能优化:批量获取股票行情数据,减少API调用次数
- 4. 兼容性:处理不同市场股票代码的转换规则
- 5. 用户体验:图形界面与日志反馈相结合
实际应用价值 该工具解决了量化交易中的一个常见需求:将QMT系统中的持仓股票快速导入到通达信软件中进行分析。主要优势包括: - 1. 自动化:无需手动记录和输入股票代码
- 2. 实时性:获取最新持仓和行情数据
- 3. 可视化:直观显示盈亏情况
- 4. 灵活性:可自定义板块名称和存储路径
详细打通过网盘分享的文件:QMT持仓导入通达信.zip 链接: https://pan.baidu.com/s/1R1EaY7AYEHa1pbLUO9pb_Q?pwd=y7mk 提取码: y7mk --来自百度网盘超级会员v7的分享
量化精选结果,仅供参考,不做为投资依据,股市有风险,入市须谨慎!
|