AI量化知识树

高阶技巧-如何计算过去N日指标1最大值当天指标2的值

由iquant创建,最终由iquant 被浏览 235 用户

简介

以计算过去20日最高价当天的成交量为例,介绍如何计算这种场景的需求。

主要函数介绍

m_imax()

这里我们将使用到DAI的SQL函数m_imax,该函数可以帮助我们获得过去某个时间段的最大值的窗口索引。

例如,通过m_imax(open, 5) AS re_index来看看这个函数的使用效果,该语句获取了过去5天内最高的开盘价的索引,我们以‘000002.SZ’为例,查看该语句提取的数据。

df = m2.data.read()
df[df['instrument'] == '000001.SZ'].head(10)

可以看到,当处于2024-01-08时,过去五天开盘价的最高值出现于2024-01-02,按照索引从0开始,因此该天的re_indx为0;同理,当位于2024-01-15时,过去五天的开盘价最高值出现于2024-01-10,因此该天的re_index为1。

m_lag()

此外我们还将使用到DAI的SQL函数m_lag,该函数可以帮助我们获得过去某天的值。

例如m_lag(open, 1)就是获取前一天的开盘价。

具体步骤

1、通过m_imax(high, 20) AS re_index获取过去20天最高价的最大值的索引

2、由于该索引从0开始,且顺序排列,和m_lag()的使用有所差别,因此我们需要通过语句20 - _re_index -1 AS max_index将re_index转换为m_lag可以使用的索引max_index,即该天是过去第几天。

3、使用m_lag(amount, max_index) AS result获取该天的成交量。

代码

https://bigquant.com/codesharev2/89d497a0-d171-4d88-a286-c1e57c3b35b7

\

标签

数据分析
评论
  • 老师,你这个是获取过去N日内某个X的最大值。 如果是获取未来呢?比如,产生某个信号后,第二天开盘买入, 如果第三天收盘卖出, 盈利的可能性大概60%, 但是,如果是未来5天内最高的收盘价那天卖出, 可能盈利的几率增大到80%。所以,有没有办法找出未来N日内X 的最大值呢?
{link}