同花顺软件编程.pdf

上传人:l*** 文档编号:80703379 上传时间:2023-03-23 格式:PDF 页数:9 大小:411.42KB
返回 下载 相关 举报
同花顺软件编程.pdf_第1页
第1页 / 共9页
同花顺软件编程.pdf_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《同花顺软件编程.pdf》由会员分享,可在线阅读,更多相关《同花顺软件编程.pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、一、公式编写规那么 1、语言标准:在自定义公式里面的各种符号(如,“;)只能用半角不能用全角。直接访问数据项的函数 例如:OPENt 为 t 周期之前的开盘价 所有行情数据项(CLOSE 等)都与此相同。2、标识符:标识符在表达式中只存名称,值保存在符号表。标识符包括函数名、参数名和变量名。函数名用来传递函数返回值;参数名用于函数调用时的参数传递;变量名在计算中存储中间计算结果。3、分隔符:4、赋值语句:其一般形式为:a=b;含义为将 b 的值付给 a。几个运算符“:=“:“:。其含义分别为“赋值、“赋值、“赋值并输出数值或字符串、“赋值并输出图形。注意:“和“:=两个运算符的意义、用法完全相

2、同。这样做主要是为了更好地兼容市场上目前的各种带有公式编辑功能的分析软件。5、条件语句:其一般形式为:IF(逻辑表达式)语句 1;ELSE 语句 2;上述结构表示:如果逻辑表达式的值为非 0(TURE)即真,那么执行语句 1,执行完语句 1 从语句 2 后开始继续向下执行;如果表达式的值为 0(FALSE)即假,那么跳过语句 1 而执行语句 2。注意:(1)、条件执行语句中ELSE 语句 2;局部是选择项,可以缺省,此时条件语句变成:IF(逻辑表达式)语句 1;表示假设逻辑表达式的值为非 0 那么执行语句 1,否那么跳过语句 1 继续执行。(2)、如果语句 1 或语句 2 有多于一条语句要执行

3、时,必须使用和 把这些语句包括在其中,此时条件语句形式为:IF(逻辑表达式)语句体 1;ELSE 语句体 2;这里语句体指多个语句,每个语句都必须以“;结尾。(3)、条件语句可以嵌套,这种情况经常碰到,但条件嵌套语句容易出错,其原因主要是不知道哪个 IF 对应哪个 ELSE。例如:IF(x20 OR x-10)IF(yx)AGood;ELSE BBad;对于上述情况,规定:ELSE语句与最近的一个IF语句匹配,上例中的ELSE与 IF(yx)相匹配。为了使 ELSE 与 IF(x20 OR x20 OR x-10)IF(yx)A=Good;ELSE B=Bad;(4)、可用阶梯式 IF-ELS

4、E-IF 结构。阶梯式结构的一般形式为:IF(逻辑表达式 1)语句 1;ELSE IF(逻辑表达式 2)语句 2;ELSE IF(逻辑表达式 3)语句 3;6、循环语句:while 循环的一般形式为:while(条件)语句;while 循环表示当条件为真时,便执行语句。直到条件为假才结束循环。并继续执行循环程序外的后续语句。注意:(1)、可以有多层循环嵌套。(2)、语句可以是语句体,此时必须用和括起来。break 语句 break 语句通常用在循环语句中。当 break 语句用 while 循环语句中时,可使程序终止循环而执行循环后面的语句,通常 break 语句总是与 if 语句联在一起。即

5、满足条件时便跳出循环。注意:(1)、break 语句对 if-else 的条件语句不起作用。(2)、在多层循环中,一个 break 语句只向外跳一层。continue 语句 continue 语句的作用是跳过循环本中剩余的语句而强行执行下一次循环。continue 语句只用在 while 循环体中,常与 if 条件语句一起使用,用来加速循环。7、函数调用:调用函数的根本方式为:函数名(参数,参数,)其返回值为函数里面的 return 语句规定的返回值。假设无 return 语句,那么返回被调用函数里,以函数名命名的变量的值。假设无以函数名命名的变量,那么返回最后一个输出的值。假设无输出的值,那

6、么返回最后一个被调用的语句的值。例如:调用 KDJ 指标。KDJ 函数的名称为 kdj,其参数和内容如下:函数内容为:RSV:=(CLOSE-LLV(LOW,N)/(HHV(HIGH,N)-LLV(LOW,N)*100;K:SMA(RSV,M1,1);D:SMA(K,M2,1);J:3*K-2*D 那么当您在其它函数里输入 a=KDJ(8,6,6)的时候,相当于计算 N18,M16,M26时的 J 值,并把这个值赋给 a。注意:(1)、当传递的参数数目不等于被调用函数设置的参数数目时。1)、没有传递参数。那么采用原来设置的默认参数计算。2)、传递参数少于被调用函数设置的参数数目。那么将参数传过

