# 数学函数 TechKit 提供 26 个数学函数,用于价格变换、算术运算、聚合和三角函数计算。 --- ## 价格变换 ### AVGPRICE - 平均价格 计算开盘价、最高价、最低价和收盘价的平均值。 $$AVGPRICE = \frac{open + high + low + close}{4}$$ **输入**:OHLC **回看**:0 --- ### MEDPRICE - 中位价格 计算最高价和最低价的中位数。 $$MEDPRICE = \frac{high + low}{2}$$ **输入**:OHLC **回看**:0 --- ### TYPPRICE - 典型价格 计算典型价格(最高价、最低价和收盘价的平均值)。 $$TYPPRICE = \frac{high + low + close}{3}$$ **输入**:OHLC **回看**:0 --- ### WCLPRICE - 加权收盘价 计算加权收盘价,给予收盘价更大权重。 $$WCLPRICE = \frac{high + low + 2 \times close}{4}$$ **输入**:OHLC **回看**:0 --- ## 算术运算 ### ADD - 加法 逐元素相加两个输入数组。 $$ADD = value_1 + value_2$$ **输入**:两个收盘价数组 **回看**:0 --- ### SUB - 减法 逐元素从第一个输入中减去第二个输入。 $$SUB = value_1 - value_2$$ **输入**:两个收盘价数组 **回看**:0 --- ### MULT - 乘法 逐元素相乘两个输入数组。 $$MULT = value_1 \times value_2$$ **输入**:两个收盘价数组 **回看**:0 --- ### DIV - 除法 逐元素将第一个输入除以第二个输入。 $$DIV = \frac{value_1}{value_2}$$ **输入**:两个收盘价数组 **回看**:0 **注意**:如果分母为 0,返回 0 --- ## 聚合函数 ### MAX - 最大值 返回指定周期内的最大值。 $$MAX = \max(value[0..period-1])$$ **参数**: - `period` (int, 默认值: 30):周期数 **输入**:收盘价 **回看**:period - 1 --- ### MIN - 最小值 返回指定周期内的最小值。 $$MIN = \min(value[0..period-1])$$ **参数**: - `period` (int, 默认值: 30):周期数 **输入**:收盘价 **回看**:period - 1 --- ### SUM - 求和 返回指定周期内值的总和。 $$SUM = \sum_{i=0}^{period-1} value[i]$$ **参数**: - `period` (int, 默认值: 30):周期数 **输入**:收盘价 **回看**:period - 1 --- ### MAXINDEX - 最大值索引 返回周期内最大值的索引(多少根柱之前)。 **参数**: - `period` (int, 默认值: 30):周期数 **输入**:收盘价 **回看**:period - 1 **输出**:索引(0 = 当前柱,1 = 1 根柱之前,依此类推) --- ### MININDEX - 最小值索引 返回周期内最小值的索引(多少根柱之前)。 **参数**: - `period` (int, 默认值: 30):周期数 **输入**:收盘价 **回看**:period - 1 **输出**:索引(0 = 当前柱,1 = 1 根柱之前,依此类推) --- ### MINMAX - 最小值和最大值 返回周期内的最小值和最大值。 **参数**: - `period` (int, 默认值: 30):周期数 **输入**:收盘价 **输出**:两个值(最小值,最大值) **回看**:period - 1 **API 用法**: ```python from techkit import MINMAX minmax = MINMAX(period=30) result = minmax.update(price) if result.valid: print(f"Min: {result.min}, Max: {result.max}") ``` --- ### MINMAXINDEX - 最小值和最大值索引 返回周期内最小值和最大值的索引。 **参数**: - `period` (int, 默认值: 30):周期数 **输入**:收盘价 **输出**:两个值(最小值索引,最大值索引) **回看**:period - 1 --- ## 三角函数 ### SIN - 正弦 计算输入值的正弦值。 $$SIN = \sin(value)$$ **输入**:收盘价(视为弧度) **回看**:0 --- ### COS - 余弦 计算输入值的余弦值。 $$COS = \cos(value)$$ **输入**:收盘价(视为弧度) **回看**:0 --- ### TAN - 正切 计算输入值的正切值。 $$TAN = \tan(value)$$ **输入**:收盘价(视为弧度) **回看**:0 --- ### ASIN - 反正弦 计算输入值的反正弦(反正弦)。 $$ASIN = \arcsin(value)$$ **输入**:收盘价(必须在范围 [-1, 1] 内) **输出**:弧度 **回看**:0 --- ### ACOS - 反余弦 计算输入值的反余弦(反余弦)。 $$ACOS = \arccos(value)$$ **输入**:收盘价(必须在范围 [-1, 1] 内) **输出**:弧度 **回看**:0 --- ### ATAN - 反正切 计算输入值的反正切(反正切)。 $$ATAN = \arctan(value)$$ **输入**:收盘价 **输出**:弧度 **回看**:0 --- ## 双曲函数 ### SINH - 双曲正弦 计算输入值的双曲正弦。 $$SINH = \sinh(value) = \frac{e^{value} - e^{-value}}{2}$$ **输入**:收盘价 **回看**:0 --- ### COSH - 双曲余弦 计算输入值的双曲余弦。 $$COSH = \cosh(value) = \frac{e^{value} + e^{-value}}{2}$$ **输入**:收盘价 **回看**:0 --- ### TANH - 双曲正切 计算输入值的双曲正切。 $$TANH = \tanh(value) = \frac{\sinh(value)}{\cosh(value)}$$ **输入**:收盘价 **输出**:范围 [-1, 1] **回看**:0 --- ## 其他数学函数 ### CEIL - 向上取整 向上舍入到最近的整数。 $$CEIL = \lceil value \rceil$$ **输入**:收盘价 **回看**:0 --- ### FLOOR - 向下取整 向下舍入到最近的整数。 $$FLOOR = \lfloor value \rfloor$$ **输入**:收盘价 **回看**:0 --- ### EXP - 指数 计算 e 的输入次幂。 $$EXP = e^{value}$$ **输入**:收盘价 **回看**:0 --- ### LN - 自然对数 计算自然对数(底数为 e)。 $$LN = \ln(value)$$ **输入**:收盘价(必须 > 0) **回看**:0 --- ### LOG10 - 以 10 为底的对数 计算以 10 为底的对数。 $$LOG10 = \log_{10}(value)$$ **输入**:收盘价(必须 > 0) **回看**:0 --- ### SQRT - 平方根 计算输入值的平方根。 $$SQRT = \sqrt{value}$$ **输入**:收盘价(必须 >= 0) **回看**:0 --- ## 使用示例 ### 价格变换 ```python from techkit import AVGPRICE, TYPPRICE # Calculate average price avg = AVGPRICE() result = avg.update_ohlcv(open, high, low, close) # Calculate typical price typ = TYPPRICE() result = typ.update_ohlcv(open, high, low, close) ``` ### 算术运算 ```python from techkit import ADD, SUB, MULT, DIV # Add two price series add = ADD() result = add.update(value1, value2) # Subtract sub = SUB() result = sub.update(value1, value2) ``` ### 聚合 ```python from techkit import MAX, MIN, SUM # Maximum over 20 periods max_ind = MAX(period=20) result = max_ind.update(price) # Minimum min_ind = MIN(period=20) result = min_ind.update(price) # Sum sum_ind = SUM(period=20) result = sum_ind.update(price) ``` ### 三角函数 ```python from techkit import SIN, COS, ATAN # Sine (input in radians) sin = SIN() result = sin.update(angle_in_radians) # Arc tangent (output in radians) atan = ATAN() result = atan.update(price) angle_degrees = result.value * 180 / 3.14159 ``` --- ## 常见用例 1. **价格标准化**:使用 AVGPRICE 或 TYPPRICE 进行标准化价格分析 2. **价差分析**:使用 SUB 计算两个工具之间的价差 3. **比率分析**:使用 DIV 计算价格比率 4. **区间分析**:使用 MAX 和 MIN 识别支撑/阻力位 5. **数学变换**:使用三角函数进行周期分析 --- ## 相关指标 - **MIDPOINT**:周期内 (MAX + MIN) / 2 - **MIDPRICE**:周期内 (最高价 + 最低价) / 2 - **STDDEV**:标准差(内部使用方差) - **VAR**:方差(使用平方和)