粉丝415获赞1180

哈喽,大家下午好呀,我是麻辣虾人,前段时间给大家介绍了 q m t 基础的系列课程,想必大家已经搭建了 q m t 的环境,并且已经能够写第一个单据线策略。今天我们就进入 q m t 的终极课程,介绍 q m t 量化交易策略常用到的 a p i。 函数详细用法以及例子。 我们先来回顾一下写一个量化交易策略的流程,首先从一个想法出发,有了这个想法以后,我们就可以转化为量化交易策略。 写电话交易策略,首先你必须去获取的行情,然后根据行情计算相应的技术指标,然后根据指标来判断是否满足开瓶销商的条件,如果满足则进行相应的开瓶仓操作。我们可以看到获取行情在策略中是非常重要,并且是 必不可少的部分。今天我就来给大家介绍如何获取行情。大家都知道行情其实包括两种,历史行情和实时行情,历史行情用于计算指标,实时行情用于策略触发。 qmt 有三个函数来获取实时和历史行情。首先给大家介绍如何获取实时行情, qmt 提供实时行情股票接口 get fortick。 我们先来看一下函数的文档, 这个函数是上下文对象 contest info 的乘余函数,大家在调用的时候一定要记得加上 contest info 点 get fortic, 很多新手朋友在调用的时候经常会忘记前面要加 contest info 点官方文档。写到这个函数主要的目的是用 获取最新的分比数据,并且只能获取最新的分比,不能获取历史行情,意思是这个函数只能获取实时行情,不能获取历史行情。 这里文档写的分比行情,也就是我们说的 tik 行情数据,就是我们在行情软件里看到的最高价、最低价、最新价成交量,买一到买五,卖一到卖五。 接下来我们来看一下这个函数的参数,这个函数的参数很简单,只有一个参数, so coco 的,这是一个列表, 就算你只获取一个股票代码的行情,也是需要传入一个列表,列表里面是股票代码,这里需要注意一下,里面的股票代码其实是需要加上后 税的,比如说上交所的股票,那就是代码加上点 s h, 比如说浦发银行,那就是六零零零零零点 s h, 深圳就是要末尾加上点 s 子 z。 接下来我们看一下这个函数的返回值,这个函数返回一个字典,字典的键为股票代码,字典里面存的就是最新的行情数据,包括最新价、开盘价、最高价、最低价 盘口数据。接下来我来用代码给大家演示一下这个函数的用法。这里我写了一个简单的测试策略,我们来获取平安银行的实时行情,把返回值复制给 cot, 然后打印,我们点击运行,看 下运行结果如何,因为我们是盘后运行的,因此获取的都是同一个数值。接下来我们来看一下如何获取实施行情。 首先拿到这个股票代码的行情数据,然后再拿到最新价,其他的一些字段我就不跟他大家演示了,其实跟获取最新价的非常类似。 好了,接下来给大家介绍两个获取历史行情的函数,首先第一个是 get history date, 我们还是先看一看官方文档, 这个函数主要是获取历史行情的,但是获取的股票代码必须在 contest info 点 c 的 universe 来设置股票池中的股票代码,这个函数获取的 是股票池代码的历史行情。接下来我们来看一下函数的参数,这里有三个必停的参数,分别是历史行情的长度 n, 获取行情的周期 palod, 这里可以获取多个周期的行情,包括不同长度的分钟线, 日线、周线等等。注意,这里其实是获取不了 tik 的历史行情的,大家注意,虽然说这个文档里写了,但是获取不了。 接下来是获取的字段 failed 就是该高低收, 这里注意一下这个函数一次性只能获取一个字段的值,如果你要获取多个字段的值,那可能就需要多次调用这这个函数。接下来是两个默认的参数,分别是复权方式, 包括全复全后复全等等,默认是不复全的,然后是停牌,是否使用停牌前的数据做填充,默认是填充的。函数的返回值呢?是一个字典,字典的键是股票的代码,直视股票的行情 是一个列表。接下来我来给大家演示一下这个函数的用法。这里我们获取五天的收盘价数据,因此传入五一 d 和 clouds, e, d 代表一天, cloud 代表收盘价,然后得到返回值。返回值是一个字典,字典里的历史行情是英尼特函数里面设置的股票池的代码的行情。这里我们来获取美的集团的历史行情,然后打印出来,点击运行, 我们可以看到日志里打印了美的集团五天的收盘价数据。 接下来我们看一下最后一个获取历史行情的函数 get market data。 这个函数稍微比较复杂一点,但是斜实现的功能也比较多一些,我们来还是先看一下官方文档。 这个函数的作用是获取历史行情,然后看看函数的参数,这个参数比较多,我给大家介绍几个核心的参数。第一个 feels 是自断的列表,注意这里是自断的列表,意思是一次性可以获取多个自断的数据,比如一次性可以获取开收低高的数据。第二个自断 stock code 是股票列表,这里也是列表, 意思是一次性可以获取多个股票的行情。接下来是获取股票历史行情的开始时间 sat time 和结束时间 end time l 的默认获取历史航天的周期,包括各个类型的分中线和日线都可以。 最后是历史行情的长度 count, 这里需要注意一下,如果 start time and time 和 count 三个同时设置的话,可能会有冲突。 pmt 的处理方法是以 count 和 end time 为准。 接下来我们来看一下函数的返回值,这个函数也会根据参数的不同返回不同的数据。当我们获取一个字段、一个股票和一个时间点的数据时,得到的是一个浮点数。当获取多个字段、 一个股票,一天的值得到的是一个 sellers。 获取多个字段,一个股票多个时间点,则得到的是一个 data frame。 当获取多个字段、多个股票一个时间点,得到的也是一个 data frame。 多个字段,多个股票代码,多个时间点,则得到的是一个 panel 对象。 接下来我给大家演示一下这个函数的用法。这里我给大家演示最复杂的场景,就是多个股票,多个字段和多个时间点。这里我们获取平安银行和浦发银行开盘收盘最高最低价 三天的历史行情。我们先把返回值打印出来看一下,可以看到这是一个 panel, 是一个 二乘三乘四的判断。接下来我们打印平安银行的数据,我们可以看到日志打印出来平安银行三天的开收低高的历史行情。 我们可以发现这个函数的功能很强大,它跟 get history debt 函数最大的区别是, get history debt 是获取股票池中股票的某段行情, 用于计算一些比较简单的一些指标。而 get market debt 可以获取任意的股票行情,可以一次性获取多个字段的行情, 还可以获取任何时间段的行情,可用于复杂的计算。好了,今天我们的视频就到这里,关注我带你了解不一样的量化。

