tqsdk.tafunc - 序列计算函数¶
-
tqsdk.tafunc.
ref
(series, n)¶ 简单移动: 求series序列位移n个周期的结果
- Args:
series (pandas.Series): 数据序列
n (int): 位移周期
- Returns:
- pandas.Series: 位移后的序列
Example:
pre_close = ref(klines.close, 1) # 将收盘价序列右移一位, 得到昨收盘序列 change = klines.close - pre_close # 收盘价序列 - 昨收盘序列, 得到涨跌序列
-
tqsdk.tafunc.
std
(series, n)¶ 标准差: 求series序列每n个项的标准差
- Args:
series (pandas.Series): 数据序列
n (int): 周期
- Returns:
- pandas.Series: 标准差序列
Example:
s = std(klines.close, 5) # 收盘价序列每5项计算一个标准差
-
tqsdk.tafunc.
ma
(series, n)¶ - 简单移动平均线: 求series序列每n个项的简单移动平均
- n包含当前k线
- 简单移动平均线将设定周期内的值取平均值, 其中各元素的权重都相等
- n为0的情况下, 或当n为有效值但当前的k线数不足n根, 函数返回空值
- 计算公式:
- ma(x, 5) = (x(1) + x(2) + x(3) + x(4) + x(5)) / 5
- Args:
series (pandas.Series): 数据序列
n (int): 周期
- Returns:
- pandas.Series: 标准差序列
Example:
ma5 = tafunc.ma(klines["close"], 5) # 求5周期收盘价的简单移动平均
-
tqsdk.tafunc.
sma
(series, n, m)¶ 扩展指数加权移动平均: 求series的n个周期内的扩展指数加权移动平均, m为权重
- 计算公式:
- sma(x, n, m) = sma(x, n, m).shift(1) * (n - m) / n + x(n) * m / n
- 例:
- sma = tafunc.sma(df["close"], 5, 2)
- 注:
- n为0或空值的情况下, 或当n为有效值但当前的k线数不足n根, 函数返回空值
-
tqsdk.tafunc.
ema
(series, n)¶ 指数加权移动平均线: 求series序列n周期的指数加权移动平均(平滑移动平均)
- 计算公式:
- ema(x, n) = 2 * x / (n + 1) + (n - 1) * ema(x, n).shift(1) / (n + 1)
- 例:
- ema = tafunc.ema(df["close"], 5) # 求收盘价5周期指数加权移动平均值
- 注:
- n包含当前k线
- 对距离当前较近的k线赋予了较大的权重
- n为0或空值的情况下, 或当n为有效值但当前的k线数不足n根, 函数返回空值
-
tqsdk.tafunc.
ema2
(series, n)¶ 线性加权移动平均: 求n周期series值的线性加权移动平均 (也称WMA)
- 计算公式:
- ema2(x, n) = [n * x(0) + (n - 1) * x(1) + (x - 2) * x(2) + ... + 1 * x(n - 1)] / [n + (n - 1) + (n - 2) + ... + 1]
- 例:
- ema2 = tafunc.ema2(df["close"], 5) # 求收盘价在5个周期的线性加权移动平均值
- 注:
- n包含当前k线
- n为0或空值的情况下, 或当n为有效值但当前的k线数不足n根, 函数返回空值
-
tqsdk.tafunc.
crossup
(a, b)¶ 向上穿越: 表当a从下方向上穿过b, 成立返回1, 否则返回0
- 例:
- crossup = tafunc.crossup(tafunc.ma(df["close"], 5), tafunc.ma(df["close"], 10))
-
tqsdk.tafunc.
crossdown
(a, b)¶ 向下穿越: 表示当a从上方向下穿b,成立返回1, 否则返回0
- 例:
- crossdown = tafunc.crossdown(tafunc.ma(df["close"], 5), tafunc.ma(df["close"], 10))
-
tqsdk.tafunc.
count
(cond, n)¶ 统计n周期中满足cond条件的周期数
- 例:
- 统计从申请到的行情数据以来到当前这段时间内, 5周期均线上穿10周期均线的次数: count = tafunc.count(tafunc.crossup(tafunc.ma(df["close"], 5), tafunc.ma(df["close"], 10)), 0)
- 注:
- n包含当前k线
- 如果n为0, 则从第一个有效值开始统计
- n为空值时返回值为空值
-
tqsdk.tafunc.
trma
(series, n)¶ 三角移动平均: 求series在n个周期的三角移动平均值
- 计算方法:
- 三角移动平均线公式, 是采用算数移动平均, 并且对第一个移动平均线再一次应用算数移动平均
- 例:
- trma = tafunc.trma(df["close"], 10)
- 注:
- n包含当前k线
- n为0或空值的情况下, 或当n为有效值但当前的k线数不足n根, 函数返回空值
-
tqsdk.tafunc.
harmean
(series, n)¶ 调和平均值: 求series在n个周期内的调和平均值
- 计算方法:
- harmean(x, 5) = 1 / [(1 / x(1) + 1 / x(2) + 1 / x(3) + 1 / x(4) + 1 / x(5)) / 5]
- 例:
- harmean = tafunc.harmean(df["close"], 5) # 求5周期收盘价的调和平均值
- 注:
- n包含当前k线
- 调和平均值与倒数的简单平均值互为倒数
- 当n为有效值, 但当前的k线数不足n根, 函数返回空值
- series或n为0或空值的情况下, 函数返回空值
-
tqsdk.tafunc.
numpow
(series, n, m)¶ 自然数幂方和
- 计算方法:
- numpow(x, n, m) = n ^ m * x + (n - 1) ^ m * x.shift(1) + (n - 2) ^ m * x.shift(2) + ... + 2 ^ m * x.shift(n - 2) + 1 ^ m * x.shift(n - 1)
- 例:
- numpow = tafunc.numpow(df["close"], 5, 2)
-
tqsdk.tafunc.
abs
(series)¶ 获取series的绝对值
- 例:
- abs = tafunc.abs(series)
- 注:
- 正数的绝对值是它本身, 负数的绝对值是它的相反数, 0的绝对值还是0
-
tqsdk.tafunc.
min
(series1, series2)¶ 获取series1和series2中的最小值
- 例:
- min = tafunc.min(series1, series2)
-
tqsdk.tafunc.
max
(series1, series2)¶ 获取series1和series2中的最大值
- 例:
- max = tafunc.max(series1, series2)
-
tqsdk.tafunc.
median
(series, n)¶ 中位数: 求series在n个周期内居于中间的数值
- 例1:
- median3 = tafunc.median(df["close"], 3) 假设最近3日的收盘价为2727, 2754, 2748, 那么当前median(df["close"], 3)的返回值是2748
- 例2:
- median4 = tafunc.median(df["open"], 4) 假设最近4日的开盘价为2752, 2743, 2730, 2728, 那么当前median(df["open"], 4)的返回值是2736.5
- 注:
- n个周期内所有series排序后, 若n为奇数, 则选择第(n + 1) / 2个为中位数, 若n为偶数, 则中位数是(n / 2)以及(n / 2 + 1)的平均数
-
tqsdk.tafunc.
exist
(cond, n)¶ 判断n个周期内, 是否有满足cond的条件, 若满足则值为1, 不满足为0
- 例:
- exist = tafunc.exist(df["close"] > df["high"].shift(1), 4) # 表示4个周期中是否存在收盘价大于前一个周期的最高价, 存在返回1, 不存在则返回0
-
tqsdk.tafunc.
every
(cond, n)¶ 判断n个周期内, 是否一直满足cond条件, 若满足则值为1, 不满足为0
- 例:
- every = tafunc.every(tafunc.ma(df["close"], 3) > tafunc.ma(df["close"], 5), 4) # 表示在4周期内, 3周期的简单移动平均是否一直大于5周期的简单移动平均
- 注:
- n包含当前k线
-
tqsdk.tafunc.
hhv
(series, n)¶ 求series在n个周期内的最高值
- 例:
- hhv = tafunc.hhv(df["high"], 4) # 求4个周期最高价的最大值, 即4周期高点(包含当前k线)
- 注:
- n包含当前k线
-
tqsdk.tafunc.
llv
(series, n)¶ 求在n个周期内的最小值
- 例:
- llv = tafunc.llv(df["low"], 5) # 求5根k线最低点(包含当前k线)
- 注:
- n包含当前k线
-
tqsdk.tafunc.
avedev
(series, n)¶ 平均绝对偏差: 求series在n周期内的平均绝对偏差
- 算法:
- 计算avedev(df["close"],3)在最近一根K线上的值: (abs(df["close"] - (df["close"] + df["close"].shift(1) + df["close"].shift(2)) / 3) + abs( df["close"].shift(1) - (df["close"] + df["close"].shift(1) + df["close"].shift(2)) / 3) + abs( df["close"].shift(2) - (df["close"] + df["close"].shift(1) + df["close"].shift(2)) / 3)) / 3
- 例:
- 计算收盘价在5周期内的平均绝对偏差, 表示5个周期内每个周期的收盘价与5周期收盘价的平均值的差的绝对值的平均值, 判断收盘价与其均值的偏离程度: avedev = tafunc.avedev(df["close"], 5)
- 注:
- 包含当前k线
- n为0时, 该函数返回空值