当前位置:首页>python>学习QMT量化系统——用python写一个简单的策略:如何进行一篮子买卖?

学习QMT量化系统——用python写一个简单的策略:如何进行一篮子买卖?

  • 2026-10-11 05:44:59
学习QMT量化系统——用python写一个简单的策略:如何进行一篮子买卖?

是新朋友吗?记得先点蓝字关注我哦~

QMT 就是个用代码自动炒股的工具,QMT的最大特点就是快和省心。QMT的速度快如何体现?

先看行情刷新速度,QMT用的是交易所标准的L1行情,每3秒刷新一次,和普通交易软件一样。比如你看盘口买卖档位,数据是3秒跳一次。

再看每秒下单数,QMT实测支持超过1000笔/秒的委托吞吐量。

最关键的是下单延迟极低,从策略发出买卖信号到订单送到交易所,通常就几十毫秒,比眨下眼快多了 —— 手动点鼠标下单得几百毫秒,这差距在抢单时特别明显。

QMT自动化更是省心,你把买卖规则写成 Python 代码(比如 “跌 3% 买,涨 5% 卖”),设好后它开盘自己启动,全程到条件就自动买卖,不需要自己盯着盘。

今天给大家分享一个QMT使用小技巧,用QMT编写一个python策略实现一篮子买卖!

什么是一篮子交易?

一篮子交易,简单说就是把多只股票(或其他证券)打包成一个 “组合包”,一次性完成批量买卖的操作。它就像超市里的 “套餐”,不用单个挑选结账,直接按套餐一键搞定,专业点说就是 “批量交易工具”。

举个最常见的例子:比如你想抄作业买 “白酒龙头组合”,里面有贵州茅台、五粮液、泸州老窖、山西汾酒这 4 只股票。正常操作得一个个输代码、填数量、点确认,要是手抖输错数量或者耽误了时间,可能买价就变了。但用一篮子交易,你可以提前把这 4 只股票放进 “篮子”,设定好每只买 100 股,然后点一下 “买入篮子”,系统就会同时给这 4 只股票下单,几秒钟全搞定。

再比如基金经理调仓:手里的基金要同时卖掉 3 只高估的股票,再买入 2 只低估的,用一篮子交易就能 “一键卖 3 只 + 一键买 2 只” 同步完成,避免手动操作时因为先后顺序导致的价格波动影响(比如先卖后买的间隙,想买的股票突然涨了)。

还有复制指数的时候,比如沪深 300 有 300 只成分股,想按比例买入对应的股票构建指数基金,靠手动根本不可能完成,一篮子交易就能按权重批量下单,快速对齐指数持仓。

核心好处就是:效率高,不用重复操作;同步性强,多只证券买卖几乎同时完成;误差小,避免手动输入错误。不管是个人投资者做组合投资,还是机构调仓,都能用得上。

QMT如何实现篮子交易?

一、操作页面概览

在qmt软件主界面,在左侧【交易】界面点击页面上方‘组合交易’,就可以看到篮子交易界面。

二、构建一个篮子

点击顶部菜单【组合交易】→【篮子管理】→【新建篮子】→【输入代码】或【直接导入股票篮子】→【建立篮子】

如果涉及个股不是特别多可以手动添加,如果做指数增强等有大量个股,可以批量导入篮子。如果是批量导入篮子,那就要注意格式。

三、篮子组合调整

导入篮子之后,在篮子管理这里还能调单个股票的权重这些信息。要是想按手里的资金量来买,那就调调每个股票占多少比例就行;但要是想按具体买多少股来下单,就得自己一个个输清楚每只股票要买的数量了。

  • 绝对权重:直接输入每只股票的金额占比

  • 相对权重:系统会自动按比例计算

四、篮子下单

买入交易面板可以对股票债券进行买入下单,交易参数有普通交易、算法交 易、智能算法三种,可以用多个账号对多个股票债券合约进行买入,买入交易方 式有“按组合股票数量”、“按组合股票权重”、“按账户可用”、“按总资产 比例”。 在下单面板中还添加了全选、反选按钮,快速选择全部标的或者部分标的。

QMT用python实现一篮子买卖

QMT中主要使用set_basket和passorder实现一篮子买卖