哈喽,大家下午好呀,我是麻辣虾人,上几节课给大家介绍了如何回测以及如何实判交易。接下来我带领大家完成一个最基本的单均线策略。但是如果我直接给大家介绍交易策略, 大家可能听不明白,因此我首先给大家介绍组合成一个策略,最基本的 api 函数。 因为 qmt 提供了很多内置的函数,大家看的可能眼花缭乱,为了快速入门,所以我就只给大家介绍几个基本函数。介绍完函数以后,大家就可以将函数组合成一个最基本的量化交易策略。 在介绍 api 函数之前,我们来回顾一下单均线策略的基础逻辑,当股票的价格大于某根均线时则买入。当 股票的价格小于某根均线时则卖出。我们把这个策略拆解一下,首先我们要选择操作哪只股票,其次去获取这个股票的行情,还得获取股票的历史行情,用于计算均线, 因为涉及到股票下单,因此还得获取账户的资金。最后还涉及到股票的实际下单。 我们将把策略拆解开来,大概策略的逻辑就很清晰了。我们将文字转化为 qmp 的代码语言,首先操作哪只股票,转化为 qmp 的语言就是订阅股票 set universe。 这个函数的意思是告诉我们策略要操作哪些股票,它的参数是一个列表,里面就是股票的代码。我们来看一下这个势力 参数,里面是两个股票代码,我们可以看到代码后面还有后缀,点 s h 代表上海,点 s z 代表深圳。因为在 a 股市场,两个交易所有些代码是有重复的,你就比如说零零零零一, 在上交所就代表上传主数,在深交所就代表平安银行,大家在写策略的时候要注意这一点。 接下来是获取股票行情和历史行情,这里我们调用 kmp 的函数 get history date 来获取股票的历史行情。这个函数有几个参数,第一个愣是历史数据的长度, 比如我们要获取五十根 k 线行情,那就传入五十。第二个拍落的参数是历史数据的周期,你可以选择日线、 不同长度的分钟线、周线、月线等等。第三个参数 feel 代表数据类型,一般开线都有开盘价,收盘价、最高价、最低价,你可以自由进行选择。 低于点的 tap 代表负权类型,默认是不负权的,当然我们也可以传前负权后负权这些。 skip post 代表停牌期间是否用停牌前的行情进行填充, 默认是填充的。这个函数的返回值是一个字,典件呢是股票的代码值,是股票的行情。我们可以看到 这个获取股票行情的函数,他的参数是没有传股票代码的原因是之前我们订阅了股票,获取的就是订阅的股票池的历史 行情数据。接下来是获取账户资金的函数,这也是一个非常重要的函数,这个函数可以获取账户的资金,持仓、委托、成交等等函数。第一个参数是资金账号, 第二个参数是账户类型,可以是股票、期货等等。第三个参数是数据类型,比如是账户还是持仓,委托还是成交。函数返回的是一个列表,列表里面是某个数据类型的对象。 第三个参数传了什么,则返回的什么数据类型。最后介绍一下股票下单函数 q m t, 里面有很多下单函数,我就给大家介绍一个最基本的下单函数, old talkat value, 这个函数叫指定 目标价值交易,顾名思义就是把仓位调整到某个价值,这个函数很适合用于对股票值进行调仓。我们来看一下函数的参数,第一个 stock code 是股票代码,第二个它 y 柳是目标价值,就是将股票市值调整到多少, 然后是价格类型,包括最新价,买一价等等。最后还有固定的两个参数, context info 和资金账号。 好了,一个最基本的单键键策略要用到的 kmt 基本函数就到这里,大家是不是觉得很简单呢?只需要 kmt 四个基本函数就能实现一个最简单的策略。 后续我们可以看到这几个,或者说这几类基本函数就能满足我们策略大部分的需求,大家有兴趣的话可以把这几个函 说的文档好好的读一读。下一个视频我会给大家介绍,将这几个函数组合起来,就变成了一个完整的有血有肉的策略。今天的视频就到这里,视频如有帮助还请点赞关注,谢谢!

