(2014-01-02 15:19:08)

(一)行情函数
1)HIGH(H)最高价返回该周期最高价.
2)LOW(L)最低价返回该周期最低价.
3)CLOSE(C)收盘价返回该周期收盘价.
4)VOL(V)成交量(手)返回该周期成交量.
5)OPEN(O)开盘价返回该周期开盘价.
6)ADVANCE 上涨家数返回该周期上涨家数. (本函数仅对大盘有效)
7)DECLINE 下跌家数返回该周期下跌家数. (本函数仅对大盘有效)
8)AMOUNT 成交额(元)返回该周期成交额.
9)VOLINSTK 持仓量返回期货该周期持仓量.
10)QHJSJ 期货结算价返回期货该周期结算价.
11)BUYVOL 外盘(手)返回外盘,即时行情数据
12)SELVOL 外盘(手)返回外盘
13)ISBUYORDER 主动性买单返回当前成交是否为主动性买单.用法: ISBUYORDER,当本笔成交为主动性买盘时,返回1,否则为0
14)DHIGH 不定周期最高价返回该不定周期最高价.
15)DOPEN 不定周期开盘价返回该不定周期开盘价.
16)DLOW 不定周期最低价返回该不定周期最低价.
17)DCLOSE 不定周期收盘价返回该不定周期收盘价.
18)DVOL 不定周期成交量价返回该不定周期成交量价.
19)NAMELIKE 模糊股票名称返回股票名称是否以参数开头.
用法: if(NAMELIKE('ST'),x,y);
20)CODELIKE 模糊股票代码返回股票代码是否以参数开头.
用法: if(CODELIKE('600'),x,y);
21)INBLOCK 属于某板块返回股票是否属于某板块.
用法: if(INBLOCK('沪深300'),x,y);
(二)时间函数
1)PERIOD 周期取得周期类型.
结果从0到11,依次分别是1/5/15/30/60分钟,日/周/月,多分钟,多日,季,年.
2)DATE 日期取得该周期从1900以来的的年月日. 用法: DATE 例如函数返回1000101,表示2000年1月1日,DATE+19000000后才是真正的日期值
3)TIME 时间取得该周期的时分秒.用法: TIME 函数返回有效值范围为(000000-235959)
4)YEAR 年份取得该周期的年份.5)MONTH 月份取得该周期的月份.用法: 函数返回有效值范围为(1-12)
6)WEEKDAY 星期取得该周期的星期数.用法: WEEKDAY 函数返回有效值范围为(1-7)
7)DAY 日取得该周期的日期.用法: DAY 函数返回有效值范围为(1-31)
8)HOUR 小时取得该周期的小时数.用法: HOUR 函数返回有效值范围为
(0-23),对于日线及更长的分析周期值为0
9)MINUTE 分钟取得该周期的分钟数.用法: MINUTE 函数返回有效值范围为(0-59),对于日线及更长的分析周期值为0
10)FROMOPEN 分钟求当前时刻距开盘有多长时间.用法: FROMOPEN FROMOPEN.返回当前时刻距开盘有多长时间,单位为分钟.例如:当前时刻为早上十点,则返回31.
11)TFILT 分钟对指定时间段的数据进行过滤,该时间段以外的数据无效.
用法: TFILT(X,D1,M1,D2,M2) 例如TFILT(CLOSE,1040101,1025,1040101,1345)表示在2004年1月1日的10:25到2004年1月1日的13:45的收盘价是有效的.周期以日为基本单位的,分时为0有效.
12)DATETODAY 上指纪元指定日期到1990.12.19的天数.
用法: DATETODAY(date)
DATETODAY(date).返回date到1990.12.19的天数.有效日期为(901219-1341231) 例如:DATETODAY(901219)返回0.
13)DAYTODATE 转换日期求1990.12.19后第若干天的日期.
用法: DAYTODATE(N)
DAYTODATE(N).返回1990.12.19后第N天的日期.有效天数为(0-20000)
例如:DAYTODATE(0)返回901219.
14)TIMETOSEC 当日秒数求指定时刻距0时有多长时间.
用法: TIMETOSEC(time)
TIMETOSEC(time).返回time时刻距0时有多长时间,单位为秒.有效时间为
(0-235959)
例如:TIMETOSEC(93000)返回34200.
15)SECTOTIME 转换时间求0时后若干秒是什么时间.
用法: SECTOTIME(N)
SECTOTIME(N).返回0时后N秒是什么时间.有效秒数为(0-86399)
例如:SECTOTIME(34200)返回93000.
引用函数HHVBARS和LLVBARS的运用引用函数BACKSET等4个函数的运用
引用函数BACKSET等4个函数的运用
(2007-05-1 11:56:19)
1、函数:BACKSET 向前赋值将当前位置到若干周期前的数据设为1。用法:BACKSET(X,N),X非0,则将当前位置到N周期前的数值设为1。例如:BACKSET(CLOSE>OPEN,2),若收阳则将该周期及前一周期数值设为1,否则为0。
请看下面指标:
CSAR:SAR(10,2,20),LINETHICK2;{表示计算10日抛物转向,步长为2%,极限值为20%。}
drawtext(CSAR>=H,CSAR,'°'),color00ff00;{当CSAR大于等于最高价,在CSAR 上画。状线}
drawtext(CSAR<=L,CSAR,'°'),colorred;{当CSAR小于等于最低价,在CSAR上画。状线}
TJ1:=BACKSET(SARTURN(10,2,20)<>0,2);{若10日抛物转向,步长为2%,极限值为20%,则将该周期及前一周期数值设为1,否则为0。}
TJ2:=REF(TJ1,1);{引用上一周期TJ1}
drawtext(TJ2,CSAR,'°'),coloryellow;{TJ2条件满足在CSAR画。状线} STICKLINE(C>O,O,C,4,0),COLORRED;
STICKLINE(C>O,H,C,1,1),COLORRED;
STICKLINE(C>O,O,L,1,1),COLORRED;
STICKLINE(C<=O,O,C,4,0),COLORffcc66;
STICKLINE(C<=O,H,O,1,1),COLORffcc66;
STICKLINE(C<=O,L,C,1,1),COLORffcc66;
{1.向下跌破转向点,卖出;向上突破转向点,买入
2.市道趋势明显时,转向点信号准确}
上面是一个抛物转向指标,在第二步句用到了BACKSET函数,与另一个抛物转向点函数SARTURN构成了一个指标语句
(三)引用函数
1)DRAWNULL 无效数返回无效数.用法:DRAWNULL 例如
IF(CLOSE>REF(CLOSE,1),CLOSE,DRAWNULL)表示下跌时分析图上不画线
2)BACKSET 向前赋值将当前位置到若干周期前的数据设为1.用法: BACKSET(X,N),若X非0,则将当前位置到N周期前的数值设为1.例
如:BACKSET(CLOSE>OPEN,2)若收阳则将该周期及前一周期数值设为1,否则为0
3)BARSCOUNT 有效数据周期数求总的周期数.用法: BARSCOUNT(X)第一个有效数据到当前的天数例如:BARSCOUNT(CLOSE)对于日线数据取得上市以来总交易日数,对于分笔成交取得当日成交笔数,对于1分钟线取得当日交易分钟数
4)CURRBARSCOUNT到最后交易日的周期数求到最后交易日的周期数.用法: CURRBARSCOUNT 求到最后交易日的周期数.例如
DRAWKLINE(HIGH,OPEN,LOW,CLOSE); DRAWTEXT(CURRBARSCOUNT= 20,L*0.98,'-20');
5)TOTALBARSCOUNT 总的周期数求总的周期数.用法: TOTALBARSCOUNT 求总的周期数
6)ISLASTBAR 是否为最后一个周期判断是否为最后一个周期.用法: ISLASTBAR 判断是否为最后一个周期
7)BARSLAST 上一条件成立位置上一次条件成立到当前的周期数.用法: BARSLAST(X):上一次X不为0到现在的天数例
如:BARSLAST(CLOSE/REF(CLOSE,1)>=1.1)表示上一个涨停板到当前的周期数例BARSLAST(C/REF(C,1)>1.08); 另BARSLAST(REF(C,1)/L>1.05);一方面BARSLAST(B<-0.04);另A1:=BARSLAST(REF(CROSS(DIFF,DEA),1));上次昨日DIFF上穿DEA距今天数
8)BARSSINCE 第一个条件成立位置第一个条件成立到当前的周期数.用法: BARSSINCE(X):第一次X不为0到现在的天数例如:BARSSINCE(HIGH>10)表示股价超过10元时到当前的周期数
9)BARSSINCEN N周期内首个条件成立位置N周期内第一个条件成立到当前的周期数.
用法: BARSSINCEN(X,N):N周期内第一次X不为0到现在的天数
例如:BARSSINCEN(HIGH>10,10)表示10个周期内股价超过10元时到当前的周期数
10)BARSSINCE 首个条件成立位置第一个条件成立到当前的周期数.
用法: BARSSINCE(X):第一次X不为0到现在的天数
例如:BARSSINCE(HIGH>10)表示股价超过10元时到当前的周期数
11)COUNT统计统计满足条件的周期数.用法: COUNT(X,N),统计N周期中满足X条件的周期数,若N=0则从第一个有效值开始.例
如:COUNT(CLOSE>OPEN,20)表示统计20周期内收阳的周期数,
例如:2次回踩5日均线不破的选股公式MA5:=MA(C,5);回
踩:=CROSS(C,MA5) ;COUNT(回踩,4)=2 AND C>MA(C,5);
12)BARSLASTCOUNT 统计条件连续成立次数统计连续满足条件的周期数.用法: BARSLASTCOUNT(X),统计连续满足X条件的周期数.例
如:BARSLASTCOUNT(CLOSE>OPEN)表示统计连续收阳的周期数
A1:=MA(C,20);B60:=BARSLASTCOUNT(C>A1);D60:B60>60 收盘价在20日均线之上至少60天选股公式
13)DMA 动态移动平均求动态移动平均.用法: DMA(X,A),求X的动态移动平均.算法: 若Y=DMA(X,A)则Y=A*X+(1-A)*Y',其中Y'表示上一周期Y值,A必须小于1.例如:DMA(CLOSE,VOL/CAPITAL)表示求以换手率作平滑因子的平均价14)HHV 最高值求最高值.用法: HHV(X,N),求N周期内X最高值,N=0则从第一个有效值开始. 例如:HHV(HIGH,30)表示求30日最高
价另 HHV(REF(C,1),5)/C>1.05 表示5日内昨收的最高值/收盘价>1.05
15)HHVBARS上一高点位置求上一高点到当前的周期数.用法: HHVBARS(X,N):求N周期内X最高值到当前周期数,N=0表示从第一个有效值开始统计例如:HHVBARS(HIGH,0)求得历史新高到到当前的周期
数HHVBARS(V,阳线)
16)HOD 高值名次求高值名次.
用法: HOD(X,N):求当前X数据是N周期内的第几个高值,N=0则从第一个有效值开始.
例如:HOD(HIGH,20)返回是20日的第几个高价
17)LLV 最低值求最低值.用法: LLV(X,N),求N周期内X最低值,N=0则从第一个有效值开始. 例如:LLV(LOW,0)表示求历史最低价
18)LLVBARS 上一低点位置求上一低点到当前的周期数.用法:
LLVBARS(X,N):求N周期内X最低值到当前周期数,N=0表示从第一个有效值开始统计例如:LLVBARS(HIGH,20)求得20日最低点到当前的周期数
19)LOD 低值名次求低值名次.
用法: LOD(X,N):求当前X数据是N周期内的第几个低值,N=0则从第一个有效值开始.
例如:LOD(LOW,20)返回是20日的第几个低价
20)REVERSE 求相反数求相反数.用法:REVERSE(X)返回-X.例如REVERSE(CLOSE)返回-CLOSE
21)REF 日前的引用若干周期前的数据.用法: REF(X,A),引用A周期前的X值. 例如:REF(CLOSE,1)表示上一周期的收盘价,在日线上就是昨收
22)REFV 日前的引用若干周期前的数据(未作平滑处理).
用法: REFV(X,A),引用A周期前的X值.A可以是变量.
平滑处理:当引用不到数据时进行的操作。
例如:REFV(CLOSE,BARSCOUNT(C)-1)表示第二根K线的收盘价.
23)REFX 日后的引用若干周期后的数据(未作平滑处理).
用法: REFX(X,A),引用A周期后的X值.A可以是变量.
平滑处理:当引用不到数据时进行的操作。
例如:REFX(CLOSE,1)表示下一周期的收盘价,在日线上就是明天收盘价
24)REFXV 日后的引用若干周期后的数据(平滑处理).
用法: REFXV(X,A),引用A周期后的X值.A可以是变量.
平滑处理:当引用不到数据时进行的操作。此函数中,平滑时使用上一个周期的引用值。
例如:TT:=IF(C>O,1,2);
REFXV(CLOSE,TT);表示阳线引用下一周期的收盘价,阴线引用日后第二周期的收盘价.
25)REFDATE 日引用自1900年以来指定日期的数据.用法: REFDATE(X,A),引用A日期的X值. 例如:REFDATE(CLOSE,1011208)表示2001年12月08日的收盘价
26)SUM 累和求总和.用法: SUM(X,N),统计N周期中X的总和,N=0则从第一个有效值开始.例如:SUM(VOL,0)表示统计从上市第一天以来的成交量总和
27)FILTER 过滤过滤连续出现的信号.用法:FILTER(X,N):X满足条件后,删除其后N周期内的数据置为0. 例如:FILTER(CLOSE>OPEN,5)查找阳线,5天内再次出现的阳线不被记录在内
28)FILTERX 反向过滤反向过滤连续出现的信号.
用法:FILTERX(X,N):X满足条件后,将其前N周期内的数据置为0.
例如:FILTERX(CLOSE>OPEN,5)查找阳线,前5天内出现过的阳线不被记录在内
29)TFILTER 交易信号过滤过滤连续出现的交易信号.
用法:TFILTER(开仓,平仓,N);过滤掉开仓(平仓)信号发出后、下一个平仓(开仓)信号发出前的所有开仓(平仓)信号.
N=1表示仅对开仓信号过滤;
N=2表示仅对平仓信号过滤;
N=0表示对开仓、平仓信号都过滤;
例如:ENTERLONG:TFILTER(开仓,平仓,1);
EXITLONG:TFILTER(开仓,平仓,2);
通达信新函数应用一例:NAMELIKE (源码交流)
NAMELIKE模糊股票名称
CODELIKE 模糊股票代码
以此可应用于归类选择或分类过滤
权重,如Y=(X*M+Y'*(N-M))/N
34)TMA返回移动平均
用法:TMA(X,N,M),如若Y=TMA(X,N,M) 则Y=(N*Y'+M*X), 其中Y'表示上一周期Y值。初值为M*X
35)MA 简单移动平均返回简单移动平均用法:MA(X,M):X的M日简单移动平均
36)EMA 指数移动平均返回指数移动平均用法:EMA(X,M):X的M日指数移动平均
37)MEMA 平滑移动平均返回平滑移动平均用法:MEMA(X,M):X的M日平滑移动平均
38)EXPMA 指数移动平均返回指数移动平均用法:EXPMA(X,M):X的M日指数移动平均
39)EXPMEMA 指数平滑移动平均返回指数平滑移动平均用
法:EXPMEMA(X,M):X的M日指数平滑移动平均
40)XMA 偏移移动平均返回偏移移动平均用法:XMA(X,M):X的M日偏移移动平均
41)RANGE 介于某一范围之间 RANGE(A,B,C):A在B和C范围之间.用法: RANGE(A,B,C)表示A大于B同时小于C时返回1,否则返回0
42)CONST 取值设为常数 CONST(A):取A最后的值为常量.用法:
CONST(INDEXC)表示取大盘现价
43)TOPRANGE 当前值是近多少周期内的最大值.
用法: TOPRANGE(X):X是近多少周期内X的最大值
例如:TOPRANGE(HIGH)表示当前最高价是近多少周期内的最高价
44)LOWRANGE 当前值是近多少周期内的最小值.
用法: LOWRANGE(X):X是近多少周期内X的最小值
例如:LOWRANGE(LOW)表示当前最高价是近多少周期内的最小价
45)FINDHIGH 寻找指定周期内的特定最大值N周期前的M周期内的第T个最大值.
用法: FINDHIGH(VAR,N,M,T):VAR在N日前的M天内第T个最高价
46)FINDHIGHBARS 寻找指定周期内的特定最大值N周期前的M周期内的第T个最大值到当前周期的周期数.
用法: FINDHIGHBARS (VAR,N,M,T):VAR在N日前的M天内第T个最高价到当前周期的周期数
47)FINDLOW 寻找指定周期内的特定最小值N周期前的M周期内的第T个最小值.
用法: FINDLOW(VAR,N,M,T):VAR在N日前的M天内第T个最低价
48)FINDLOWBARS 寻找指定周期内的特定最小值N周期前的M周期内的第T个最小值到当前周期的周期数.
用法: FINDLOWBARS(VAR,N,M,T):VAR在N日前的M天内第T个最低价到当前周期的周期数.
(四)逻辑函数
1)CROSS 上穿两条线交叉.用法: CROSS(A,B)表示当A从下方向上穿过B时返回1,否则返回0 例如:CROSS(MA(CLOSE,5),MA(CLOSE,10))表示5日均线与10日均线交金叉
例:
去除ST
S1:=IF(NAMELIKE('S'),0,1);{取得股票名称中的第一个字符为返回条件}
S2:=IF(NAMELIKE('*'),0,1);
ST:S1 AND S2;{最后一句NOT(ST)用取返就成专门选出ST股}
这里的ST条件就在选股中去除了股票名称以S开头及*开头的股票,XD及新股N可用同样方法,创业版可用CODELIKE函数,因为代码300。
例:过滤条件(留ST):= NAMELIKE('ST') OR NAMELIKE('*') {OR CODELIKE('3')}{创业板}
OR BARSCOUNT(V)<=100{次新} OR{总量}DYNAINFO(9)=0{停牌} ;
去掉ST:IF(NAMELIKE('*ST'),0,1) AND IF(NAMELIKE('S'),0,1) and
IF(DYNAINFO(9)=0{停牌},0,1) ;
去掉板块:=IF(NAMELIKE('*ST'),0,1) AND IF(NAMELIKE('S'),0,1) AND
IF(DYNAINFO(9)=0,0,1) AND IF( CODELIKE('3'),0,1) AND
IF( CODELIKE('002'),0,1);
30)TTFILTER 交易信号过滤过滤多空交易信号.
用法:TTFILTER(多头买入开仓,多头卖出平仓,空头卖出开仓,空头买入平仓,N);
1.过滤掉多(空)开仓信号发出后、下一个多(空)平仓信号发出前的所有多(空)开仓信号.
2.多(空)开仓信号发出且空(多)仓已建时,要发出一个平空(多)仓的信号.
3.过滤掉多(空)平仓信号发出后、下一个多(空)开仓信号发出前的所有多(空)平仓信号.
N=1表示仅对多头开仓信号过滤;
N=2表示仅对多头平仓信号过滤;
N=3表示仅对空头开仓信号过滤;
N=4表示仅对空头平仓信号过滤;
N=0表示对合并多空开仓、平仓信号;
例如:ENTERLONG:TTFILTER(多头买入开仓,多头卖出平仓,空头卖出开仓,空头买入平仓,1);
EXITLONG:TTFILTER(多头买入开仓,多头卖出平仓,空头卖出开仓,空头买入平仓,2);
ENTERSHORT:TTFILTER(多头买入开仓,多头卖出平仓,空头卖出开仓,空头买入平仓,3);
EXITSHORT:TTFILTER(多头买入开仓,多头卖出平仓,空头卖出开仓,空头买入平仓,4);
31)TR 真实波幅求真实波幅.
用法: TR,求真实波幅.例如:ATR:=MA(TR,10);
表示求真实波幅的10周期均值
32)SUMBARS 累加到指定值的周期数向前累加到指定值到现在的周期数.用法: SUMBARS(X,A):将X向前累加直到大于等于A,返回这个区间的周期数例如:SUMBARS(VOL,CAPITAL)求完全换手到现在的周期数
33)SMA 移动平均返回移动平均用法:SMA(X,N,M):X的M日移动平均,M为