您现在的位置:程序化交易>> 股票公式>> 同花顺>> 同花顺公式>>正文内容

同花顺指标公式编写基础知识[同花顺公式]

相关标签: 同花顺指标公式源码 、 同花顺指标公式大全 、 同花顺指标公式 、 同花顺cdp指标公式 、 同花顺最好指标公式 、 同花顺社区指标公式 、 同花顺l2指标公式 、 同花顺指标公式交流网 、 同花顺adx指标公式 、

 


公式系统可以编辑多种类型的公式,且每个类型中又又若干分细,分别是1,基本公式(软件全部函数指标的集合),2,技术指标(已自带公式的集合)、3,交易系统、4,条件选股,5,五彩K线公式,6,自用公式(自编的公式及以复制/粘贴过来的他人的公式)。技术指标公式是最基本的公式,它用于指标曲线的绘制。技术指标公式是条件选股,交易系统的基础。结合选股条件逻辑判断表达式,即得到条件选股公式,用于条件选股。技术指标公式结合买卖逻辑判断表达式,得到交易系统公式,用于交易系统指示。技术指标公式结合色彩逻辑判断表达式,即得到K线模式公式,用于描述特定的K线模式。公式的编辑在公式编辑器中完成。    

       公式系统处理的原始数据的分析周期(即相邻两组数据间的时间间隔)可以从1分钟到1000天间的任意值,也可以是分笔成交数据,改变分析窗口显示的分析周期,则公式处理新的分析周期的数据。    

     

       学习公式编写,使用的基本方法

     基本捷径是从软件公式或他人公式入手,多看多动手边理解其写法,为什么调用这个函数,这个函数的意义是什么,这一句预要表达什么意思等等。不动手永远不可能学会的。从简单公式入手,先弄懂一,两个公式。从修改公式加入自己的目标语句实现自己目标入手,几乎没有一个公式是那一个人自己完成的,或多或少都使用了前人的成果。

     在编写中多用“测试公式”按钮,让软件作判断,告诉你编写对错与否。

     使用彩色编辑可事半功倍。

     多用鼠标指针指向不懂的函数,软件马上会告诉你。

       公式编写步骤

     1.设定公式名称:每个公式都有自己的名称,它由字母或数字组成,最多可以有9个字符。请注意,公式名称在同类公式中不能重复,且不能为空。    2.描述公式:用于简单描述该公式的含义(可不填亦能通过),  3.注释公式:用于描述一个公式如何使用、计算方法等内容。输入后,在有关窗口按“用法注释”按钮可以查看公式注释(可省略)。    4. 设计技术指标公式语句:  公式的形式由若干语句组成。每个语句得到一个计算结果,对于技术指标,就是一条指标线,语句间用分号(“;”)隔开。 一个语句由若干函数通过四则运算或逻辑运算而组成。函数是公式系统的基本成分,它是对数据做某种操作,如CLOSE()函数表示调用该分析周期的收盘价。

     函数由函数名称和参数组成,参数用函数名后的括号括起来,每个函数调用的参数可以是变量或常量,变量是一个随着时间变化而变化的数据,例如收盘价;常量是一个不随时间变化而变的数据。例如函数REF(X,N)用于引用N周期前的X值,X是一个变量,N是一个常量,REF(close(),1)表示计算上一周期的收盘价。函数若需调用几个参数,则它们在括号内是有顺序的。若没有参数则可以省去括号,例如CLOSE()函数没有参数,所以写成 CLOSE和 CLOSE()都可以。函数计算得到的结果是一个变量。  

     计算符将函数连接成为语句。计算符分为算术计算符和逻辑计算符。算术计算符有+、-、*、/,分别是对计算符两边的数值进行加减乘除计算;逻辑计算符有>、<、<>、>=、<=、=、AND(与)、OR(或),分别是对计算符两边的数值做大于、小于、不等于、大于等于、小于等于、等于、逻辑与、逻辑或的逻辑运算,如果逻辑条件成立返回的计算结果为1,否则为0。例如:2>1的逻辑运算结果等于 1,1>2的逻辑运算结果就等于0。    语句得到的计算结果连成线就是所谓的指标线,不同的语句就得到不同的线,为了在指标图形中互相区分,不同的线有不同的颜色,而且语句还可以有自己的名称,在指标图形中显示在左上角位置。语句名写在语句的前面,用一个冒号(“:”)将它与语句隔开。语句“上日收盘价:REF(close,1)”就表示该语句REF(close,1)的名称为“上日收盘价”。该语句后而的语句若需引用它,则写公式名即可,如 MA(上日收盘价,20)意思是对上日收盘价求20日平均。  

     设计中间语句: 

  

    一个语句将显示一条指标线,一个复杂的公式往往有很多语句,而且有些语句没必要显示出来。这时我们可以把不需要显示语句定义为中间语句,中间语句的写法只需在一般语句的名称与语句之间的等号,即“=”即可(亦可用通用的冒号加等于号“:=”)。例如,语句“上日收盘价=REF(close,1)”就表示该语句为中间语句。重复使用的语句也可以定义成中间语句。

   

    设计其他公式语句:

    

     其他类型的公式显示的不是指标线,而是相应的操作,如条件选股公式显示的是选股结果,交易系统公式显示的是交易指示(用":>"表达),五彩 K线公式显示的是K线颜色。这些公式需要有一条或几条逻辑表达式表示这些操作的语句,当语句返回0时表示不需要进行相应的操作,当返回非0时表示需要进行相应的操作。其他的语句都应设定为中间语句。    条件选股公式只有一条逻辑表达式语句,用来表示选股条件是否成立,例如 CLOSE>REF(close,1)语句,表示选出当期收盘价高于上日收盘价的股票。其他的语句必须设定为中间语句,否则编辑器出现“只能有一个输出结果”的警示。    交易系统公式需要逻辑表达式语句,分别为买入(在语句后加buy)、卖出条件(在语句后加sell),当这些语句返回非0时,表示需要进行相应的操作。其他的语句必须设定为中间语句,否则编辑器出现“非交易信号变量只能用:=赋值”的警示。条件中必须至少设定一个条件。

    函数可以用简写,如收盘价开盘价分别用C,O来表示,在编写中往往可以自动变成大写字母,可以以此判断。函数名编写正确时字母变为大写。编写中要用彩色编辑,这样可以指示出软件对于此函数是否认可--应变成彩色。

    公式编写完测试公式通过后,还需进行曲线属性的设置,在“曲线属性”:如显示曲线的位置是主图,副图,成交量图等,还可以设置是否显示曲线参数或只显示参数而不显示曲线,选择显示的图标,提供象箭头,圆,凌形(buy红色向上箭头,buy1黄色箭头,1空心三角形,2空心圆,4空心菱形,5星花...), 曲线颜色等...最后再测试通过,确定退出编辑。

   

    未来函数

      公式系统对数据的运算是基于一系列函数,函数必须满足时间不变性,即时间靠后的数据不对时间靠前的结果产生影响(判断是否未来函数的依据)。这个很重要!对于未来函数可以理解为:某一量依赖另一量,如量 A和量B,B变化使A改变,那么A是B的函数,如果B是稍后的量,A是稍早的量,A跟着B变,A是B的未来函数。未来函数是有时间周期的,在一个短的周期内可能是未来函数,但在稍长的周期内就不是未来函数,比如"HIGH"(最高价),在一天收市前都是不确定的.如在交易没有结束时我们可以看到某一个指标,如“卖出”跟着股价的高低一会出现,一会消失(这个现象很容易观察到)。所以对于一个日周期的指标在分时周期具有“未来函数”特征。但一旦收盘该指标是定值,不应随明日及以后的价而变,所以该指标在日周期中不是未来函数。