我们已经掌握了如何利用 ez xt 获取和处理市场数据,这是量化交易的基石。今天,我们将深入探讨交易 api 的 使用,这正是实现自动化交易的核心所在。 我们将一步步带您了解如何通过 ez xt 进行下单、撤单以及查询账户信息等关键操作。 在深入细节之前,让我们快速回顾一下 e z xt 的 价值定位。它本质上是驯头 q m t 的 一个强大扩展,只在解决原生 q m t 接口复杂、学习曲线陡峭的问题。 通过提供一套简洁易用的 python api, e z xt 显著降低了量化交易的门槛,让策略从想法到落地变得更加高效。 更重要的是,这是一个开源项目,意味着他在社区的持续贡献下不断进化,为专业人士提供了更强大的工具箱。要开始任何交易操作,第一步永远是建立连接,这就像你要打电话得先拨通号码一样。 在 ez xt 中,初识化交易服务是整个流程的基石。你需要导入 ez xt 模块,然后创建一个 api 实力,接着调用 innata data 和 innata trade 的 方法,分别连接数据服务和交易服务。 这里有个小贴士,确保你的 python 脚本能正确找到。 easyxt 模块通常意味着将项目根目录添加到 cs dot path 中,或者将文件放在正确的位置, 如果路径不对,后续所有操作都会卡壳。连接成功后,下一步就是明确你要用哪个账户进行交易。 这就好比你开了多个银行账户,每次取钱得指定是哪个卡。在 easyxt 里,你需要提供你的 qmt 客户端中的实际账户 id 以及账户类型,比如股票账户 lock 或融资融券账户 credit。 调用 add account 方法传入这两个参数,如果返回 success 为初,就说明账户添加成功,可以开始下一步操作了。这个步骤非常基础,但却是后续所有交易指令生效的前提。 现在我们来看最直接的交易方式,试驾单。顾名思义,试驾单就是以当前市场上最好的价格立即成交。 它的核心特点就是快。当你需要迅速买入或卖出,对价格不那么敏感时,比如捕捉突发新闻后的市场反应,或者执行高频策略,试驾单是首选。 在 e c x t 中下单时,只需将 price 参数设为零,并指定 price type 等于 market。 记住,追求速度的同时也要注意潜在的价格冲击风险,尤其是在流动性较差的标地上。 与试驾单追求速度不同,限价单则更注重价格控制。你可以设定一个目标价格,只有当市场价格达到或优于你设定的价格时,订单才会成交。 这就像你去超市买东西,心里有个预算,不会超过这个数。在 easy xt 中下单时,需要明确指定 price 参数为你期望的价格,并将 price type 设为 limit。 这种方式非常适合那些对成本敏感,希望在特定价位附近建仓或平仓的策略。 当然,价格是把双刃剑,设置过低可能导致无法成交,设置过高则可能错过机会。 交易并非一成不变,有时我们需要根据市场变化或策略调整来撤销之前的委托, 这就引出了撤单操作。无论是现价单因为价格迟迟不到而失效,还是因为策略逻辑发生改变,需要取消原有的交易计划?撤单都是一个必要的工具。 在 ez xt 中,使用看搜 order 方法传入账户 id 和需要撤销的订单 id 即可。需要注意的是,只有未成交或部分成交的订单 id 即可。需要注意的是,没有完全成交的订单自然无法撤回。 此外,车单操作本身也可能失败,比如网络问题或系统延迟,所以检查返回结果很重要。 在进行了一系列交易操作后,实时监控账户状态变得直观重要,这就像开车要看仪表盘,随时了解油量、速度等信息。 ez xt 提供了丰富的查询接口,帮助你全面掌握账户动态。 你可以用 get account asset 查看总资产、可用资金和持仓市值。用 get positions 获取详细的持仓列表。用 get orders 查询当前未成交的委托, 还有 gettrays 可以 查看历史成交记录。这些信息对于评估策略表现、管理风险和做出下一步决策都直观重要。对于需要更高效率和更复杂操作的场景, easyxt 提供了高级交易 api, 这就像从普通公路升级到了高速公路,性能大幅提升,其中两个核心功能是异步下单和批量操作。 要使用这些高级功能,你需要先创建 advanced trade api 的 实力,并通过 connect 方法连接交易服务。同样需要提供 qmt 的 user data 路径和绘画 id。 之后,别忘了用 id account 方法将你的交易账户添加到这个高级 api 实力中。 这些功能是为更复杂的交易策略和更高的执行频率设计的,让我们聚焦于异步下单这个高级特性。传统的同步下单方式就像你发个快递,必须等快递员上门取件并告知结果,期间你啥也干不了。 而异步下单则完全不同,你只需要提交订单,程序就继续往下跑,不需要等待交易所的回复。交易所那边处理完了,会通过一个叫做回调函数的机制通知你结果。 这种方式极大地提高了程序的执行效率,尤其适合需要快速发出大量订单的高频交易策略。 你可以把回调函数想象成快递到达时,快递员给你打的电话告诉你包裹到了。另一个强大的高级功能是批量下单。 如果你需要同时操作多只股票,比如进行组合调仓,或者执行网格交易策略,逐个下单,显然效率低下。批量下单允许你一次性提交多个订单,就向一次快递寄出多件物品。 这不仅减少了与交易服务器的通信次数,节省了时间,而且在很多实线中还具有原则性,即要么所有订单都成功提交,要么全部失败,避免了部分成交带来的混乱。 这对于需要精确控制多笔交易的策略来说,简直是福音。最后,但同样重要的是风险管理自动化交易威力巨大,但也伴随着风险。 ez xt 的 高级 api 允许你设置风险参数,为你的交易加上安全阀。 比如,你可以设定单只股票的最大持仓比例 max position ratio, 防止过度集中风险,可以限制单笔交易的最大金额。 max single order amount, 避免单词操作失误造成过大损失, 还可以预估并考虑滑点 slay 配置的影响。这些参数就像给你的交易策略装上了保险丝和刹车,确保在追求收益的同时能够有效控制潜在的风险。

