高阶技巧-如何计算过去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
\