通达信如何编写选股公式
1、语句名写在语句的前面,用一个冒号(“:”)将它与语句隔开。语句“上日收盘价:REF(close,1)”就表示该语句REF(close,1)的名称为“上日收盘价”。该语句后而的语句若需引用它,则写公式名即可,如
MA(上日收盘价,20)意思是对上日收盘价求20日平均。
2、我们可以把不需要显示语句定义为中间语句,中间语句的写法只需在一般语句的名称与语句之间的等号,即“=”即可(亦可用通用的冒号加等于号“:,”)。例如,语句“上日收盘价=REF(close,1)”就表示
该语句为中间语句。重复使用的语句也可以定义成中间语句。
3、条件选股公式只有一条逻辑表达式语句,用来表示选股条件是否成立,例如CLOSE,REF(close,1)语句,表示选出当期收盘价高于上日收盘价的股票。其他的语句必须设定为中间语句,否则编辑器出现
“只能有一个输出结果”的警示。
交易系统公式需要逻辑表达式语句,分别为买入(在语句后加buy)、卖出条件(在语句后加sell),当这些语句返回非0时,表示需要进行相应的操作。其他的语句必须设定为中间语句,否则编辑器出现“非交易信号变量只能用:=赋值”的警示。条件中必须至少设定一个条件。
4、函数可以用简写,如收盘价开盘价分别用C,O来表示,在编写中往往可以自动变成大写字母,可以以此判断。函数名编写正确时字母变为大写。编写中要用彩编辑,这样可以指示出软件对于此函数
是否认可,,应变成彩。
5、公式编写完测试公式通过后,还需进行曲线属性的设置,在“曲线属性”:如显示曲线的位置是主图,副图,成交量图等,还可以设置是否显示曲线参数或只
显示参数而不显示曲线,选择显示的图标,提供象箭头,圆,凌形(buy红向上箭头,buy1黄箭头,1空心三角形,2空心圆,4空心菱形,5星花...),曲线颜等...最后再测试通
过,确定退出编辑。
6、未来函数有:zig, PEAK, PEAKBARS, TROUGH, TROUGHBARS,
所以任何函数都具有未来函数特性,也没什么可怕。
语言规范:在自定义公式里面的各种符号(如,“;” )只能用半角不
能用全角。
关键字 if else while break continue return (无大小写之分).常数浮点数、整数、字符串 . 分隔符“ ” … ‟ ( ) ; { } 注释/* */ . 标识符由字母和数字组成,由字母开头,不分大小写 . 运算符(优先级从高到
低排列,同级同行) * / + - != > < >= <= And Or
语句赋值 a = b
条件 IF (a==b) c=d;
循环 while a==b c=d;
函数调用 func(a,b)
赋值语句: 其一般形式为:通达信数字转字符串函数
a=b; 含义为将b的值付给a。
几个运算符“,”赋值、“:=” 赋值“:”赋值并输出数值或字符串“:>”赋值并输出图形。
注意:“,”和“:=”两个运算符的意义、用法完全相同。这样做主要是为了更好地兼容市场上目前的各种带有公式编辑功能的分析软件。
同花顺公式函数注释(常用部分)
逻辑函数:1、条件函数:根据条件求不同的值。
用法:IF(X,A,B)若X不为0则返回A,否则返回B。例
如:(CLOSE>OPEN,HIGH,LOW)表示该周期收阳则返回最高值,否则返回最低值。
引用函数:
1、满足条件的周期数:统计满足条件的周期数。
用法:COUNT(X,N),统计N周期中满足X条件的周期数,若N=0则从第一个有
效值开始。例如:COUNT(CLOSE>OPEN,20)表示统计20周期内收阳的周期数。
2、第一个条件成立到当前的周期数:统计第一个条件成立到当前的周期数。
用法:BARSSINCE(X):第一次X不为0到现在的天数。例如:BARSSINCE(HIGH>10)表示股价超过10元时到当前的周期数。
3、上一次条件成立到当前的周期数:上一次条件成立到当前的周期数。
用法:BARSLAST(X),上一次X不为0到现在的天数。例
如:BARSLAST(CLOSE/REF(CLOSE,1)>=1,1)表示上一个涨停板到当前的周期数。
4、有效周期数:求总的周期数。
用法:BARSCOUNT(X),第一个有效数据到当前的天数。
5、向前赋值:将当前位置到若干周期前的数据设为1。用法:BACKSET(X,N),
若X非0,则将当前位置到N周期前的数值设为1。例如:BACKSET(CLOSE>OPEN,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日移动平均,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、最低值:求最低值。
用法: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、动态移动平均:求动态移动平均。
用法: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最低值到当前周期数,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,返回这个区间的周期数。例如:SUMBARS(VOL,CAPITAL)求完全换手到现在的周期数。
时间函数:
1、总开盘分钟:求当前代码类型的开市交易时间。用法:TRADETIME。返回交易时间,单位为分钟。目前一般市场都返回242,与日期或具体的股票无关。
2、距开盘分钟:求当前时刻距开盘有多长时间。
用法:FROMOPEN。返回当前时刻距开盘有多长时间,单位为分钟。例如:当前时刻为早上十点,则返回31。
3、距午夜秒:求当前时刻距开盘有多长时间。
用法:FROMNIGHT。返回当前时刻距午夜有多长时间,单位为秒。例如:当前时刻为早上十点,则返回36000。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。