Skip to content
fasiondog edited this page Nov 22, 2025 · 1 revision

实盘交易

**本文档引用文件** - [broker.py](file://hikyuu/trade_manage/broker.py) - [broker_mail.py](file://hikyuu/trade_manage/broker_mail.py) - [broker_easytrader.py](file://hikyuu/trade_manage/broker_easytrader.py) - [HikyuuTDX.py](file://hikyuu/gui/HikyuuTDX.py) - [hku_config_template.py](file://hikyuu/data/hku_config_template.py) - [importdata.py](file://hikyuu/gui/importdata.py) - [start_qmt.py](file://hikyuu/gui/start_qmt.py)

目录

  1. 引言
  2. 订单代理机制
  3. 实盘交易参数配置
  4. 使用GUI工具进行实盘交易
  5. 使用QMT进行实盘交易
  6. 实盘交易风险与最佳实践
  7. 结论

引言

本文档旨在为Hikyuu用户提供一份详尽的实盘交易集成指南。它将解释如何安全地将经过回测验证的交易策略部署到实盘环境中。文档的核心内容包括订单代理(Broker)机制的详细说明,特别是通过邮件和easytrader库与券商交易终端集成的方法。此外,还将介绍如何配置关键的实盘交易参数,如交易账户、API密钥和风险控制开关。最后,文档会提供使用HikyuuTDX GUI工具或QMT量化交易平台进行实盘交易的具体步骤,并强调实盘交易的风险,提供压力测试、资金隔离和监控告警的最佳实践。

订单代理机制

Hikyuu的订单代理(Broker)机制是连接量化策略与真实交易执行的桥梁。其核心设计是通过一个包装类 OrderBrokerWrap 来适配不同的交易接口,从而实现策略逻辑与具体交易执行的解耦。

邮件订单代理 (broker_mail.py)

邮件订单代理是一种低风险的实盘交易集成方式,它不直接执行交易,而是通过发送电子邮件来通知用户执行交易操作。

  • 工作原理:当策略生成买入或卖出信号时,MailOrderBroker 类会连接到指定的SMTP服务器,并向预设的接收者邮箱列表发送一封格式化的邮件。
  • 配置参数
    • host: SMTP服务器地址(如:smtp.163.com)。
    • sender: 发件人邮箱地址。
    • pwd: 发件人邮箱密码或授权码。
    • receivers: 接收者邮箱地址列表。
  • 消息格式
    • 买入邮件:标题为“【Hkyuu提醒】买入 证券代码”,内容为“买入:证券代码,价格:买入的价格,数量:买入数量”。
    • 卖出邮件:标题为“【Hkyuu提醒】卖出 证券代码”,内容为“卖出:证券代码,价格:卖出的价格,数量:卖出数量”。
  • 使用场景:适用于希望手动确认交易的用户,或者作为自动化交易前的过渡方案,以降低误操作风险。

EasyTrader订单代理 (broker_easytrader.py)

EasyTrader订单代理旨在与华泰等券商的客户端进行集成,实现更接近自动化的交易流程。

  • 工作原理EasyTraderOrderBroker 类接收一个已登录的easytrader客户端实例。当策略发出交易信号时,该代理会将交易计划(如买入、卖出)打印到控制台,并记录在内部缓冲区中,但默认情况下不会实际下单
  • 关键设计:代码中明确注释了 self.user.buy()self.user.sell() 方法,并提示“注意:buy|sell 中已屏蔽实际通过easytrade下单,防止调试误操作,请自行根据需要打开”。这体现了对实盘交易安全性的高度重视。
  • 资产信息获取:该代理可以调用 get_asset_info() 方法,从easytrader实例中获取当前的现金余额和持仓信息,并将其格式化为一个包含日期、现金和持仓列表的字典返回,这对于策略的动态调整至关重要。
  • 使用场景:适用于希望实现半自动化或全自动化交易的高级用户,但在启用实际下单功能前,必须经过严格的测试和风险评估。

Section sources

  • broker_mail.py
  • broker_easytrader.py

实盘交易参数配置

正确配置实盘交易参数是确保系统稳定运行的基础。Hikyuu主要通过配置文件 hikyuu.iniimportdata-gui.ini 来管理这些参数。

核心配置文件

  • hikyuu.ini:位于用户主目录下的 .hikyuu 文件夹中,是Hikyuu的核心配置文件。
  • importdata-gui.ini:位于同一目录下,主要用于GUI工具的数据导入配置。

关键配置项

  1. 数据存储路径
    • datadir: 指定HDF5、MySQL或ClickHouse等数据的根目录。
    • tmpdir: 指定临时文件目录。
  2. 行情数据源
    • quotation_server: 指定实时行情服务器的地址,如 ipc:///tmp/hikyuu_real.ipc
  3. 数据库配置
    • 根据选择的数据库类型(HDF5、MySQL、ClickHouse),配置相应的连接信息,如主机地址、端口、用户名和密码。
  4. 交易账户与API密钥
    • 这些敏感信息通常不在Hikyuu的配置文件中直接存储。对于 easytrader,用户需要在自己的Python脚本中创建并登录 easytrader 实例,然后将其传递给 EasyTraderOrderBroker。对于邮件代理,邮箱的密码或授权码需要在 MailOrderBroker 的初始化参数中提供。
  5. 风险控制开关
    • 虽然没有一个名为“风险控制开关”的单一参数,但风险控制是通过多个层面实现的。例如,在 EasyTraderOrderBroker 中,默认屏蔽实际下单就是一个重要的风险控制开关。用户需要显式地修改代码来启用它。

Section sources

  • hku_config_template.py
  • HikyuuTDX.py

使用GUI工具进行实盘交易

HikyuuTDX是Hikyuu项目提供的图形化用户界面工具,可以简化实盘交易的配置和启动过程。

启动与配置

  1. 启动HikyuuTDX:运行 HikyuuTDX.py 脚本,启动GUI应用程序。
  2. 配置数据源:在GUI的“数据导入”选项卡中,选择数据来源(如通达信本地文件、pytdx网络下载)和目标存储(HDF5、MySQL等),并设置相应的路径和数据库连接信息。
  3. 配置行情采集:在“行情采集服务”选项卡中,设置实时行情的采集频率、采集时间段和数据源(如新浪、腾讯)。
  4. 保存配置:点击“保存”按钮,将所有配置信息写入 importdata-gui.ini 文件。

启动实盘交易

  1. 启动行情采集:在GUI中点击“启动”按钮,开始实时行情的采集。这会将实时数据发布到 quotation_server 指定的地址。
  2. 运行策略脚本:用户需要编写一个独立的Python脚本,该脚本会:
    • 加载回测通过的策略。
    • 创建并配置一个订单代理实例(如 MailOrderBrokerEasyTraderOrderBroker)。
    • 将策略与订单代理关联。
    • 订阅 quotation_server 上的实时行情,并在收到新数据时驱动策略运行。
  3. 监控与执行:策略脚本会持续运行,根据实时行情生成交易信号,并通过订单代理执行(或通知)交易。

Section sources

  • HikyuuTDX.py
  • importdata.py

使用QMT进行实盘交易

QMT(Quantitative Trading Platform)是国金证券提供的量化交易平台,Hikyuu提供了与之集成的方案。

集成方案

Hikyuu通过 start_qmt.py 脚本与QMT进行集成。该脚本利用 xtquant 库(QMT的Python API)来获取实时行情。

操作步骤

  1. 启动QMT交易终端:首先在本地计算机上启动并登录QMT交易终端。
  2. 运行 start_qmt.py:执行 start_qmt.py 脚本。该脚本会:
    • 读取 hikyuu.ini 配置文件。
    • 使用 xtdata.get_full_tick() 函数从QMT获取全市场或指定股票的实时行情。
    • 通过 hikyuu.gui.spot_server 模块,将获取到的行情数据以IPC(进程间通信)的方式发布到 quotation_server 指定的地址。
  3. 运行策略脚本:与使用GUI工具类似,用户需要运行一个独立的策略脚本,该脚本订阅 quotation_server 上的行情,并驱动策略执行。
  4. 执行交易:当策略生成信号时,如果使用了 EasyTraderOrderBroker 且已配置华泰账户,或使用了其他支持QMT下单的代理,则可以实现自动化交易。

Section sources

  • start_qmt.py
  • zh_stock_a_qmt.py

实盘交易风险与最佳实践

实盘交易涉及真实资金,风险极高。必须遵循严格的最佳实践来保障资金安全。

主要风险

  • 策略失效风险:回测表现良好的策略在实盘中可能因市场变化、滑点、交易成本等因素而失效。
  • 技术故障风险:网络中断、程序崩溃、硬件故障等都可能导致交易失败或错误。
  • 操作失误风险:配置错误、代码bug等可能导致非预期的交易行为。

最佳实践

  1. 压力测试
    • 在部署到实盘前,必须在不同市场环境下(牛市、熊市、震荡市)对策略进行充分的回测和压力测试。
    • 使用 TestOrderBroker 这样的测试代理,可以在不产生真实交易的情况下,验证策略的完整交易逻辑。
  2. 资金隔离
    • 永远不要将所有资金投入一个策略。应使用独立的、小额的账户进行实盘测试。
    • 建议将策略账户与个人主要资金账户完全隔离。
  3. 监控告警
    • 实时监控:持续监控策略的运行状态、交易日志和账户资金变化。
    • 告警机制:建立告警系统。Hikyuu的日志系统(util/mylog.py)支持多种日志级别(hku_info, hku_warn, hku_error)。可以配置脚本在出现 WARNINGERROR 级别的日志时,通过邮件、短信等方式发送告警。
    • 熔断机制:在策略中设置最大回撤、最大单日亏损等硬性指标,一旦触发,立即停止交易。

Section sources

  • broker.py
  • mylog.py

结论

将Hikyuu的回测策略安全地部署到实盘环境,需要一个系统化的方法。核心在于理解并正确配置订单代理机制,无论是通过邮件通知还是与 easytrader 集成。用户必须仔细配置所有实盘参数,并优先考虑使用HikyuuTDX或QMT等工具来稳定地提供实时行情。最重要的是,必须将风险管理放在首位,通过压力测试、资金隔离和完善的监控告警系统来保护投资。切记,实盘交易是“真金白银”的考验,任何自动化决策都应建立在充分的验证和严格的风险控制之上。

Clone this wiki locally