被人们普遍认为是未来函数的是比较长时间才被确认的ZIG函数,比如把参数设置为ZIG(3,5),就要等下一个ZIG(3,5)成立时才能被确认,就是说你把周期设置得越长,被确认的时间就越长(比如ZIG(3,30)),如果把它设置的很短(比如ZIG(3,1)),那就跟"high"差不多了.

有未来函数的公式对历史模拟的相当准确,对号称100%的.99%准确的公式要小心。

未来函数有:

zig

PEAK

PEAKBARS

TROUGH

TROUGHBARS

所以任何函数都具有未来函数特性,也没什么可怕。第一不要依据公式入市,第二还是不要依据公式入市!不要迷信公式。

公式只能给你一个信号,最终判断取舍要靠人。

关于未来函数的典型例子

有这么多人对一个叫鬼谷神算公式推崇,甚至将它说成'极品‘。我感到吃惊。应该把此公式的本质性的东西反映出来才是;该公式使用了未来函数,因而有“很高” 的准确率,因为它是马后炮所以100%准。这是需要大家十分注意的。

我不反对使用未来函数,但要充分认识其特有的“欺骗性”--已经出现的“结果"因后面的数据的改变而改变。

在此,我要说的是本来是一个及其简单的公式,故意弄成很复杂,高深,写了那么多行毫无相干的东西。是忽悠人的。我给“简化”了一下,只剩下6行。希望大家知道这样的公式人人可写。

这样的公式恐怕是别有用心之人忽悠卖钱的。

改成下面的公式,而且完全显示买卖两个信号。其核心是Z字转向于其他没关系。Z字转向即为未来函数

