迅投QMT官方文档及社区实践整理的详细教程

以下是根据迅投QMT官方文档及社区实践整理的详细教程,包含普通账户(股票)与信用账户(两融)的代码示例,关键功能均标注来源:


一、环境配置与账户初始化

# 引用网页1的初始化代码并扩展
from xtquant import xtdata, xttrader
from xtquant.xttype import StockAccount
import random

# 连接客户端(通用配置)
path = 'D:/QMT/userdata_mini'  # 客户端安装路径下的userdata_mini文件夹
session_id = random.randint(100000, 999999)
xt_trader = xttrader.XtQuantTrader(path, session_id)
xt_trader.start()
if xt_trader.connect() == 0:
    print("连接成功")

# 普通账户初始化
common_acc = StockAccount('123456789', account_type='STOCK')  # 普通股票账户
# 信用账户初始化
margin_acc = StockAccount('987654321', account_type='CREDIT')  # 两融账户

二、账户功能差异与核心接口

1. 账户权限查询
# 引用网页2的账户状态检查逻辑
def check_account(acc):
    account_info = xt_trader.query_account(acc)
    if account_info:
        print(f"账户类型:{'信用账户' if 'CREDIT' in str(acc) else '普通账户'}")
        print(f"可用资金:{account_info.cash} 可融资金额:{getattr(account_info, 'available_credit', 0)}")
    else:
        print("账户未登录")

check_account(common_acc)  # 普通账户无融资字段
check_account(margin_acc)   # 信用账户显示可用信用额度
2. 委托类型代码对照(关键差异)
操作类型普通账户代码信用账户代码来源
担保品买入2333
担保品卖出2434
融资买入-21
卖券还款-22

三、交易代码示例

普通账户买入示例
# 基于网页2的下单逻辑改造
def common_buy(stock_code, amount):
    order_id = xt_trader.order_stock(
        account=common_acc,
        stock_code=stock_code,
        order_type=xtconstant.STOCK_BUY,
        order_volume=amount,
        price_type=xtconstant.LATEST_PRICE,
        remark="普通账户买入"
    )
    print(f"普通账户委托编号:{order_id}")

common_buy('600000.SH', 100)  # 买入100股浦发银行
信用账户融资买入示例
# 引用网页2的信用账户特殊操作
def margin_buy(stock_code, amount):
    order_id = xt_trader.order_stock(
        account=margin_acc,
        stock_code=stock_code,
        order_type=xtconstant.MARGIN_BUY,  # 融资买入代码21
        order_volume=amount,
        price_type=xtconstant.LATEST_PRICE,
        remark="信用账户融资买入"
    )
    print(f"信用账户委托编号:{order_id}")

margin_buy('600519.SH', 200)  # 融资买入200股茅台

四、持仓与还款操作

1. 持仓查询差异
# 扩展网页2的持仓查询逻辑
def get_positions(acc):
    positions = xt_trader.query_stock_positions(acc)
    for pos in positions:
        print(f"证券代码:{pos.stock_code} 数量:{pos.volume} 类型:{'担保品' if pos.position_type==0 else '融资'}")

get_positions(common_acc)  # 普通账户只有担保品持仓
get_positions(margin_acc)   # 信用账户显示担保品和融资持仓
2. 卖券还款操作
# 信用账户特有功能
def repay_by_sell(stock_code, amount):
    order_id = xt_trader.order_stock(
        account=margin_acc,
        stock_code=stock_code,
        order_type=xtconstant.SELL_TO_REPAY,  # 卖券还款代码22
        order_volume=amount,
        price_type=xtconstant.LATEST_PRICE,
        remark="卖券还款"
    )
    print(f"还款委托编号:{order_id}")

repay_by_sell('600000.SH', 100)  # 卖出100股浦发银行用于还款

五、风险控制建议

  1. 委托状态管理
    需实现类似网页2的waiting_list机制,防止超单:

    pending_orders = {}  # 全局变量记录未完成委托
    
    def order_callback(order):
        if order.status == 3:  # 已成状态
            del pending_orders[order.order_id]
    
  2. 异常处理
    信用账户需特别注意维持担保比例:

    # 引用网页3的风险监控逻辑
    def check_risk_level(acc):
        risk_info = xt_trader.query_credit_risk(acc)
        print(f"维持担保比例:{risk_info.maintain_ratio}%")
    

完整策略示例(双账户轮动)

# 综合网页2和网页3的最佳实践
class DualAccountStrategy:
    def __init__(self):
        self.common_acc = common_acc
        self.margin_acc = margin_acc
        self.waiting_list = []

    def execute_cross_strategy(self, stock_code):
        # 检查普通账户持仓
        common_hold = self._get_position(self.common_acc, stock_code)
        # 信用账户趋势判断
        if self._check_trend(stock_code):
            if common_hold < 1000:
                self._common_buy(stock_code, 500)
            else:
                self._margin_buy(stock_code, 300)

:完整代码需配合QMT实盘权限使用,建议先在模拟环境测试。遇到委托状态异常时,务必参考网页3的本地状态存储方案。

<think>好的,用户想知道QMT支持的文件格式。我需要先回忆一下相关的引用内容。引用[1]提到使用xtdata.get_full_tick获取行情数据,生成DataFrame,可能支持pandas的数据结构,比如CSV、Excel等格式。引用[2]指出QMT支持的Python版本是3.6到3.8,并且有特定的.pyd文件,说明可能主要支持Python脚本。引用[3]提到小白量化模块在QMT上仿大智慧指标,可能涉及自定义指标文件,比如类似大智慧的公式文件。 另外,用户的问题可能隐含他们想导入数据或策略,比如CSV、Excel用于数据导入,Python脚本用于策略,或者特定金融指标文件。需要结合引用内容,整理QMT支持的文件格式,包括数据格式、策略脚本格式、配置文件等。可能还要提到第三方库如pandas支持的文件,因为引用[1]用了DataFrame,可能暗示CSV支持。此外,策略回测可能需要历史数据文件,比如HDF5、JSON等,但不确定是否有直接支持,可能需要通过Python处理。 需要确保回答覆盖数据文件、策略脚本、配置文件、指标文件等,并引用相关的地方。比如数据导入可能用CSV,策略用.py,指标可能有自定义格式,配置文件可能是INI或YAML,但引用中没有明确提到,可能需要推测。同时注意用户可能需要具体例子,比如代码中使用pd.read_csv,所以支持CSV。 最后,生成相关问题时要围绕文件格式、数据导入导出、策略开发、兼容性等方面提问。</think>QMT系统支持多种文件格式以满足量化交易需求,主要涵盖以下类型: 1. **Python脚本文件(.py)** QMT的核心策略开发基于Python,支持Python 3.6-3.8版本的脚本编写,例如策略回测、订单接口调用等[^2]。示例代码中可见通过`xtdata`模块获取行情数据: ```python data = xtdata.get_full_tick(a_index_etf) df = pd.DataFrame(data) ``` 2. **数据文件格式** - **CSV/Excel**:通过`pandas`库可直接读取结构化数据,如引用[1]中生成的`DataFrame`对象常用于处理CSV或Excel数据。 - **Tick/K线行情文件**:支持订阅实时行情数据并存储为系统内置格式,用于策略回测或分析[^1]。 3. **自定义指标文件** 用户可通过类似大智慧公式的语法编写技术指标,如引用[3]提到的仿大智慧指标回测设计,可能涉及自定义公式文件或配置文件。 4. **二进制依赖文件(.pyd)** QMT依赖特定版本的Python扩展模块,例如`IPythonApiClient.cp38-win_amd64.pyd`等二进制文件,用于接口调用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值