3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT (Quantitative Trading Platform) 中,实现融资买入(Margin Buy)和融券卖出(Short Sell)的核心在于使用 passorder 函数,并指定正确的操作类型参数 (opType)。
passorder 是 QMT 的综合下单函数。对于信用交易(两融),关键参数 opType 的取值如下:
此外,还有相关的还款还券操作类型(供参考):
以下是一个完整的策略示例,展示了如何在 handlebar 函数中进行融资买入和融券卖出。
# -*- coding: gbk -*-
def init(ContextInfo):
# 设置资金账号,注意:这里必须填写您的【信用账号】(两融账号)
# 格式通常为字符串
ContextInfo.credit_account = '88000001'
# 设置账号,用于接收交易回报
ContextInfo.set_account(ContextInfo.credit_account)
print("策略初始化完成,信用账号已设置")
def handlebar(ContextInfo):
# 获取当前K线索引
index = ContextInfo.barpos
# 获取当前时间
realtime = ContextInfo.get_bar_timetag(index)
# 示例:只在最后一根K线(实时行情)运行,避免回测时重复下单
if not ContextInfo.is_last_bar():
return
# --- 融资买入示例 ---
# 操作类型 27 代表融资买入
# 下单方式 1101 代表单股、单账号、普通、股数下单
# 报价类型 5 代表最新价
# 价格 -1 (当报价类型为最新价时,此参数无效,但需占位)
# 数量 100 股
opType_margin_buy = 27
orderType = 1101
stock_code = '600000.SH' # 浦发银行
price_type = 5 # 最新价
price = -1
volume = 100
print(f"尝试融资买入 {stock_code} {volume}股")
passorder(opType_margin_buy, orderType, ContextInfo.credit_account, stock_code, price_type, price, volume, ContextInfo)
# --- 融券卖出示例 ---
# 操作类型 28 代表融券卖出
opType_short_sell = 28
stock_code_short = '600036.SH' # 招商银行
print(f"尝试融券卖出 {stock_code_short} {volume}股")
passorder(opType_short_sell, orderType, ContextInfo.credit_account, stock_code_short, price_type, price, volume, ContextInfo)
在使用 passorder 进行两融交易时,请务必注意以下参数设置:
opType (操作类型):
27 进行融资买入(向券商借钱买股票)。28 进行融券卖出(向券商借股票卖出)。accountID (资金账号):
orderType (下单方式):
1101(单股、单账号、普通、按股数下单)。1102(按金额),但需注意两融交易通常对“手”有严格限制。prType (报价类型):
5 (最新价), 11 (指定价/模型价), 4 (卖一价), 6 (买一价)。query_credit_opvolume 接口查询最大可下单量。Q: 如何查询某个标的是否支持融资或融券?
A: QMT API 没有直接返回标的“是否属于两融标的”的布尔值接口,但可以通过 get_instrumentdetail(stockcode) 获取合约详情,或者直接调用 query_credit_opvolume 查询可买/可卖数量,如果返回数量为 0,可能是资金不足或非标的。
Q: 融资买入后如何偿还负债?
A: 可以通过 passorder 函数,将 opType 设置为 31 (卖券还款) 来卖出持仓偿还融资负债,或者设置为 32 (直接还款) 使用现金偿还。
Q: 融券卖出后如何了结?
A: 可以通过 passorder 函数,将 opType 设置为 29 (买券还券) 从二级市场买入股票归还,或者设置为 30 (直接还券) 使用现券归还。
Q: 为什么我的融券卖出废单了?
A: 常见原因包括:1. 该股票不是融券标的;2. 券商没有券源;3. 信用账户担保比例过低;4. 委托价格不符合交易所规定(例如融券卖出价格通常不得低于最新成交价)。