2022年同花顺公式编写程序及规则.pdf
《2022年同花顺公式编写程序及规则.pdf》由会员分享,可在线阅读,更多相关《2022年同花顺公式编写程序及规则.pdf(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、名师推荐精心整理学习必备同花顺公式编写 +现有公式公式编写规则语言规范:在自定义公式里面的各种符号(如,“; ” )只能用半角不能用全角。关键字if else while break continue return (无大小写之分)常数浮点数、整数、字符串分隔符“ ” ( ) ; 注释 /* */ 标识符由字母和数字组成,由字母开头,不分大小写运算符(优先级从高到低排列,同级同行)* / + - = != = ”。 其含义分别为 “ 赋值” 、“ 赋值 ” 、 “ 赋值并输出数值或字符串” 、“ 赋值并输出图形 ” 。注意: “ ” 和“:= ”两个运算符的意义、用法完全相同。这样做主要是为了
2、更好地兼容市场上目前的各种带有公式编辑功能的分析软件。条件语句:其一般形式为 : IF(逻辑表达式 ) 语句 1; ELSE 语句 2; 上述结构表示 : 如果逻辑表达式的值为非0(TURE)即真 , 则执行语句 1, 执行完语句 1从精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 35 页 - - - - - - - - - - 名师推荐精心整理学习必备语句 2 后开始继续向下执行; 如果表达式的值为0(FALSE)即假 , 则跳过语句 1 而执行语句 2。注意:1、条件执行语句中ELSE
3、语句 2;部分是选择项 , 可以缺省 , 此时条件语句变成: IF(逻辑表达式 ) 语句 1; 表示若逻辑表达式的值为非0 则执行语句1 , 否则跳过语句1继续执行。2、如果语句1 或语句 2 有多于一条语句要执行时, 必须使用 和 把这些语句包括在其中 , 此时条件语句形式为: IF(逻辑表达式 ) 语句体 1; ELSE 语句体 2; 这里语句体指多个语句,每个语句都必须以“; ”结尾。3. 条件语句可以嵌套, 这种情况经常碰到, 但条件嵌套语句容易出错, 其原因主要是不知道哪个 IF 对应哪个 ELSE。例如 : IF(x20 OR x-10) IF(yx) AGood; ELSE BB
4、ad; 对于上述情况 , 规定 : ELSE 语句与最近的一个IF 语句匹配 , 上例中的 ELSE 与 IF(yx) 相匹配。为了使 ELSE 与 IF(x20 OR x20 OR x-10) IF(yx) A=Good; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 35 页 - - - - - - - - - - 名师推荐精心整理学习必备ELSE B=Bad; 4. 可用阶梯式IF-ELSE-IF 结构。阶梯式结构的一般形式为: IF(逻辑表达式 1) 语句 1; ELSE IF(逻辑
5、表达式2) 语句 2; ELSE IF(逻辑表达式3) 语句 3; 循环语句:while 循环的一般形式为: while( 条件 ) 语句; while 循环表示当条件为真时, 便执行语句。 直到条件为假才结束循环。并继续执行循环程序外的后续语句。注意 : 1、可以有多层循环嵌套。2、语句可以是语句体, 此时必须用 和 括起来。break语句break语句通常用在循环语句中。当break 语句用 while 循环语句中时,可使程序终止循环而执行循环后面的语句, 通常 break语句总是与if 语句联在一起。即满足条件时便跳出循环。注意 : 1、break 语句对 if-else 的条件语句不起
6、作用。2、在多层循环中 , 一个 break 语句只向外跳一层。continue 语句continue 语句的作用是跳过循环本中剩余的语句而强行执行下一次循环。continue 语句只用在 while 循环体中 , 常与 if 条件语句一起使用, 用来加速循环。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 35 页 - - - - - - - - - - 名师推荐精心整理学习必备函数调用:调用函数的基本方式为:函数名(参数,参数,)其返回值为函数里面的return 语句规定的返回值。若无re
7、turn 语句,则返回被调用函数里,以函数名命名的变量的值。若无以函数名命名的变量,则返回最后一个输出的值。若无输出的值,则返回最后一个被调用的语句的值。例如:调用KDJ 指标。 KDJ 函数的名称为kdj,其参数和内容如下:参数名最小值最大值默认值N1 1 100 9 M1 2 40 3 M2 2 40 3 函数内容为: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
8、时的 J 值,并把这个值赋给a。注意:1、当传递的参数数目不等于被调用函数设置的参数数目时。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 35 页 - - - - - - - - - - 名师推荐精心整理学习必备a、没有传递参数。则采用原来设置的默认参数计算。b、传递参数少于被调用函数设置的参数数目。则将参数传过去,依次改变前面同样数目参数的值,后面其它的参数采用原来设置的默认参数计算。c、传递参数大于被调用函数设置的参数数目。则将参数传过去,依次改变被调用函数的参数值,多余的参数不起作用。
9、2、函数名称不区分大小写。3、新建的函数,其函数名可能与其它以存在的函数里面的内部变量重名。这样在调用那个函数时,那个内部变量将变成对这个新建函数的函数调用,从而产生错误。所以,在新建函数起名时要注意。返回值: 自定义公式里面如果有多数据项输出,则调用此函数的时候返回值默认为最后一个输出。如果希望确定某项输出则可用return,或者将函数名指定为其中一项输出。关于 “ 空” :所谓 “ 空” 即指没有数据。在某些情况下,一些数据项可能取不到数据,这时返回值为“ 空” 。例如, yearrep(&jlr,4) ,其含义为取该公司3年前年报的净利润。如果某家公司上市时间较短,而无三年前的年报数据,
10、则其值为“ 空” 。1、“ 空” 与任何数据作计算时,相应计算被取消。例如: 7 NULL (即 “ 空” )得到的结果为7。2、“ 空” 与任何数据比较大小时,“ 空” 较小。例如: 7NULL (即“ 空” )得到的结果为1(即条件满足)。这样的结果可能与您原来希望得到的数值不符,如果您想避免这种情况可以用ISNULL函数来判断某个数据是否为“ 空” (相关说明见后面的系统函数说明部分)。公式编写规则代码与周期:由于证券市场里的各项数据都与代码、时间密切相关,所以在这里的各项数据都只能用于特定的一类或几类代码及相应的一个或几个周期。(注意:同一个数据项可能适用于多类代码及多个周期,其具体的
11、数值也将不同。)代码的分类:个股 (含债券)。沪深指数(仅 1A0001(统计上海A、B 股基金)、1A0002(统计上海A 股) 、1A0003(统计上海B 股) 、399001 (统计深圳 A、B 股基金)、399002(统计深圳A 股) 、399003(统计深圳B 股)六个指数)。期货。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 35 页 - - - - - - - - - - 名师推荐精心整理学习必备周期分类:实时(记录当前传过来的数据)、成交明细(记录每一笔成交的数据)、分时(记
12、录每分钟成交的数据) 、分钟 K 线(以 1 分钟为单位的K 线数据)、日 K 线(以 1个交易日为单位的K 线数据)。注意: 一、分时与分钟K 线的区别在于: 分钟 K 线数据较多, 包含了与 K 线相关的高、开、低、收、成交次数等数据。二、沪深指数没有成交明细周期的数据。三、适用于分钟 K 线、日 K 线周期的所有数据,都同时适用于个股与沪深指数,只不过其数据内容不同而已。由于行情数据和财务数据同属于基本数据项,即其数值是主站端直接发过来,所以他们自身并不带周期。 而其它计算项, 即由客户端编写公式计算得到的数据项都是带有周期的。也就是说在编写一个公式的时候我们需要确定一个周期(由于分钟K
13、 线、日 K 线周期里的各项数据仅有微小差别,所以统称为技术分析周期),并且想清楚这个公式里调用的各项基本数据在这个周期下的具体含义。以后只有在这个周期下才能调用这个公式。注意:基本数据项自身并不带周期,也就是说编写公式的时候,如果所选用的周期不在此数据项的适用范围内,测试公式的时候系统是不会报错的,但这个数据项的数值将为“ 空” ,即取不到任何数据。注意:所有的基本数据项都可以直接拖到表格里,它将依照表格的代码、周期而显示相应的数值。也都可以直接拖到窗口里作为一个曲线输出,但一般不推荐这样做,如果要画曲线最好新编写一个“ 曲线公式 ” 。另外,各个数据项用于期货时的意义另文说明。通用数据项:
14、NEW(现价)含义:用于个股时为最近一笔成交的价格。用于沪深指数时为最近一次从交易所传来的指数值。用于:个股的实时、成交明细周期。沪深指数的实时周期。NEWVOL (现手)含义:用于个股时为最近一笔成交的成交量。用于沪深指数时为对应市场的所有股票的最后一笔成交量之和。用于:个股的实时、成交明细周期。沪深指数的实时周期。INVOL (内盘)、OUTVOL (外盘)含义:内盘、外盘(又称为主动性抛盘、主动性买盘)成交量。判断依据为若某笔成交,其价格小于等于前一次传过来的买一的价格,则称为内盘;若其价格大于等于前一次传过来的卖一的价格, 则称为外盘。 (注意,内外盘之和一般不等于总成交量)在周期为
15、“ 实时” 、“ 分时” 时,为当日的内、外盘。在周期为“ 分钟 K 线” 和“ 日 K 线” 时,分别为某一分钟和某一日的内、外盘。用于指数时指所有相应股票的内、外盘之和。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 35 页 - - - - - - - - - - 名师推荐精心整理学习必备用于:个股的实时、分时、分钟K 线、日 K 线周期。沪深指数的实时、分时、分钟K线、日 K 线周期。OPEN(开盘)、HIGH (最高)、LOW (最低)含义:在实时周期时,为当日的开盘价、最高价、最低
16、价。在分钟K 线、日 K 线周期时,分别为当周期的开盘价、最高价、最低价。用于:个股的实时、分钟K 线、日 K 线周期。沪深指数的实时、分钟K 线、日 K 线周期。CLOSE(收盘)含义:当周期的收盘价。用于:个股的分钟K 线、日 K 线周期。沪深指数的分钟K 线、日 K 线周期。PRE(昨收)含义:上一交易日的收盘价。(注意,在分钟K 线周期,也是昨日收盘价,而不是上一周期的收盘价。 )如果当天有除权,则其值为除权之后的昨日收盘价。例如:某股票昨天收盘 20 元,今天除权, 10 送 10。则今日 PRE 值为 10 元。用于:所有类型、所有周期。MONEY (金额)含义:在实时、分时周期时
17、代表当日的成交金额只和。在分钟K 线、日 K 线周期时代表那一个周期的成交金额只和。当用于指数时,指此指数所包含所有交易品种成交金额之和。用于:个股的实时、分时、分钟K 线、日 K 线周期。沪深指数的实时、分时、分钟K线、日 K 线周期。VOL (总手)含义:在实时、分时、成交明细周期时代表当日的成交量只和。在分钟K 线、日 K 线周期时代表那一个周期的成交量只和。当用于指数时,指此指数所包含所有交易品种成交量之和。用于:个股的实时、分时、成交明细、分钟K 线、日 K 线周期。沪深指数的实时、分时、分钟 K 线、日 K 线周期。(注意, VOL 与 MONEY 相比多了一个成交明细周期。)OP
18、ENVOL (开盘量)精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 35 页 - - - - - - - - - - 名师推荐精心整理学习必备含义:开盘时第一笔成交的成交量。当用于指数时,指此指数所包含所有交易品种开盘集合竞价成交量之和。用于:个股的实时、日K 线周期。沪深指数的实时、日K 线周期。ZQMC (名称)、CODE&TYPE (代码)含义:证券的名称、代码。用于:个股的所有周期。沪深指数的所有周期。DATETIME (时间)含义:显示时间。当用于不同周期的时候,系统会自动传送相应
19、的时间类型。而具体的显示方案则在 “ 窗口属性 ” 的“ 时间坐标 ” 项里的 “ 时间格式 ” 一栏里选择。用于:个股、沪深指数所有的周期。VALIDBEGIN (起始)、VALIDEND (终止)含义:区间统计的起始、终止时间。当用于不同周期的时候,系统会自动传送相应的时间类型。而具体的显示方案则在“ 窗口属性 ” 的“ 时间坐标 ” 项里的 “ 时间格式 ” 一栏里选择。与 DATETIME (时间)的用法类似。用于:个股、沪深指数所有的周期。仅用于个股的数据项:FIVEDAYVOL (五日总量)含义:过去五日各交易成交量之和。用于:个股的所有的周期。 (主要用来计算量比)BUYPRIC
20、E1 (买一)、BUYPRICE2 (买二)、BUYPRICE3 (买三)、SELLPRICE1 (卖一) 、 SELLPRICE2(卖二)、 SELLPRICE3 (卖三) 、 BUYCOUNT1(买一量)、 BUYCOUNT2(买二量)、BUYCOUNT3 (买三量)、SELLCOUNT1 (卖一量)、SELLCOUNT2 (卖二量) 、SELLCOUNT3 (卖三量)含义:委托买入、卖出价格一、二、三及对应的委托数量。用于:个股的实时周期。VOLAMOUNT (成交次数)含义:在周期为 “ 实时 ” 时,为当日的成交次数。在周期为“ 分钟 K 线” 和“ 日 K 线” 时,分别为某一分钟
21、和某一日的成交次数。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 35 页 - - - - - - - - - - 名师推荐精心整理学习必备用于:个股的实时、分钟K 线、日 K 线周期。VOLCLASS (成交量分类)含义:其数值与该笔成交的价位关系为:“3”为“ 成交价 =买三价 ” ,“2”为“ 买三价 成交价=买二价 ” ,“1”为“ 买二价 成交价 =买一价 ” ,“0”为“ 买一价 成交价 卖一价 ” ,“5”为“ 卖一价 =成交价 卖二价 ” ,“6”为“ 卖二价 =成交价 卖三
22、价 ” ,“5”为“ 卖三价 OPEN,HIGH,LOW)表示该周期收阳则返回最高值,否则返回最低值。参见 “ 条件语句” 。引用函数:1、满足条件的周期数:统计满足条件的周期数。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 17 页,共 35 页 - - - - - - - - - - 名师推荐精心整理学习必备用法: COUNT(X,N) ,统计 N 周期中满足X 条件的周期数,若N=0 则从第一个有效值开始。例如: COUNT(CLOSEOPEN,20) 表示统计 20 周期内收阳的周期数。2、第一
23、个条件成立到当前的周期数:统计第一个条件成立到当前的周期数。用法:BARSSINCE(X) :第一次 X 不为 0 到现在的天数。 例如:BARSSINCE(HIGH10)表示股价超过10 元时到当前的周期数。3、上一次条件成立到当前的周期数:上一次条件成立到当前的周期数。用 法 : BARSLAST(X), 上 一 次X不 为0到 现 在 的 天 数 。 例 如 :BARSLAST(CLOSE/REF(CLOSE,1)=1,1)表示上一个涨停板到当前的周期数。4、有效周期数:求总的周期数。用法: BARSCOUNT(X) ,第一个有效数据到当前的天数。5、向前赋值:将当前位置到若干周期前的数
24、据设为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、移动平均:求移动平均。用法: SMA(X,N,M) ,求 X 的 N 日移
25、动平均, 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 日均价。精品资料 - - - 欢迎下载 -
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022 同花顺 公式 编写 程序 规则
限制150内