#coding:gbkimport timedef init(C):    table=[            {'stock':'600000.SH','weight':0.11,'quantity':100,'optType':23},  # 买600000            {'stock':'600028.SH','weight':0.11,'quantity':200,'optType':24},  # 卖600028        ]      basket={'name':'basket1','stocks':table}    set_basket(basket)    # 按篮子数量下单, 下2份 # 即下两倍篮子    pice = 2    # passorder(35,  #一键买卖            # 2101,  # 表示按股票数量下单 即篮子的quantity 参数            # account,            # 'basket1',  # 篮子名称            # 5, # 最新价下单            # 1,  # 价格,最新价时 该参数无效,需要填任意数占位            # pice, # 篮子份数            # '',2,'strReMark',C)    # # 或者下算法    # userparam={    # 'OrderType':1,  #表示要下算法    # 'PriceType':4, # 0表示 卖5价下单    # 'MaxOrderCount':12, # 最大委托次数    # 'SuperPriceType':0,  # 超价类型,0表示按比例    # 'SuperPriceRate':0,  # 超价2%下单    # 'VolumeRate':1,  # 单笔下单比率 每次拆10%    # 'VolumeType': 10,  # 单笔基准量类型    # 'SingleNumMax':1000000,  # 单笔拆单最大值    # 'PriceRangeType':0,  # 波动区间类型    # 'PriceRangeRate':1,  # 波动区间值    # 'ValidTimeType':1,  # 有效时间类型 1 表示按执行时间    # 'ValidTimeStart':int(time.time()),  # 算法开始时间    # 'ValidTimeEnd':int(time.time()+60*60),  # 算法结束时间    # 'PlaceOrderInterval':10, # 报撤间隔    # 'UndealtEntrustRule':5, # 未成委托处理数值 用卖5加挂单    # }    # algo_passorder(35, 2101, account, 'basket1', -1, -1, pice, '', 2, '普通算法', userparam, C)    # 按篮子权重下单    table=[            {'stock':'600000.SH','weight':0.4,'quantity':0,'optType':23}, # 40%            {'stock':'002339.SZ','weight':0.6,'quantity':0,'optType':24}, # 60%        ]    basket={'name':'basket2','stocks':table}    set_basket(basket)    # 按组合权重 总额10000元    money = 10000    # passorder(35,2102,account,'basket2',5,1,money,'',2,'strReMark',C)    # # 或者下算法    # userparam={    # 'OrderType':1,  #表示要下算法    # 'PriceType':4, # 0表示 卖5价下单    # 'MaxOrderCount':12, # 最大委托次数    # 'SuperPriceType':0,  # 超价类型,0表示按比例    # 'SuperPriceRate':0,  # 超价2%下单    # 'VolumeRate':1,  # 单笔下单比率 每次拆10%    # 'VolumeType': 10,  # 单笔基准量类型    # 'SingleNumMax':1000000,  # 单笔拆单最大值    # 'PriceRangeType':0,  # 波动区间类型    # 'PriceRangeRate':1,  # 波动区间值    # 'ValidTimeType':1,  # 有效时间类型 1 表示按执行时间    # 'ValidTimeStart':int(time.time()),  # 算法开始时间    # 'ValidTimeEnd':int(time.time()+60*60),  # 算法结束时间    # 'PlaceOrderInterval':10, # 报撤间隔    # 'UndealtEntrustRule':5, # 未成委托处理数值 用卖5加挂单    # }    # algo_passorder(35, 2102, account, 'basket2', -1, -1, money, '', 2, '组合算法', userparam, C)

第一个篮子叫 “basket1”,里面放了两只股票:

600000.SH(浦发银行),设置了要买(optType=23),数量是 100 股

600028.SH(中国石化),设置了要卖(optType=24),数量是 200 股

 “按篮子数量下单”,计划买 2 份 —— 意思就是按上面的数量翻倍,600000 买 200 股,600028 卖 400 股。这里可以用算法下单,比如拆成多次委托、设置买卖时间等。

接下来又弄了第二个篮子 “basket2”,这个是按权重来的:

600000.SH 占 40%(weight=0.4),要买
002339.SZ(积成电子)占 60%(weight=0.6),要卖
这里的 quantity 设为 0,因为不用填具体数量,靠权重算
总金额 10000 元,按这个权重分配 —— 意思就是 10000 块里,40% 的钱用来买 600000,60% 对应卖 002339 的金额。

如何开通QMT、miniQMT?

1、开通门槛
  • 目前券商限时入金10万就可以开通
2、佣金费率
  • 股票佣金无条件最低做到万0.854
福利1:低佣开量化
福利2:领取完整教程
福利3:添加量化讨论群
福利4:提供专业量化问题解答

福利5:量化工具安装使用教程、视频

福利6:极速柜台,量化投资者专用,速度微秒级

最新文章

随机文章