https://github.com/toolgood/toolgood.tdxformula
https://github.com/toolgood/toolgood.tdxformula
Last synced: over 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/toolgood/toolgood.tdxformula
- Owner: toolgood
- License: mit
- Created: 2022-04-29T11:47:30.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2022-12-18T06:12:13.000Z (over 3 years ago)
- Last Synced: 2025-01-29T21:57:27.192Z (over 1 year ago)
- Language: C#
- Size: 2.93 MB
- Stars: 0
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ToolGood.TdxFormula
===================
支持递归
```
XXX(1)=REF(SELF,1)+1;
```
#### 行情函数
函数名说明
HIGH / H
返回该周期最高价.
用法: HIGH
LOW / L
返回该周期最低价.
用法: LOW
CLOSE / C
返回该周期收盘价.
用法: CLOSE
OPEN / O
返回该周期开盘价.
用法: OPEN
VOL / V
返回该周期成交量.
用法: VOL
AMOUNT / AMO
返回该周期成交额.
用法: AMOUNT
TURN / T
返回该周期换手率真。
用法: TURN
TR
求真实波幅.
用法: TR
INDEXA
返回对应的大盘成交额。
用法: INDEXA
INDEXC
返回对应的大盘收盘价。
用法: INDEXC
INDEXH
返回对应的大盘最高价。
用法: INDEXH
INDEXL
返回对应的大盘最低价。
用法: INDEXL
INDEXO
返回对应的大盘开盘价。
用法: INDEXO
INDEXV
返回对应的大盘成交量。
用法: INDEXV
#### 时间函数
函数名说明
DATE
取得该周期从1900以来的的年月日.
用法: DATE
例如函数返回1000101,表示2000年1月1日,DATE+19000000后才是真正的日期值,公式内容中请不要直接写8位长的日期数字
TIME
取得该周期的时分,适用于日线以下周期
用法: TIME 函数返回有效值范围为(0000-2359)
TIME2
取得该周期的时分秒,适用于日线以下周期.
用法: TIME2 函数返回有效值范围为(000000-235959)
YEAR
取得该周期的年份.
用法: YEAR
MONTH
取得该周期的月份.
用法: MONTH 函数返回有效值范围为(1-12)
DAY
取得该周期的日期.
用法: DAY 函数返回有效值范围为(1-31)
HOUR
取得该周期的小时数.
用法: HOUR 函数返回有效值范围为(0-23),对于日线及更长的分析周期值为0
MINUTE
取得该周期的分钟数.
用法: MINUTE 函数返回有效值范围为(0-59),对于日线及更长的分析周期值为0
WEEKOFYEAR
取得该周是年内第几个周.
用法: WEEKOFYEAR
WEEKDAY
取得该周期的星期数.
用法: WEEKDAY 函数返回有效值范围为(1,2,3,4,5,6,0)
DAYSTOTODAY
取得该周期的日期离今天的天数.
用法: DAYSTOTODAY
DATETODAY
指定日期到1990.12.19的天数.
用法: DATETODAY(date) 返回date到1990.12.19的天数.有效日期为(901219-1341231)
例如: DATETODAY(901219)返回0.
#### 引用函数
REF
引用若干周期前的数据.
用法: REF(X,A),引用A周期前的X值.A可以是变量.
例如: REF(CLOSE,BARSCOUNT(C)-1)表示第二根K线的收盘价.
REFV
引用若干周期前的数据(平滑处理).
用法: REFV(X,A),引用A周期前的X值.A可以是变量.
例如: REFV(CLOSE,BARSCOUNT(C)-1)表示第二根K线的收盘价.
MA
返回简单移动平均
用法: MA(X,N):X的N日简单移动平均,
算法(X1+X2+X3+...+Xn)/N,N支持变量
SMA
返回移动平均
用法: SMA(X,N,M):X的N日移动平均,M为权重,如Y=(X*M+Y'*(N-M))/N
TMA
返回移动平均
用法: TMA(X,A,B),A和B必须小于1,
算法 Y=(A*Y'+B*X),其中Y'表示上一周期Y值.初值为X
MEMA
返回平滑移动平均
用法: MEMA(X,N):X的N日平滑移动平均,如Y=(X+Y'*(N-1))/N
MEMA(X,N)相当于SMA(X,N,1)
EMA
返回指数移动平均
用法: EMA(X,N):X的N日指数移动平均.
算法:Y=(X*2+Y'*(N-1))/(N+1)
EMA(X,N)相当于SMA(X,N+1,2),N支持变量
EXPMA
与EMA的
用法一致
EXPMEMA
返回指数平滑移动平均
用法: EXPMEMA(X,N):X的N日指数平滑移动平均
EXPMEMA同EMA(EXPMA)的差别在于他的起始值为一平滑值
WMA
返回加权移动平均
用法: WMA(X,N):X的N日加权移动平均.
算法:Yn=(1*X1+2*X2+...+n*Xn)/(1+2+...+n)
DMA
求动态移动平均.
用法: DMA(X,A),求X的动态移动平均.
算法:Y=A*X+(1-A)*Y',其中Y'表示上一周期Y值,A必须大于0且小于1.A支持变量.
例如: DMA(CLOSE,VOL/CAPITAL)表示求以换手率作平滑因子的平均价
AMA
求自适应均线值.
用法: AMA(X,A),A为自适应系数,必须小于1.
算法: Y=Y'+A*(X-Y').初值为X
HHV
求最高值.
用法: HHV(X,N),求N周期内X最高值,N=0则从第一个有效值开始.
例如: HHV(HIGH,30)表示求30日最高价
HHVBARS
求上一高点到当前的周期数.
用法: HHVBARS(X,N):求N周期内X最高值到当前周期数,N=0表示从第一个有效值开始统计
例如: HHVBARS(HIGH,0)求得历史新高到到当前的周期数
LLV
求最低值.
用法: LLV(X,N),求N周期内X最低值,N=0则从第一个有效值开始.
例如: LLV(LOW,0)表示求历史最低价
LLVBARS
求上一低点到当前的周期数.
用法: LLVBARS(X,N):求N周期内X最低值到当前周期数,N=0表示从第一个有效值开始统计
例如: LLVBARS(HIGH,20)求得20日最低点到当前的周期数
HOD
求高值名次.
用法: HOD(X,N):求当前X数据是N周期内的第几个高值,N=0则从第一个有效值开始.
例如: HOD(HIGH,20)返回是20日的第几个高价
LOD
求低值名次.
用法: LOD(X,N):求当前X数据是N周期内的第几个低值,N=0则从第一个有效值开始.
例如: LOD(LOW,20)返回是20日的第几个低价
SUM
求总和.
用法: SUM(X,N),统计N周期中X的总和,N=0则从第一个有效值开始.
例如: SUM(VOL,0)表示统计从上市第一天以来的成交量总和
SUMBARS
向前累加到指定值到现在的周期数.
用法: SUMBARS(X,A):将X向前累加直到大于等于A,返回这个区间的周期数,若所有的数据都累加后还不能达到A,则返回此时前面的总周期数.
例如:SUMBARS(VOL,CAPITAL)求完全换手到现在的周期数
COUNT
统计满足条件的周期数.
用法: COUNT(X,N),统计N周期中满足X条件的周期数,若N<0则从第一个有效值开始.
例如: COUNT(CLOSE>OPEN,20)表示统计20周期内收阳的周期数
MULAR
求累乘.
用法: MULAR(X,N),统计N周期中X的乘积.N=0则从第一个有效值开始.
例如: MULAR(C/REF(C,1),0)表示统计从上市第一天以来的复利
CONST
CONST(A):取A最后的值为常量.
用法: CONST(INDEXC)表示取指数现价
BACKSET
属于未来函数,将当前位置到若干周期前的数据设为1.
用法: BACKSET(X,N),若X非0,则将当前位置到N周期前的数值设为1.
例如: BACKSET(CLOSE>OPEN,2)若收阳则将该周期及前一周期数值设为1,否则为0
BARSLAST
上一次条件成立到当前的周期数.
用法: BARSLAST(X):上一次X不为0到现在的周期数
例如: BARSLAST(CLOSE/REF(CLOSE,1)>=1.1)表示上一个涨停板到当前的周期数
BARSSINCE
第一个条件成立到当前的周期数.
用法: BARSSINCE(X):第一次X不为0到现在的周期数
例如: BARSSINCE(HIGH>10)表示股价超过10元时到当前的周期数
BARSSINCEN
N周期内第一个条件成立到当前的周期数.
用法: BARSSINCEN(X,N):N周期内第一次X不为0到现在的周期数,N为常量
例如: BARSSINCEN(HIGH>10,10)表示10个周期内股价超过10元时到当前的周期数
TOPRANGE
当前值是近多少周期内的最大值.
用法: TOPRANGE(X):X是近多少周期内X的最大值
例如: TOPRANGE(HIGH)表示当前最高价是近多少周期内最高价的最大值
LOWRANGE
当前值是近多少周期内的最小值.
用法: LOWRANGE(X):X是近多少周期内X的最小值
例如: LOWRANGE(LOW)表示当前最低价是近多少周期内最低价的最小值
FILTERX
反向过滤连续出现的信号.
用法:FILTERX(X,N):X满足条件后,将其前N周期内的数据置为0,N为常量.
例如: FILTERX(CLOSE>OPEN,5)查找阳线,前5天内出现过的阳线不被记录在内
FINDHIGH
N周期前的M周期内的第T个最大值.
用法: FINDHIGH(VAR,N,M,T):VAR在N日前的M天内第T个最高价
FINDHIGHBARS
N周期前的M周期内的第T个最大值到当前周期的周期数.
用法: FINDHIGHBARS(VAR,N,M,T):VAR在N日前的M天内第T个最高价到当前周期的周期数
FINDLOW
N周期前的M周期内的第T个最小值.
用法: FINDLOW(VAR,N,M,T):VAR在N日前的M天内第T个最低价
FINDLOWBARS
N周期前的M周期内的第T个最小值到当前周期的周期数.
用法: FINDLOWBARS(VAR,N,M,T):VAR在N日前的M天内第T个最低价到当前周期的周期数.
ZTPRICE
返回涨停价
用法: ZTPRICE(REF(CLOSE,1),0.1):按10%计算得到在昨收盘基础上的涨停价(对于复权序列K线,由于复权处理,根据前一天的收盘价计算结果可能与涨停价不符)
比如: ZTPrice(REF(QHJSJ,1),0.1),得到期货的涨停价
DTPRICE
返回跌停价
用法: DTPRICE(REF(CLOSE,1),0.1):按10%计算得到在昨收盘基础上的跌停价(对于复权序列K线,由于复权处理,根据前一天的收盘价计算结果可能与跌停价不符)
比如: DTPrice(REF(QHJSJ,1),0.6),得到期货的跌停价(跌停比例为0.6的话)
#### 逻辑函数
RANGE
RANGE(A,B,C):A在B和C范围之间,B用法: RANGE(A,B,C)表示A大于B同时小于C时返回1,否则返回0
BETWEEN
介于.
用法: BETWEEN(A,B,C)表示A处于B和C之间时返回1,B<A<C或C<A<B,否则返回0
例如: BETWEEN(CLOSE,MA(CLOSE,10),MA(CLOSE,5))表示收盘价介于5日均线和10日均线之间
CROSS
两条线交叉.
用法: CROSS(A,B)表示当A从下方向上穿过B时返回1,否则返回0
例如: CROSS(MA(CLOSE,5),MA(CLOSE,10))表示5日均线与10日均线交金叉
LONGCROSS
两条线维持一定周期后交叉.
用法:LONGCROSS(A,B,N)表示A在N周期内都小于B,本周期从下方向上穿过B时返回1,否则返回0
UPNDAY
返回周期数内是否连涨.
用法: UPNDAY(CLOSE,M) 表示连涨M个周期,M为常量
DOWNNDAY
返回周期数内是否连跌.
用法: DOWNNDAY(CLOSE,M) 表示连跌M个周期,M为常量
NDAY
返回是否持续存在X>Y
用法: NDAY(CLOSE,OPEN,3) 表示连续3日收阳线
EXIST
是否存在.
例如: EXIST(CLOSE>OPEN,10) 表示10日内存在着阳线,第2个参数为常量
EXISTR
EXISTR(X,A,B):是否存在(前几日到前几日间).
例如: EXISTR(CLOSE>OPEN,10,5) 表示从前10日内到前5日内存在着阳线 若A为0,表示从第一天开始,B为0,表示到最后日止,第2,3个参数为常量
EVERY
一直存在.
例如: EVERY(CLOSE>OPEN,N) 表示N日内一直阳线(N应大于0,小于总周期数,N支持变量)
LAST
LAST(X,A,B):持续存在.
例如: LAST(CLOSE>OPEN,10,5) 表示从前10日到前5日内一直阳线 若A为0,表示从第一天开始,B为0,表示到最后日止
NOT
求逻辑非.
用法: NOT(X)返回非X,即当X=0时返回1,否则返回0
例如: NOT(ISUP)表示平盘或收阴
ISVALID
判断是否是有效数值.
#### 选择函数
IF / IFF
根据条件求不同的值.
用法: IF(X,A,B)若X不为0则返回A,否则返回B
例如: IF(CLOSE>OPEN,HIGH,LOW)表示该周期收阳则返回最高值,否则返回最低值.
IFN
根据条件求不同的值,同IF判断相反.
用法: IFN(X,A,B)若X不为0则返回B,否则返回A
例如: IFN(CLOSE>OPEN,HIGH,LOW)表示该周期收阴则返回最高值,否则返回最低值
VALUEWHEN
VALUEWHEN(COND,X) 当COND条件成立时,取X的当前值,否则取VALUEWHEN的上个值.
#### 数学函数
MAX
求最大值.
用法: MAX(A,B)返回A和B中的较大值
例如: MAX(CLOSE-OPEN,0)表示若收盘价大于开盘价返回它们的差值,否则返回0
MIN
求最小值.
用法: MIN(A,B)返回A和B中的较小值
例如: MIN(CLOSE,OPEN)返回开盘价和收盘价中的较小值
MAX6
求6个参数中的最大值.
用法: MAX6(A,B,C,D,E,F)返回较大值
MIN6
求6个参数中的最小值.
用法: MIN6(A,B,C,D,E,F)返回较小值
ACOS
反余弦值.
用法: ACOS(X)返回X的反余弦值
ASIN
反正弦值.
用法: ASIN(X)返回X的反正弦值
ATAN
反正切值.
用法: ATAN(X)返回X的反正切值
COS
余弦值.
用法: COS(X)返回X的余弦值
SIN
正弦值.
用法: SIN(X)返回X的正弦值
TAN
正切值.
用法: TAN(X)返回X的正切值
EXP
指数.
用法: EXP(X)为e的X次幂
例如: EXP(CLOSE)返回e的CLOSE次幂
LN
求自然对数.
用法: LN(X)以e为底的对数
例如: LN(CLOSE)求收盘价的对数
LOG
求10为底的对数.
用法: LOG(X)取得X的对数
例如: LOG(100)等于2
SQRT
开平方.
用法: SQRT(X)为X的平方根
例如: SQRT(CLOSE)收盘价的平方根
ABS
求绝对值.
用法: ABS(X)返回X的绝对值
例如: ABS(-34)返回34
POW
乘幂.
用法: POW(A,B)返回A的B次幂
例如: POW(CLOSE,3)求得收盘价的3次方
CEILING
向上舍入.
用法: CEILING(A)返回沿A数值增大方向最接近的整数
例如: CEILING(12.3)求得13,CEILING(-3.5)求得-3
FLOOR
向下舍入.
用法: FLOOR(A)返回沿A数值减小方向最接近的整数
例如: FLOOR(12.3)求得12,FLOOR(-3.5)求得-4
INTPART
取整.
用法: INTPART(A)返回沿A绝对值减小方向最接近的整数
例如: INTPART(12.3)求得12,INTPART(-3.5)求得-3
FRACPART
小数部分.
用法: FRACPART(X),返回X的小数部分
ROUND
四舍五入.
用法: ROUND(X),返回X四舍五入到个位的数值
ROUND2
四舍五入.
用法: ROUND2(X,N),返回X四舍五入到N位小数的数值 由于精度问题,数据越大误差可能越大
SIGN
取符号.
用法: SIGN(X),返回X的符号.当X>0,X=0,X<0分别返回1,0,-1
MOD
取模.
用法: MOD(M,N),返回M关于N的模(M除以N的余数)
例如: MOD(5,3)返回2
注意:公式系统对有效数字部分有要求,如果数字部分超过7-8位,会有精度丢失
RAND
取随机数.
用法: RAND(N),返回一个范围在1-N的随机整数
#### 统计函数
AVEDEV
AVEDEV(X,N) 返回平均绝对偏差
DEVSQ
DEVSQ(X,N) 返回数据偏差平方和
FORCAST
FORCAST(X,N) 返回线性回归预测值,N支持变量
SLOPE
SLOPE(X,N) 返回线性回归斜率,N支持变量
STD
STD(X,N) 返回估算标准差,N支持变量
STDP
STDP(X,N) 返回总体标准差,N支持变量
STDDEV
STDDEV(X,N) 返回标准偏差
VAR
VAR(X,N) 返回估算样本方差,N支持变量
VARP
VARP(X,N) 返回总体样本方差,N支持变量
COVAR
COVAR(X,Y,N) 返回X和Y的N周期的协方差,N支持变量
RELATE
RELATE(X,Y,N) 返回X和Y的N周期的相关系数,N支持变量
#### 形态函数
ZIG
属于未来函数,之字转向.
用法: ZIG(K,N),当价格变化量超过N%时转向,K表示0:开盘价,1:最高价,2:最低价,3:收盘价,其余:数组信息
例如: ZIG(3,5)表示收盘价的5%的ZIG转向
ZIGA
属于未来函数,之字转向.
用法: ZIGA(K,X),当价格变化超过X时转向,K表示0:开盘价,1:最高价,2:最低价,3:收盘价,其余:数组信息
例如: ZIGA(3,1.5)表示收盘价变化1.5元的ZIGA转向
PEAK
属于未来函数,前M个ZIG转向波峰值.
用法: PEAK(K,N,M)表示之字转向ZIG(K,N)的前M个波峰的数值,M必须大于等于1
例如: PEAK(1,5,1)表示%5最高价ZIG转向的上一个波峰的数值
PEAKBARS
属于未来函数,前M个ZIG转向波峰到当前距离.
用法: PEAKBARS(K,N,M)表示之字转向ZIG(K,N)的前M个波峰到当前的周期数,M必须大于等于1
例如: PEAKBARS(0,5,1)表示%5开盘价ZIG转向的上一个波峰到当前的周期数
TROUGH
属于未来函数,前M个ZIG转向波谷值.
用法: TROUGH(K,N,M)表示之字转向ZIG(K,N)的前M个波谷的数值,M必须大于等于1
例如: TROUGH(2,5,2)表示%5最低价ZIG转向的前2个波谷的数值
TROUGHBARS
属于未来函数,前M个ZIG转向波谷到当前距离.
用法: TROUGHBARS(K,N,M)表示之字转向ZIG(K,N)的前M个波谷到当前的周期数,M必须大于等于1
例如: TROUGHBARS(2,5,2)表示%5最低价ZIG转向的前2个波谷到当前的周期数
WINNER
获利盘比例.
用法: WINNER(CLOSE),表示以当前收市价卖出的获利盘比例,
例如返回0.1表示10%获利盘;WINNER(10.5)表示10.5元价格的获利盘比例
LWINNER
近期获利盘比例.
用法: LWINNER(5,CLOSE),表示最近5天的那部分成本以当前收市价卖出的获利盘比例
例如: 返回0.1表示10%获利盘
PWINNER
远期获利盘比例.
用法: PWINNER(5,CLOSE),表示5天前的那部分成本以当前收市价卖出的获利盘比例
例如: 返回0.1表示10%获利盘
COST
成本分布情况.
用法: COST(10),表示10%获利盘的价格是多少,即有10%的持仓量在该价格以下,其余90%在该价格以上,为套牢盘
COSTEX
区间成本.
用法: COSTEX(CLOSE,REF(CLOSE,1)),表示近两日收盘价格间筹码的成本
PPART
远期成本分布比例.
用法: PPART(10),表示10个周期前的成本占总成本的比例,0.2表示20%
SAR
抛物转向.
用法: SAR(N,S,M),N为计算周期,S为步长,M为极值
例如: SAR(10,2,20)表示计算10日抛物转向,步长为2%,极限值为20%
SARTURN
抛物转向点.
用法: SARTURN(N,S,M),N为计算周期,S为步长,M为极值,若发生向上转向则返回1,若发生向下转向则返回-1,否则为0
其用法与SAR函数相同