http://www.
看你们做股票指标真有意思.我的软件已经实现了股票指标的功能.
公式编写指南
公式4.13版说明
公式编写说明如下:
一、公式的格式
1、每个公式命令必须占1行,命令不能分开,不能有空格。
2、每行公式最后,可以用“//”来注释说明。
3、变量名必须以字母或汉字开头。
4、公式命令不分大小写字母,自动转为大写字母处理。即X1和x1是一样的。
5、变量赋值使用“:=”,或者“=”,默认中间变量。例如: a1:=12
6、变量赋值命令后面可以跟数字。例如:b1:=20
7、变量赋值命令后面可以是+-*/%运算表达式。例如: aa:=a1+3
8、变量赋值命令后面可以包含括号在内的数学表达式。支持(),[],{}括号。
9、变量可以反复赋值,以最近一次赋值为准。
10、输出型变量赋值用“:”,该变量类型为输出变量,最后可以生成数据库。
11、变量有2种类型,数字型(默认小数点后4位)和字串类型。做公式是要防止类型错误。
12、公式运行有2种模式。
模式1在公式编辑器中单步运行,允许输出信息命令。不允许写库。在模式1中,数据指向最后一期数据。预置变量例如w1,可以用ref(w1,5)等函数,自定义变量使用会因为数据未赋值而出错。
模式2在系统中自动运行,计算全部数据,默认不允许输出信息命令,支持写库或绘图。模式2相当于从彩票库第1期开始执行,到最后一期执行完成结束。
13、函数体内不得出现负常数,如需要使用必须用变量来替代。 函数体内只能是正参数和变量名。
14、函数体内的表达式必须用使用()。例如a=min((-10),(-2*3))
15、模式2中,命令前加#符号,表式该命令只执行一次。一般系统定义函数,没有必要重复执行,可以加#号,例如 #aa1=BJys("colorcff0c0")
16、模式2中,命令前加@符号,表式该命令在循环计算完成后,才执行一次。一般系统定义函数,没有必要重复执行,可以加@号,例如 @aa1=BJys("colorcff0c0")
17、预置变量为[概况表]数据。
18、支持中文命令。
19、增加只运行一次的模式3。模式3数据都预置为最后一期数据。
二、说明及注释
1、说明有多种方式。命令分别为:说明,*,;,!,//,REM。
2、例如“说明”。
说明:本公式是测试
3、例如“*”。下面命令为说明,不会被执行。
*x3:=A1+B1 //演示
4、例如“//”。
x6:=12+3 //演示
三、简单运算
1、新版公式系统比以前有很大改进,更加自由方便。
2、运算符+加,-减,*乘,/除,\整除,%取余数。
3、字串运算+和&都是连接字串。
4、逻辑运算规定“假”为0,“真”为大于0。
5、比较符为>,>=,<,<=,=。
6、关系符 .或者. , .or. ,.并且. ,.and.
* 7、关系符或比较符参数必须加小括号。例如:a=IIF(((2)>(3)),5,6)
四、函数
(一)数学函数
1、 绝对值: Abs(N)求 N 的绝对值|N|.
2、 符号: Sign(N)或SGN(N)根据 N>0, =0, <0, 返回 1, 0, -1.
3、 上限取整: Ceiling(N)返回 ≥N 的最小整数.
4、 下限取整: Floor(N) 返回 ≤N 的最大整数.
5、 截断取整: Int(N) 截掉 N 的小数 , 只取整数.
6、 四舍五入: Round(N1 , N2) 将 N1 四舍五入保留N2 位小数.
7、 指数: Exp(N)以自然数 e 为底, N 为指数求 eN .
8、 自然对数: Log(N) 求自然对数 Ln N .
9、 正弦: Sin(N) 返回 N 的正弦值 ( N 为弧度 ).
10、 余弦: Cos(N) 返回 N 的余弦值 ( N 为弧度 ).
11、 平方根: Sqrt(N) 求 N 的平方根.
12、 取大值: MAX(X1,X2) 函数返回X1和X2的最大值.
13、 取小值: MIN(X1,X2) 函数返回X1和X2的最小值.
14、 条件选择函数: IIF(X,N1,N2)或IF(X,N1,N2), X〉0,取N1,否则取N2.
18、 取余数MOD(N1,N2),返回N1/N2的余数。
19、RAND(N)随机函数
20、BETWEEN(X1,X2,X3)或RANGE(X1,X2,X3), X1小于等于X2,并且X1小于等于X3,返回1,否则返回0。
21、逻辑非NOT(N) N<=0,返回1,否则0
22、REVERSE(N) 取反,返回-N
23、ZHISHU(N) ,判断数字N是否为质数,是1,否0。
24、DY(X1,X2) X1大于X2,返回1,否则返回0。
25、DYDY(X1,X2) X1大于等于X2,返回1,否则返回0。
26、XY(X1,X2) X1小于X2,返回1,否则返回0。
27、XYDY(X1,X2) X1小于等于X2,返回1,否则返回0。
28、XD(X1,X2) X1等于X2,返回1,否则返回0。
29、BDY(X1,X2) X1不等于X2,返回1,否则返回0。
(二)字符函数
1、SUBSTR(S,I,N)在S字符串中的第I个字符起取N个字符.
2、TRIM(S),消除字符串尾部空格。
3、LTRIM(S),消除字符串前部空格。
4、ALLTRIM(S)消除字符串中前和后的所有空格
5、LEFT(S,N)从字符串S左边取N个字符
6、RIGHT(S,N)字符串S右边取N个字符
7、AT(S1,S2)在字符串S2,找字符串S1开始的位置。
8、UPPER(S) 小写字母
9、LOWER(S)写字母
10、LEN(S)求字符串的长度
11、ASC(S)求第一个字符串的ASCII码
12、CHR(N)求ASCII码的字符
13、SUBB(S1,S2),用S2拆分S1取前部分。
14、SUBF(S1,S2),用S2拆分S1取后部分。
15、VAL(S)字符串转换为数值
16、STR(R,L,D)数值转换成字符,L为长度,D为小数位数
17、 输出格式控制函数strgs(x1,x2),strgs1(x1),strgs2(x2)
x1表示数据总长度,x2表示数据小数点位数,函数返回值为0。
18、REPLICATE(S,N) 指定字符S重复指N次返回。
19、SPACE(N),返回N个空格。
20、 2位数字转字符NTOCC(N),例如NTOCC(2),返回"02".
(三)时间函数
1、DATE()当前日期字串。
2、TIME()当前时间字串。
3、YEAR(S)求年份(数值)
4、MONTH(S)求月份(数值)
5、DAY(S)求日期(数值)
6、DOW(S)求星期几(数值)
7、CDOW(S)求星期几(英文)
8、DATETIME(0)求当前日期和时间字串。
9、 HOUR(0) 当前小时
10、MINUTE(0) 当前分钟
11、SECONDS(0) 返回秒
(四)统计及引用函数
1、 平均值ma(变量,N),返回n周期的平均值。
2、 求和SUM(变量,N),返回n周期值的和。
3、STD(X,N) 返回估算标准差
4、STDP(X,N) 返回总体标准差
5、VAR(X,N) 返回估算样本方差
6、VARP(X,N) 返回总体样本方差
7、COUNT(S,N),统计变量在N期内数据大于0 的次数。
8、REF(S,N),取变量之后第N位的数据值。
9、REFX(S,N),取变量之前第N位的数据值。
10、HHV(S,N),取变量S在N期内的最大值。
11、HHVBARS(X,N):求N周期内X最高值到当前周期数,N=0表示从第一个有效值开始统计。
12、LLV(S,N),取变量S在N期内的最小值。
13、 LLVBARS(X,N):求N周期内X最低值到当前周期数,N=0表示从第一个有效值开始统计。
14、 DMA(X,A),求X的动态移动平均.
15、SMA(X,N,M):X的N日移动平均,M为权重,如Y=(X*M+Y'*(N-M))/N
16、WMA(X,M):X的M日加权移动平均.算法:Yn=(1*X1+2*X2+...+n*Xn)/(1+2+...+n)
17、EMA(X,M):X的M日指数移动平均.算法:Y=(X*2+Y'*(N-1))/(N+1)
18、MEMA(X,M):X的M日平滑移动平均
19、RECC()总记录数。
20、DQJL(N)或RECN(N)当前数据指针号。N=0,返回指针号;N>0设置新指针。
21、SKIP(N)移动当前数据指针。
22、qhtorn(N) 将N期号转换为记录号。
23、rntoqh(N) 将N记录号转换为期号。
24、HHM()前区或红号最大数。例如双色球为33。
25、LHM()后区或蓝号最大数。例如双色球为16。
26、HHS()前区或红号长度。例如双色球为6。
27、LHS()后区或蓝号长度。例如双色球为1。
28、SHIFO(N1,N2),判断N1数是否在DQJL+N2期彩票前区出现过。没有出现时0,否则为位置号。
29、SHIFOB(N1,N2),判断N1数是否在DQJL+N2期彩票后区出现过。没有出现时0,否则为位置号。
(五)绘图相关函数
1、 BJSY(C) 设置背景颜色,例如 @aa1=BJys("colorcff0c0")
2、QJYS(C)设置前景颜色
3、BTYS(C)设置标题颜色
4、ZJYS(C)设置中间颜色
5、SETNY(N),设置纵轴分割数,默认20.
6、SETNX(N),设置横轴分割数,默认14.
7、SETC(N,C) 设置第N条线的颜色,例如:#LCC=setc(1,"COLORGREEN")
8、SETLBW(N1,N2) 设置第N1条线的线宽N2,默认线宽为2
9、SFYZ(N) 设置缩放因子,N=0,返回缩放因子。N<1放大,N>1缩小。
10、PYY(N) 设置Y轴上下偏移,N=0,返回偏移值。
11、HZZ(N) 设置第N条指标线,画颜色柱子。
12、HZZW(N) 设置画颜色柱子宽度为N,默认为4。
13、HZZS(C) 设置画颜色柱子大于0的颜色,默认"红色"。
14、HZZX(C) 设置画颜色柱子小于0的颜色,默认"蓝色"。
(六)杂函数
1、GSDBF(S)设置公式默认数据库名。实际名字是"LS"+S,程序运行结束回删除LS开头的数据库文件。
2、BLCD(S,L,D)修改S变量的长度,L为长度,D为小数位数。返回1成功,0失败,变量不存在。
3、HPFXPX(S,N1,N2) 读取号频表中S排序数据。N1是由大到小位置,N2=1红号,N2=2蓝号
例如: hpfxpx("全部期数出现次数",3,1)
4、HPFXQZ(S,N1,N2) 读取号频表中S的数据。N1是号码,N2=1红号,N2=2蓝号
例如: hpfxqz("全部期数出现次数",1,1)
5、HWFXQZ(S,N1) 读取号位表中S的数据。N1是项目号,n1=1,指读取w1字段数据。
例如: wpfxqz("奇",2)
6、JCBZJ(S1,s2,s3) 增加决策表数据。S1是项目名称,S2是红色号数串,S3是蓝色号数串。
例如: jcbzj("我的判断","-1 -3","1 -2 5")
7、HPFXPXC(S,N1,N2) 读取号频表中S排序数据。前N1个数据,N2=1红号,N2=2蓝号,返回字符串。
例如: hpfxpxc("全部期数出现次数",3,1)
8、RDDBF(S1,S2,N1) 读取数据库S1文件S2字段第N1条记录的值。 (只支持数字字段)
9、WDDBF(S1,S2,N1,N2) 写入数据库S1文件S2字段第N1条记录的值N2。(只支持数字字段)
10、RDDBFC(S1,S2,N1) 读取数据库S1文件S2字段第N1条记录的值。 (只支持字符字段)
11、WDDBFC(S1,S2,N1,N2) 写入数据库S1文件S2字段第N1条记录的值N2。(只支持字符字段)
12、 读取变量总数GETVAR()或BLS(),例如GETVAR(0),返回88.
13、BL1(N)第N个变量的名字。
14、BL2(N)第N个变量的数值。
15、BL3(N)第N个变量的类型。(N或C)
16、BL4(N)第N个变量的字串值。
17、BLLX(S),S变量的类型。(N或C)
18、BLCZ(S),查找S变量的位置,没找到为0。
19、YXMS(N),设置公式运行模式,N=1或N=2。
20、RDQF(S,N),读取表S第N条记录到HQ和LQ数组中。S只能是"遗漏表"或"号频表".
21、HQ(N) 读HQ数组,N<=HHM,即红球最大号数。
22、LQ(N) 读HQ数组,N<=LHM,即蓝球最大号数。
23、WAIT(N)等待N秒。返回自符。
五、语法命令
1、? 输出命令,参数间用“,”分割。(只能在运行模式1中)
? //输出1空行
? "字符串",变量,数学表达式
提示:字符串和表达式中间不能出现分割符",",否则会出错。
2、PRINT或PR,功能同“?”。
3、CLEAR 清除信息命令。
4、IF <条件> THEN ...ENDIF条件判断语句。
5、WHILE <条件> ... ENDW命令语句。
6、CALL <prg程序> 运行外部VFP9程序。
六、特殊命令
1、BLCD 或XGBLCD命令,修改变量长度。变量长度格式会影响写库的字段格式。在写库前可以预先修改1下。只能在运行模式2中使用。例如下面。
blcd "杀1",3,0
2、COPY或COPYTO写库命令,只能在运行模式2中运行。所有数据运算完成,才执行写库操作。
例如:COPYTO shahong
3、APPE BLAN或APPEND BLANK 增加新空记录,只能在运行模式2中运行。所有数据运算完成,才执行该操作。
例如:appe blan
4、SUM <变量名> 统计该输出变量,只能在运行模式2中运行。所有数据运算完成,才执行该操作。
例如:appe blan
sum 红1
5、REPL 或 REPLACE,只能在运行模式2中运行。所有数据运算完成,才执行该操作。
例如:appe blan
sum 红2
repl 期号1 with "统计"
6、BROW或BROWSE打开数据库命令,只能在运行模式2中运行。所有数据运算完成,才执行操作。不输入库文件名,默认刚生成的数据库。
例如:BROW "CPK"
7、lastdo ckyhb浏览用户表,只能在运行模式2中运行。所有数据运算完成,才执行操作。不输入库文件名,默认刚生成的数据库。
例如:lastdo ckyhb
8、lastdo ckyht察看用户指标图,只能在运行模式2中运行。所有数据运算完成,才执行操作。不输入库文件名,默认刚生成的数据库。
例如:lastdo ckyht
9、QKJCB //清空决策表库
10、jctj 计算决策数据
11、QING 清空信息窗口
12、cpsh 统计杀红结果。
13、cpsl 统计杀蓝结果。
14、QKHQ 给HQ数组值0。
15、QKLQ 给LQ数组值0。
16、TOXLS 将COPYTO生成的dbf数据库,转为xls文件。
例如:
copyto lss
toxls 数据.xls
解释系统采用流处理方式,无法区分前后运算符的优先关系,因此要加小括号,来提高优先运算顺序。
****************************************************
说明:公式编辑器主要用于彩票分析和统计,兼容股票公式的格式。可以用于数据分析。
也可以当做表达式运算器。