哈喽,大家下午好呀,我是麻辣虾仁,上一个视频给大家介绍了如何安装与配置 qmt, 今天我给大家介绍 qmt 策略的基本框架以及第一个量化交易策略。首先我们在 qmt 上新建一个策略,我们点击策略列表下面的新建策略 hasn't really, 然后系统呢,就会给我们一个默认的策略,里面有策略的一个基本的框架,可以在这个策略的基础上编写自己的策略,或者说把这个框架删除 自己重新写都可以。我们来看一下这个基本的框架。首先框架包括三个部分,首先是最上方的拍散库导入,我们可以导 导入一些第三方库,比如说 pandas 按需填写的你的策略用到了哪些拍散库,你就可以导入哪些。这个是 kmp 策略必不可少的一个函数。 innit, 顾名思义就是 initial, 初始化的意思,在每写每个策略之前,我们都必须初始化策略的一些参数,比如说策略运行的一个股票池,策略的资金账号以及这两个买卖信号。 这个函数呢,在策略开始的时候只调用一次。然后接下来策略的第三部分框架是 handleba 函数,这个函数是我们策略逻辑的主要部分,也是在策略里面必不可少的。这个函数的运行 机制就是根据我们选择的 k 线, 每根 k 线都运行一次,我们的策略逻辑都可以写在这个函数当中。 比如说在这个默认策略里面,首先他去获取行情数据,然后呢通过行情数据来计算一些指标, 最后通过这些指标来学的第一个程序往往是学会如何写 hello word。 今天我们就在 qmt 上用 python 写一个输出 hello word 的程序,这里我们把默认的策略代码删除, 然后呢,我们在 init 函数里面打印一个 hello unit, 然后我们在 handleba 里面打印一个 hello handba, 这样呢我们就实现了一个最简单的策略,然后我们再点击左上角的,我们先保存,然后点击左上角的运行, 我们可以看一下左下角的日志。 首先函数是调用 e d 的函数,然后输出了 hello innit, 然后在每一根 k 线上都调用了 handle bug 函数,然后输出 handle bu, 我们可以看到 他输出了很多,因为他在每一根黑线上都运行了一次。我们可以看到这样我们就实现了一个最简单的哈喽沃的策略,这个策略里面没有买卖的逻辑,主要的目的是为了让大家熟悉颗粒策略的基本框架。好了,今天的视频就到这里点。