7、去,依次改变前面同样数目参数的值,后面其它的参数采用原来设置的默认参数计算。3)、传递参数大于被调用函数设置的参数数目。那么将参数传过去,依次改变被调用函数的参数值,多余的参数不起作用。(2)、函数名称不区分大小写。(3)、新建的函数,其函数名可能与其它以存在的函数里面的内部变量重名。这样在调用那个函数时,那个内部变量将变成对这个新建函数的函数调用,从而产生错误。所以,在新建函数起名时要注意。返回值:自定义公式里面如果有多数据项输出,那么调用此函数的时候返回值默认为最后一个输出。如果希望确定某项输出那么可用 return,或者将函数名指定为其中一项输出。8、关于“空的问题:所谓“空即指没有数据

8、。在某些情况下,一些数据项可能取不到数据,这时返回值为“空。例如,yearrep(&jlr,4),其含义为取该公司 3 年前年报的净利润。如果某家公司上市时间较短,而无三年前的年报数据,那么其值为“空。1、“空与任何数据作计算时,相应计算被取消。例如:7NULL(即“空)得到的结果为 7。2、“空与任何数据比拟大小时,“空较小。例如:-7NULL(即“空)得到的结果为 1(即条件满足)。这样的结果可能与您原来希望得到的数值不符,如果您想防止这种情况可以用 ISNULL 函数来判断某个数据是否为“空(相关说明见后面的系统函数说明局部)。二、系统函数说明 1、板块函数:(1)、板块平均:求板块里某

9、一数据项的平均值。用法:BLOCKAVG(&N),N 表示选择的数据项。例如:BLOCKAVG(&NEW)表示这个板块里所有股票当前时刻的平均价。(2)、板块最小值:求板块里某一数据项的最小值。用法:BLOCKMIN(&N),N 表示选择的数据项。例如:BLOCKMIN(&LOW)表示这个板块里所有股票当天的最低价。(3)、板块最大值:求板块里某一数据项的最大值。用法:BLOCKMAX(&N),N 表示选择的数据项。例如:BLOCKMAX(&HIGH)表示这个板块里所有股票当天的最高价。(4)、板块求和:求板块里某一数据项的和。用法:BLOCKSUM(&N),N 表示选择的数据项。例如:BLO

10、CKSUM(&VOL)表示这个板块里所有股票当前时刻的总成交手数。(5)、取板块领先股票:取板块指数的所属个股中数据 X 最大的股票的数据 Y。适用于板块指数。用法:BLOCKLEAD(&X,&Y)取板块指数中个股数据 X 最大的股票的数据 Y。例如:BLOCKLEAD(&VOL,&ZQMC)取该板块指数中成交量最大的股票名称。2、财务函数:(1)、季报:调用季报数据项。用法:QUARTERREP(&N,K,L),N 为财务数据项,K 可以是 1(表示最近一次的季报)、2(表示上一次的季报)、3、4 等或者直接输入希望调用的年份,L 可以是 1 或 3 即第一季度或第三季度的季报。注意 L 仅

11、在 K 选择年份的时候适用。(2)、年报:调用年报数据项。用法:YEARREP(&N,K),N 为财务数据项,K 可以是 1(表示最近一次的年报)、2(表示上一次的年报)、3、4 等或者直接输入希望调用的年份。注意:N 要为根本的财务数据项,而不能是编写的计算工程,即 N 为功能树里公式栏里面的“财务数据目录下面的数据项。(3)、中报:调用中报数据项。用法:MIDREP(&N,K,L),N 为财务数据项,K 可以是 1(表示最近一次的中报)、2(表示上一次的中报)、3、4 等或者直接输入希望调用的年份。(4)、同期报表:调用最近一次报表或与其同类型报表的数据项。用法:REP(&N,K)N 为财