而ZIG函数的定义为 ,当前收盘价超过上次ZIG转向输出值的N%,则输出当前收盘价并ZIG转向。对该公式为50/5=10,即当价格变化量超过10%时转向。

对于下面的公式:

第一行,ZIG函数,它输出的是就是价格,为了欺骗乘以100;

第二行,是第一行的2日平均;

第三行,第四行是第一行,第二行的金叉,死叉;

而买卖信号的出现就是在于金叉,死叉。

请大家试试看。

简化的公式:

B:zIG(3,50/5)*100,colorwhite;

G:MA(B,2),coloryellow;

D:=CROSS(B,G)*1000,colorred;

W:=CROSS(G,B)*1000,colorblue;

DRAWTEXT(W=1000,B*1.05,'卖' ),colorgreen;

DRAWTEXT(D=1000,B*1.05,'买'),colorred;


原公式

公式名称:鬼谷神算

VAR1:=SUM(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),25);

VAR2:=HIGH-REF(HIGH,1);

VAR3:=REF(LOW,1)-LOW;

VAR4:=SUM(IF(VAR2>0 AND VAR2>VAR3,VAR2,0),25);

VAR5:=SUM(IF(VAR3>0 AND VAR3>VAR2,VAR3,0),25);

VAR6:=VAR4*100/VAR1;

VAR7:=VAR5*100/VAR1;

VAR8:=MA(ABS(VAR7-VAR6)/(VAR7+VAR6)*100,15);

VAR9:=(VAR8+REF(VAR8,15))/2;

A:=(VAR7>VAR6 AND VAR7>25 AND VAR6<25);

B:ZIG(3,50/5)*100,COLORWHITE;

G:MA(B,2),COLORYELLOW;

D:=CROSS(B,G)*1000,COLORRED;

W:=CROSS(G,B)*1000,COLORBLUE;

E:=REF(INDEXC,1);

F:=SMA(MAX(INDEXC-E,0),3,1)/SMA(ABS(INDEXC-E),3,1);

VAR10:=F AND F<8;

VAR11:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;

VAR12:=SMA(VAR11,3,1);

VAR13:=SMA(VAR12,3,1);

VAR14:=VAR13 AND VAR13<20;

MM:=A AND D AND VAR10 AND VAR14 ;

DRAWTEXT(W=1000,B*1.05,'卖' ),COLORGREEN;

DRAWTEXT(D=1000,B*1.05,'买'),COLORRED;

语言规范:

在自定义公式里面的各种符号(如,“;” )只能用半角不能用全角。

关键字    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。

4、时间格式:转换时间格式。

用法:FORMATTIME(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(20000808,19990606,2)其返回值为-2。注意:这里返回值有正负号。

算术函数:

1、绝对值:求绝对值。

用法: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中的较小值。例如:MIN(CLOSE,OPEN)返回开盘价和收盘价中的较小值。

5、求模运算:求模运算。

用法:MOD(A,B)返回A对B求模。例如:MOD(26,10)返回6。

6、求逻辑非:求逻辑非。

用法:NOT(X)返回非X,即当X=0时返回1,否则返回0。例如:NOT(5>3)返回0。

7、范围:介于某个范围之间。

用法:RANGE(A,B,C)表示A大于B同时小于C时返回1,否则返回0。例如:RANGE(CLOSE,MA(CLOSE,5),MA(CLOSE,10))表示收盘价大于5日均线并且小于10日均线。

8、求相反数:求相反数。

用法:REVERSE(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,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。

绘图函数

   位图

含义:在图形上绘制位图。

用法:

DRAWBMP(COND,PRICE,BMPFILE),当COND条件满足时,在PRICE位置画BMPFILE文件名指定的BMP位图(缺省路径为软件安装目录登录用户名)。

例如:DRAWBMP(CLOSE>OPEN,LOW,'SUN')表示当收阳时在最低价位置画软件安装目录登录用户名Sun.BMP位图。

※BMPFILE参数指定的BMP文件默认路径为当前用户目录,如果不带后缀名即表示BMP文件,也可带后缀名使用JPG和GIF文件。

也可不用用户目录而使用全路径,路径中的''要写两个以下字符串作为参数都是合法的,如果文件存在的话:

"SUN","SUN.BMP","SUN.JPG","SUN.GIF","C:\hexin\SUN.JPG"

填充背景

含义:根据条件填充背景区域。
 

 

公式导入教程: 【通达信公式源码导入方法教程】 【同花顺公式源码导入方法教程】 【大智慧新一代公式源码导入方法教程

 

 

如果以上指标公式不适用于您常用的行情软件

或者您想改编成选股公式,以便快速选出某种形态个股的话,

可以联系我们相关技术人员 QQ: 262069696  点击在线交流进行 有偿 改编!

 


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容