From 0de983d3d5968de612609298bc5922ea36ca011f Mon Sep 17 00:00:00 2001 From: wangfeng Date: Tue, 7 Feb 2023 17:26:33 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E8=A1=A5=E5=85=A80=E7=BA=A7=E5=92=8C1?= =?UTF-8?q?=E7=BA=A7=E5=85=A8=E9=83=A8=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- formula/README.md | 54 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 16 deletions(-) diff --git a/formula/README.md b/formula/README.md index cdd2294..7d600ad 100644 --- a/formula/README.md +++ b/formula/README.md @@ -5,19 +5,41 @@ formula - [通达信指标公式函数大全](https://www.chanluns.com/tdxfun/) -| 函数名 | 功能 | 示例 | 固定参数 | 序列参数 | -|:---------|:---------------------|:------------------|:-----|:-----| -| ABS | 绝对值 | ABS(X) | [√] | [√] | -| REF | 引用N周期前的值 | REF(CLOSE, 5) | [√] | [√] | -| IF | 逻辑判断 | IF(CLOSE>10,1,0) | [√] | [√] | -| IFF | 逻辑判断 | IFF(CLOSE>10,1,2) | [√] | [√] | -| IFN | 逻辑判断 | IFN(CLOSE>10,1,2) | [√] | [√] | -| HHV | 计算N周期内最高 | HHV(HIGH,5) | [√] | [√] | -| LLV | 计算N周期内最低 | LLV(HLOW,5) | [√] | [√] | -| MAX | 计算AB最大值 | MAX(CLOSE,HIGH) | [√] | [√] | -| MIN | 计算AB最小值 | MIN(CLOSE,HIGH) | [√] | [√] | -| MA | 计算N周期的移动平均值, 简称均线 | MA(CLOSE,5) | [√] | [√] | -| SMA | 计算N周期的简单移动平均值 | SMA(CLOSE,5, 1) | [X] | [X] | -| STD | 计算N周期内的标准差 | STD(CLOSE,N) | [√] | [√] | -| SUM | 求总和, 如果N=0则从第一个有效值开始 | SUM(CLOSE,N) | [X] | [X] | -| BARSLAST | 上一次条件成立到当前的周期数 | BARSLAST(X) | [X] | [X] | +| 级别 | 函数名 | 功能 | 示例 | 固定参数 | 序列参数 | +|:----|:--------------|:---------------------------------------------------|:----------------------------------|:-----|:-----| +| 0 | ABS | 绝对值 | ABS(X) | [√] | [√] | +| 0 | REF | 引用N周期前的值 | REF(CLOSE, 5) | [√] | [√] | +| 0 | IF | 逻辑判断 | IF(CLOSE>10,1,0) | [√] | [√] | +| 0 | IFF | 逻辑判断 | IFF(CLOSE>10,1,2) | [√] | [√] | +| 0 | IFN | 逻辑判断 | IFN(CLOSE>10,1,2) | [√] | [√] | +| 0 | HHV | 计算N周期内最高 | HHV(HIGH,5) | [√] | [√] | +| 0 | HHVBARS | 求N周期内S最高值到当前周期数, 返回序列 | HHVBARS(HIGH,5) | [x] | [x] | +| 0 | LLV | 计算N周期内最低 | LLV(HLOW,5) | [√] | [√] | +| 0 | LLVBARS | 求N周期内S最低值到当前周期数, 返回序列 | LLVBARS(HLOW,5) | [x] | [x] | +| 0 | MAX | 计算AB最大值 | MAX(CLOSE,HIGH) | [√] | [√] | +| 0 | MIN | 计算AB最小值 | MIN(CLOSE,HIGH) | [√] | [√] | +| 0 | MA | 计算N周期的移动平均值, 简称均线 | MA(CLOSE,5) | [√] | [√] | +| 0 | DMA | S序列的动态移动平均, A作为平滑因子 | DMA(CLOSE,5) | [X] | [X] | +| 0 | EMA | S序列N周期的指数移动平均, α=/(1+com) | EMA(CLOSE,5) | [X] | [X] | +| 0 | SMA | 计算N周期的简单移动平均值 | SMA(CLOSE,5, 1) | [X] | [X] | +| 0 | WMA | S序列的N周期的加权移动平均值 | WMA(CLOSE,5) | [√] | [√] | +| 0 | STD | 计算N周期内的标准差 | STD(CLOSE,20) | [√] | [√] | +| 0 | SUM | 求总和, 如果N=0则从第一个有效值开始 | SUM(CLOSE,5) | [√] | [√] | +| 0 | CONST | 返回序列S最后的值组成常量序列 | CONST(CLOSE) | [X] | [X] | +| 0 | AVEDEV | 平均绝对差,序列与其平均值的绝对差的平均值 | AVEDEV(CLOSE,5) | [X] | [X] | +| 0 | SLOPE | S序列N周期回线性回归斜率 | SLOPE(CLOSE,5) | [X] | [X] | +| 0 | FORCAST | S序列N周期回线性回归后的预测值 | FORCAST(CLOSE,5) | [X] | [X] | +| 0 | LAST | 从前A日到前B日一直满足S条件,要求A>B & A>0 & B>=0 | LAST(CLOSE>REF(CLOSE,1),LOW,HIGH) | [X] | [X] | +| 1 | COUNT | COUNT(CLOSE>O,N),最近N天满足S的天数True的天数 | COUNT(CLOSE>LOW,5) | [X] | [X] | +| 1 | EVERY | EVERY(CLOSE>O,5),最近N天是否都是True | EVERY(CLOSE>LOW,5) | [X] | [X] | +| 1 | EXIST | EXIST(CLOSE>O,5),最近N天是否都是True | EXIST(CLOSE>LOW,5) | [X] | [X] | +| 1 | FILTER | FILTER函数,S满足条件后,将其后N周期内的数据置为0 | FILTER(CLOSE>LOW,5) | [X] | [X] | +| 1 | BARSLAST | 上一次条件成立到当前的周期数 | BARSLAST(X) | [X] | [X] | +| 1 | BARSLASTCOUNT | 统计连续满足S条件的周期数 | BARSLASTCOUNT(X) | [X] | [X] | +| 1 | BARSSINCEN | N周期内第一次S条件成立到现在的周期数 | BARSSINCEN(S,N) | [X] | [X] | +| 1 | CROSS | 判断向上金叉穿越,两个序列互换就是判断向下死叉穿越 | CROSS(MA(C,5),MA(C,10)) | [X] | [X] | +| 1 | LONGCROSS | 两条线维持一定周期后交叉,S1在N周期内都小于S2,本周期从S1下方向上穿过S2时返回1,否则返回0 | LONGCROSS(MA(C,5),MA(C,10),5) | [X] | [X] | +| 1 | VALUEWHEN | 当S条件成立时,取X的当前值,否则取VALUEWHEN的上个成立时的X值 | VALUEWHEN(S,X) | [X] | [X] | +| 1 | BETWEEN | S处于A和B之间时为真。 包括 AS>B | BETWEEN(S,A,B) | [X] | [X] | +| 1 | TOPRANGE | TOPRANGE(HIGH)表示当前最高价是近多少周期内最高价的最大值 | TOPRANGE(HIGH) | [X] | [X] | +| 1 | LOWRANGE | LOWRANGE(LOW)表示当前最低价是近多少周期内最低价的最小值 | LOWRANGE(HIGH) | [X] | [X] | -- Gitee From 9f509f671d2fd640109a7b6398fc4d35ba80de00 Mon Sep 17 00:00:00 2001 From: wangfeng Date: Tue, 7 Feb 2023 17:26:49 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E8=A1=A5=E5=85=A80=E7=BA=A7=E5=92=8C1?= =?UTF-8?q?=E7=BA=A7=E5=85=A8=E9=83=A8=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- formula/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/formula/README.md b/formula/README.md index 7d600ad..ca84e14 100644 --- a/formula/README.md +++ b/formula/README.md @@ -25,7 +25,7 @@ formula | 0 | WMA | S序列的N周期的加权移动平均值 | WMA(CLOSE,5) | [√] | [√] | | 0 | STD | 计算N周期内的标准差 | STD(CLOSE,20) | [√] | [√] | | 0 | SUM | 求总和, 如果N=0则从第一个有效值开始 | SUM(CLOSE,5) | [√] | [√] | -| 0 | CONST | 返回序列S最后的值组成常量序列 | CONST(CLOSE) | [X] | [X] | +| 0 | CONST | 返回序列S最后的值组成常量序列 | CONST(CLOSE) | [X] | [X] | | 0 | AVEDEV | 平均绝对差,序列与其平均值的绝对差的平均值 | AVEDEV(CLOSE,5) | [X] | [X] | | 0 | SLOPE | S序列N周期回线性回归斜率 | SLOPE(CLOSE,5) | [X] | [X] | | 0 | FORCAST | S序列N周期回线性回归后的预测值 | FORCAST(CLOSE,5) | [X] | [X] | -- Gitee From ad165ce17cdccad33a69c12871108067b13ad14c Mon Sep 17 00:00:00 2001 From: wangfeng Date: Tue, 7 Feb 2023 17:36:20 +0800 Subject: [PATCH 3/3] =?UTF-8?q?#I6CYP7=20=E5=AE=9E=E7=8E=B0CONST=E5=87=BD?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- formula/README.md | 2 +- formula/const.go | 14 ++++++++++++++ formula/const_test.go | 14 ++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 formula/const.go create mode 100644 formula/const_test.go diff --git a/formula/README.md b/formula/README.md index ca84e14..e3aef98 100644 --- a/formula/README.md +++ b/formula/README.md @@ -25,7 +25,7 @@ formula | 0 | WMA | S序列的N周期的加权移动平均值 | WMA(CLOSE,5) | [√] | [√] | | 0 | STD | 计算N周期内的标准差 | STD(CLOSE,20) | [√] | [√] | | 0 | SUM | 求总和, 如果N=0则从第一个有效值开始 | SUM(CLOSE,5) | [√] | [√] | -| 0 | CONST | 返回序列S最后的值组成常量序列 | CONST(CLOSE) | [X] | [X] | +| 0 | CONST | 返回序列S最后的值组成常量序列 | CONST(CLOSE) | [√] | [ ] | | 0 | AVEDEV | 平均绝对差,序列与其平均值的绝对差的平均值 | AVEDEV(CLOSE,5) | [X] | [X] | | 0 | SLOPE | S序列N周期回线性回归斜率 | SLOPE(CLOSE,5) | [X] | [X] | | 0 | FORCAST | S序列N周期回线性回归后的预测值 | FORCAST(CLOSE,5) | [X] | [X] | diff --git a/formula/const.go b/formula/const.go new file mode 100644 index 0000000..935d321 --- /dev/null +++ b/formula/const.go @@ -0,0 +1,14 @@ +package formula + +import ( + "gitee.com/quant1x/pandas" + "gitee.com/quant1x/pandas/stat" +) + +// CONST 取S最后的值为常量 +func CONST(S pandas.Series) pandas.Series { + length := S.Len() + s := S.Float() + s = stat.Repeat(s[length-1], S.Len()) + return pandas.NewSeries(pandas.SERIES_TYPE_FLOAT32, "", s) +} diff --git a/formula/const_test.go b/formula/const_test.go new file mode 100644 index 0000000..b7bc7f4 --- /dev/null +++ b/formula/const_test.go @@ -0,0 +1,14 @@ +package formula + +import ( + "fmt" + "gitee.com/quant1x/pandas" + "testing" +) + +func TestCONST(t *testing.T) { + f0 := []float64{1, 2, 3, 4} + + s0 := pandas.NewSeriesWithoutType("f0", f0) + fmt.Println(CONST(s0)) +} -- Gitee