12、务数据项,K 为 1(表示最近一次公布的报表)、2(表示去年与最近一次公布报表同类型报表)、3、4 等。(5)、取报表日期:取某个财务数据项的报表日期。用法:REPDATE(&N,M,K),N财务数据项。M引用周期数,与 YEARREP 等的调用相同。K1、一季度报表,2、中报,3、三季度报表,4、年报。如 REPDATE(&ZGB,1,4),表示取最近总股本年报的报表日期。3、指标函数:(1)、本钱:本钱分布情况。用法:COST(10),表示 10%获利盘的价格是多少,即有 10%的持仓量在该价格以下,其余 90%在该价格以上,为套牢盘。该函数仅对日线分析周期有效。(2)、分价函数:用来制作

13、分价表。用法:在制作分价表的时候选择多数据项输出,然后直接将这个函数拖进数据项选择框就可以了。(3)、本钱分布:用于画成交分布云。用法:用于画成交分布云。例如 CM(0,1,2,0)。参数含义:1、计算天数,0 表示计算全部天数。2、当日本钱算法:0=平均分布,1=三角分布。3、精度:一般是 2。4、起始位置:0 是从当天开始计算,1 是从前一天开始算,类推。5、换手:缺省是 3,即 300%换手。参数 5可以没有。根本原理:我们对历史筹码是依后面的换手率而递减的。我们相信这样根本反响了一个事实即历史越悠久的成交,对当前的影响越小。比方说,1000 万的盘子,前天均价为 10元,成交量为 20

14、0 万,也就是 20%换手率;昨天以均价 11 元又成交 300 万,也就是 30%换手率;那前天的 200 万成交量怎么样了呢?本钱分析假定,前天的 200 万在昨天也以 11 元被30%换手了,那么,前天以 10 元成交的成交量还剩了 200*(1-30%)=140 万;假设今天以均价12 元又成交了 400 万,同理可算,现在的筹码分布是:10 元筹码为 200*(1-30%)*(1-40%)=84万,11 元的筹码为 300*(1-40%)=180 万,12 元的筹码是 400 万。(4)、之字转向。用法:ZIG(K,N),当价格变化量超过 N%时转向,K 表示 0:开盘价,1:最高价

15、,2:最低价,3:收盘价。例如:ZIG(3,5)表示当前收盘价超过上次 ZIG 转向输出值的+5%或-5%,那么输出当前收盘价并 ZIG 转向。(5)、获利盘:表示获利盘比例。用法:WINNER(CLOSE),表示以当前收市价卖出的获利盘比例。例如返回 0,1 表示 10%获利盘;WINNER(10,5)表示 10,5 元价格的获利盘比例。该函数仅对日线分析周期有效。(6)、抛物转向:计算抛物转向。用法:SAR(N,S,M),N 为计算周期,S 为步长,M 为极值。例如,SAR(10,2,20)表示计算 10日抛物转向,步长为 2%,极限值为 20%。(7)、远期获利盘比例:计算远期获利盘比例

16、。用法:PWINNER(10,CLOSE)表示10天前的那局部本钱以当前收市价卖出的获利盘比例,例如返回 0.2 表示 20%获利盘;该函数仅对日线分析周期有效。4、逻辑函数:(1)、条件函数:根据条件求不同的值。用法:IF(X,A,B)假设 X 不为 0 那么返回 A,否那么返回 B。例如:IF(CLOSEOPEN,HIGH,LOW)表示该周期收阳那么返回最高值,否那么返回最低值。参见“条件语句。5、引用函数:(1)、满足条件的周期数:统计满足条件的周期数。用法:COUNT(X,N),统计 N 周期中满足 X 条件的周期数,假设 N=0 那么从第一个有效值开始。例如:COUNT(CLOSEO

17、PEN,20)表示统计 20 周期内收阳的周期数。(2)、第一个条件成立到当前的周期数:统计第一个条件成立到当前的周期数。用法:BARSSINCE(X):第一次 X 不为 0 到现在的天数。例如:BARSSINCE(HIGH10)表示股价超过 10 元时到当前的周期数。(3)、上一次条件成立到当前的周期数:上一次条件成立到当前的周期数。用法:BARSLAST(X),上一次 X 不为 0 到现在的天数。例如:BARSLAST(CLOSE/REF(CLOSE,1)=1,1)表示上一个涨停板到当前的周期数。(4)、有效周期数:求总的周期数。用法:BARSCOUNT(X),第一个有效数据到当前的天数。

18、(5)、向前赋值:将当前位置到假设干周期前的数据设为 1。用法:BACKSET(X,N),假设 X 非 0,那么将当前位置到 N 周期前的数值设为 1。例如:BACKSET(CLOSEOPEN,2)假设收阳那么将该周期及前一周期数值设为 1,否那么为 0。(6)、求和:求总和。用法:SUM(X,N),统计N周期中X的总和,N=0那么从第一个有效值开始。例如:SUM(VOL,5)周期设为日线时,表示最近 5 个交易日的成交量之和。SUM(VOL,0)表示从传数据过来第一天起的成交量总和,具体如在区间统计里统计“总手 SUM(VOL,0)即是指全区间的成交量之和。(7)、移动平均:求移动平均。用法

19、:SMA(X,N,M),求 X 的 N 日移动平均,M 为权重。算法:假设 Y=SMA(X,N,M)那么 Y=M*X+(N-M)*Y/N,其中 Y表示上一周期 Y 值,N 必须大于 M。例如:SMA(CLOSE,30,1)表示求 30 日移动平均价。(8)、向前引用:引用假设干周期前的数据。用法:REF(X,A),引用 A 周期前的 X 值。例如:REF(CLOSE,1)表示上一周期的收盘价,在日线上就是昨收。(9)、简单移动平均:求简单移动平均。用法:MA(X,N),求X的N日移动平均值。算法:(X1+X2+X3+,+Xn)/N。例如:MA(CLOSE,10)表示求 10 日均价。(10)、

20、最低值:求最低值。用法:LLV(X,N),求 N 周期内 X 最低值,N=0 那么从第一个有效值开始。例如:LLV(LOW,0)表示求历史最低价。(11)、最高值:求最高值。用法:HHV(X,N),求 N 周期内 X 最高值,N=0 那么从第一个有效值开始。例如:HHV(HIGH,30)表示求 30 日最高价。(12)、指数平滑移动平均:求指数平滑移动平均。用法:EMA(X,N),求 X 的 N 日指数平滑移动平均。算法:假设 Y=EMA(X,N)那么Y=2*X+(N-1)*Y/(N+1),其中 Y表示上一周期 Y 值。例如:EMA(CLOSE,30)表示求 30 日指数平滑均价。(13)、动

21、态移动平均:求动态移动平均。用法:DMA(X,A),求 X 的动态移动平均。算法:假设 Y=DMA(X,A)那么 Y=A*X+(1-A)*Y,其中 Y表示上一周期 Y 值,A 必须小于 1。例如:DMA(CLOSE,VOL/CAPITAL)表示求以换手率作平滑因子的平均价。(14)、最高值周期数:求上一高点到当前的周期数。用法:HHVBARS(X,N):求 N 周期内 X 最高值到当前周期数,N=0 表示从第一个有效值开始统计。例如:HHVBARS(HIGH,0)求得历史新高到到当前的周期数。(15)、最低值周期数:求上一低点到当前的周期数。用法:LLVBARS(X,N):求 N 周期内 X

22、最低值到当前周期数,N=0 表示从第一个有效值开始统计。例如:LLVBARS(HIGH,10)求得 10 日最低点到当前的周期数。(16)、加权移动平均:求加权移动平均。用法:WMA(X,A),求 X 的加权移动平均。算法:假设 Y=WMA(X,A)那么Y=(N*X0+(N-1)*X1+(N-2)*X2)+.+1*XN)/(N+(N-1)+(N-2)+.+1)X0 表示本周期值,X1表示上一周期值.。例如:WMA(CLOSE,20)表示求 20 日加权均价。(17)、求和:向前累加到指定值到现在的周期数。用法:SUMBARS(X,A):将 X 向前累加直到大于等于 A,返回这个区间的周期数。例

23、如:SUMBARS(VOL,CAPITAL)求完全换手到现在的周期数。5、时间函数:(1)、总开盘分钟:求当前代码类型的开市交易时间。用法:TRADETIME。返回交易时间,单位为分钟。目前一般市场都返回 242,与日期或具体的股票无关。(2)、距开盘分钟:求当前时刻距开盘有多长时间。用法:FROMOPEN。返回当前时刻距开盘有多长时间,单位为分钟。例如:当前时刻为早上十点,那么返回 31。(3)、距午夜秒:求当前时刻距开盘有多长时间。用法:FROMNIGHT。返回当前时刻距午夜有多长时间,单位为秒。例如:当前时刻为早上十点,那么返回 36000。(4)、时间格式:转换时间格式。用法:FORM

24、ATTIME(N)。目前只支持 N=1 把当前时间转换成距开盘分钟数返回。例如:分时中的量比曲线公式:(VOL*(TRADETIME+1)*5)/(FORMATTIME(1)*FIVEDAYVOL)。(5)、时间差:计算两个时间之间的差。用法:COUNTTIME(N,L,K)。N、L 为时间,其格式为 YYYYMMDD。K 为 1、2 或者 3。当 K为 1 时返回第二个之间比第一个时间晚多少年。当 K 为 2 时返回第二个之间比第一个时间晚多少月。当 K 为 3 时返回第二个之间比第一个时间晚多少日。例如:COUNTTIME 其返回值为-2。注意:这里返回值有正负号。6、算术函数:(1)、绝

25、对值:求绝对值。用法:ABS(X)返回 X 的绝对值。例如:ABS(-34)返回 34。(2)、介于:介于两个数之间。用法:BETWEEN(A,B,C)表示 A 处于 B 和 C 之间时返回 1,否那么返回 0 例如:BETWEEN(CLOSE,MA(CLOSE,10),MA(CLOSE,5)表示收盘价介于 5 日均线和 10 日均线之间。(3)、最大值:求最大值。用法:MAX(A,B)返回 A 和 B 中的较大值。例如:MAX(CLOSE-OPEN,0)表示假设收盘价大于开盘价返回它们的差值,否那么返回 0。(4)、最小值:求最小值。用法:MIN(A,B)返回 A 和 B 中的较小值。例如:

26、MIN(CLOSE,OPEN)返回开盘价和收盘价中的较小值。(5)、求模运算:求模运算。用法:MOD(A,B)返回 A 对 B 求模。例如:MOD(26,10)返回 6。(6)、求逻辑非:求逻辑非。用法:NOT(X)返回非 X,即当 X=0 时返回 1,否那么返回 0。例如:NOT(53)返回 0。(7)、范围:介于某个范围之间。用法:RANGE(A,B,C)表示 A 大于 B 同时小于 C 时返回 1,否那么返回 0。例如:RANGE(CLOSE,MA(CLOSE,5),MA(CLOSE,10)表示收盘价大于 5 日均线并且小于 10 日均线。(8)、求相反数:求相反数。用法:REVERSE

27、(X)返回-X。例如 REVERSE(CLOSE)返回-CLOSE。(9)、余弦值:求余弦值。用法:COS(X)返回 X 的余弦值。(10)、正弦值:求正弦值。用法:SIN(X)返回 X 的正弦值。(11)、平方根:开平方。用法:SQRT(X)为 X 的平方根。例如:SQRT(CLOSE)收盘价的平方根。(12)、上穿:两条线交叉。用法:CROSS(A,B)表示当 A 从下方向上穿过 B 时返回 1,否那么返回 0。例如:CROSS(MA(CLOSE,5),MA(CLOSE,10)表示 5 日均线与 10 日均线交金叉。(13)、维持:两条线维持一定周期后交叉。用法:LONGCROSS(A,B

28、,N)表示 A 在 N 周期内都小于 B,本周期从下方向上穿过 B 时返回1,否那么返回 0。例如:LONGCROSS(MA(CLOSE,5),MA(CLOSE,10),5)表示 5 日均线维持 5 周期后与 10 日均线交金叉。(14)、空:判断是否为空。用法:ISNULL(A)表示如果 A 为空(即没有数据)那么返回 1,否那么返回 0。(15)、幂:求幂。用法:POW(X,Y)。求 X 的 Y 次幂。例如:POW(2,3)为 8。7、统计函数:(1)、标准差:求标准差。用法:STD(X,N)为 X 的 N 日估算标准差。(2)、商品数据:求与具体某种商品相关的数据。用法:INDEXDAT

29、A(“N,&X,K)。N 为商品代码。X 为数据项。K 为周期数(可以不加)。INDEXDATA(“1A0001,&LOW,3)为 3 天前上证指数的最低点位。(3)、线性回归斜率:求某个数据的线性回归。用法:SLOPE(X,N)为 X 的 N 周期线性回归线的斜率。例如:SLOPE(CLOSE,10)表示求 10周期线性回归线的斜率(4)、线性回归预测值:以某个数据的线性回归斜率向后延伸一个周期得到的数值。用法:FORCAST(X,N)为 X 的 N 周期线性回归预测值。例如:FORCAST(CLOSE,10)表示求10 周期线性回归预测本周期收盘价。(5)、总体标准差:求总体标准差 用法:STDP(X,N)为 X 的 N 日总体标准差。(6)、估算样本方差:求估算样本方差。用法:VAR(X,N)为 X 的 N 日估算样本方差。(7)、总体样本方差:求总体样本方差。用法:VARP(X,N)为 X 的 N 日总体样本方差

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