公式系统(答疑)¶
指标公式tip,不显示线或者不在左上方显示输出变量和值等信息。¶
A:C,NODRAW; {可以在左上方显示变量和输出值,但是不画线。}
NOTEXT1:MA(CLOSE,M1) ;
NOTEXT2:MA(CLOSE,M2) ;
NOTEXT3:MA(CLOSE,M3) ;
NOTEXT4:MA(CLOSE,M4) ;
nodraw和drawnull的区别¶
第一个是不画线显示数值 第二个是不画线 也不显示数值(值为无效值-)
AA:WINNER(C) ,NODRAW;
AA:WINNER(C) ,DRAWNULL;
这些前缀的输出就可以不显示输出的变量和输出变量的值等信息了。
公式脚本:排名:=INSORT('深沪A股','PSY',2,0) ; PSYMA:排名>=10; 用条件选股加入后选股,结果什么也选不出来?¶
‘深沪A股’版块名称中的字母要是英文输入法下的全角字符。引用系统里含大写字母的板块(如B股 AH对照),都按这个规则来写,不过不要引用含个股太多的股票最好不要超过100的板块,不然用这个INSORT函数,电脑几乎动不了,很卡很慢。
横向统计函数在个股上执行时,结果会各不相同?¶
原因是其他股票的K线要以当前个股的时间序列为模板进行过滤。
公式输出变量有值,为什么没有滑出线?¶
通达信的画线对于单个周期有值,前后两个周期都是无效值的情况是不画线的,只是画了一个点。所以一般要用BACKSET向前赋值函数来解决这个问题。
为什么分析图上指标的值随着分析图缩放而变化?¶
指标中应该用到了ema,tma,expma等函数,它们的计算结果本就是会随着参与计算的k线个数变化而变化的,这是它们的算法决定的。
ema的算法公式是:
Y=(2*c+(n-1) Y') /(n+1) ;{其他两个的算法也和这个很相似}
可以看出ema(c,n) 函数计算的结果和历史每一天的c值都有关系。
如果你希望看到的结果不变,可以设置分析图完全使用下载的日线数据。
我在编写指标时,用到了大盘收盘价INDEXC,但实际执行指标后,发现得不到完整的大盘历史数据。请问如何解决?¶
INDEXC 这样的大盘数据的历史数据部分是从下载到本地的历史数据中取得的。要下载完整历史日线。
另外,跨周期引用,引用其他股票k线,或者计算其他股票的指标时所使用的历史数据部分都会从本地下载数据中取。
电脑安装上XP3,一打开公式,中文汉字是乱码。拷贝到TXT后没有乱码,在.txt文件中拷过去是乱码,XP2不会有此现象。请问如何解决?¶
这是一个在Windows 2000和Windows XP系统中很常见的现象,属于设置问题。解决这个问题的方法是:
-
在复制文字前用“Ctrl+Shift”组合键调出中文输入法,以后再执行“复制”/“粘贴”操作就不会出现乱码问题了。
-
不使用系统自带的“文本编辑器”,安装EmEditor或UltraEdit文本编辑器,在里面选择“按ANSI方式粘贴”功能即可。
-
还有一种解决方法是在系统中是把默认文字输入法设为中文状态下的英文输入法。用鼠标在系统桌面上依次选择“开始→设置→控制面板→文字服务”,里面通常会有英语和简体中文两种语言,英语下面有“英语(美国)” 一类的项目,中文下面则有“简体中文输入法(美国)”、“微软拼音输入法”一类的项目。实际上,这个“简体中文输入法(美国)” 就是在中文状态下输入英文的。但是它与上面的英语下面的“英语(美国)”又不同,后者是在英文状态下输入英文。只要你把要这个“简体中文输入法(美国)”设为默认输入法(以后右下角输入法上面总是显示“Ch”,而不是“En”),就不会出现粘贴乱码的情况了。如果你的电脑中找不到这一项,说明你没有安装,要么通过系统盘安装,要么使用上面方法。
通达信软件的自定义指标由于某些原因突然消失后如何恢复?(重装系统或者是升级之后的也适用)¶
-
关闭通达信软件
-
进入通达信软件安装的文件夹,找到T0002文件夹进入
-
进入gs_bak文件夹,此文件夹内为公式备份
-
将日期为最近的以下三个文件改名即可。文件为: 20100310_PriGS.dat -->PriGS.dat ,20100310_PriCS.dat-->PriCS.dat ,20100310_PriText.dat-->PriText.dat 其中20100310为日期数,如10号的备份文件名就是30100310_PriGS.dat ,改名的规则就是20100310_PriGS.dat -->PriGS.dat
-
然后将改名后的三个文件复制到T0002目录内覆盖即可。
-
重启通达信软件。
选股不全问题¶
选股不全,原因很可能是历史数据缺失的问题。(给客户验证是数据问题的步骤)
如果客户说那个股票副图信号为1,但是该条件的选股公式没有选出哪只股票,那么就把这只股票的数据重新下载尽可能长的时间的数据,然后缩小选股范围(方便一眼看出选出来的股票包括刚刚下载了数据的那个股票),如果选出来此股,说明就是数据缺失问题。
例说
如选股公式:
DIF:=EMA(C,24) -EMA(C,48) ;
DEA:=EMA(DIF,12) ;
MACD:=2*(DIF-DEA) ;
BU:MACD<0 AND="AND" DIF="DIF" >0;
选股日期:2011年10月12日
选出来的股票中,不含有 “ST兰光 ST鲁北 ST三联 ST万鸿 象屿股份 新华联 浙报传媒”这几天股票,
而根据技术指标来看,很明显这几只票也是符合选股条件的。
这几个票的共同之处就是分别于今年的8/26、8/18、7/25、9/8、8/29 、7/8、 9/29有过涨跌幅不受限制。
试过好几个版本,包括最新的测试版,问题都是相同的。怎么回事儿?
验证是因为历史数据缺失造成的时候发现其中2个 都是中间有半年甚至一年停牌的。其他的几只没选出来的股票 ,猜测应该都有类似问题所以就没有验证了。
条件选股功能计算时是使用本地数据的,所以本地数据必须完整。下载2008年以后的完整数据再选,试试都成功选出来了。
一般而言选不全股票的那种条件选股中都包含了参数N。公式中的参数,那个参数的数值越大本地差K线数据的可能性就越大,所以下载的k线最少要满足里面用到的最大参数的值个数,本题中好像是“60”用到60日移动平均,和60日收盘平均了,如果哪个股票不满足60个连续的K线数据,哪个股票就选不出。
结论:选股时有些符合条件的没选出来 考虑两个要素:
1 历史数据是否足够 2 条件式边界值是否不够精确 x=0.1 写成0<x<0.2最好
扩展行情品种综合选股选不出来怎么回事儿?¶
系统——盘后数据下载 (最后一项扩展行情日线下载或者是港股期货日线下载,下载完整的扩展行情数据)
因为一般的使用选股时会提示本地数据不全,然后就问补全数据不,这时候一般客户为了选股都会选择确定,然后终于数据下完了可以选了,但是发现扩展行情的还是没有选出来,那是因为条件选股默认的补全日线数据,也是针对普通的深沪股票,而不是扩展行情。所以扩展行情选股还是要先下载扩展行情完整的日线数据。
公式管理器中引入指标公式,程序出错?¶
试着检查下自编公式,是否在该公式中自引用了。
有些客户的公式导入会提示“无法兼容的公式版本,导入失败”。¶
(公式导入导出功能是TCalc.dll这个dll控制的)
因为他们是用粘贴复制指标代码的方法建的文本文件,然后重命名为.tni文件的而不是从客户端导出的tni文件 ,所以会有这样的错误。
验证客户是不是有这个问题的方法很简单就是反键打开文件用记事本方式可以打开看到内容这样的tni文件就是不合法的,真正的tni文件打开看到的只会是乱码。
怎样在K线图的右边显示信息.¶
1 建主图叠加指标公式 DRAWTEXT_FIX(1,0.99,0.03,1,'右边显示信息') ,COLORGREEN;
2 ALT+F12 直接使用画线工具中的定点文本注释,在右侧直接书写文字注释。
区间过滤TFILT( C,1111212,0930,1111216,1500) 不能用怎么回事儿。¶
(区间过滤12月12日至12月16日收盘价公式)
日周期以上(包括日周期),把分钟参数设置为0就可以了如TFILT(C,1111212,0,1111216,0) 函数说明中有的。
求一段时间区间里的成交量的和。¶
方法一:
比方说你要统计的是2010年0101 到20100105的成交量和的话那就可以先一个sum函数SUM(VOL,5) 然后如果你取到20100105这天的这个值就可以了
REFDATE(SUM(VOL,5) ,1100105) ;
方法二:
Volsum:=IF(YEAR=1998 AND (MONTH>8 OR (MONTH=8 AND DAY>=3) ) AND (MONTH<12 OR (MONTH=12 AND DAY<=20) ) ,v,0) ;
这个可以使得历史某天以来某只股票的 这个日期范围内的股票的vol都还是vol 这个日期职位的 volsum的值都为零
所以有了上面这句话 还要一句话就可以实现了
SUM(VOLSUM,0) ;
17 求某段时间的最高价。?(求最高价)¶
1)某绝对时间段最高价
此脚本段求1998年8月3日到1998年12月20日间的最高价:
HH:=IF(YEAR=1998 AND (MONTH>8 OR (MONTH=8 AND DAY>=3) ) AND (MONTH<12 OR (MONTH=12 AND DAY<=20) ) ,H,0) ;
{HH变量在该时间段内等于H,其他时间为0}{使得HH在规定期内是每日的最高值,其他的时间内都为0}
HHV(HH,0) ;{此例求1998年8月3日到1998年12月20日间的最高价}
18选股:选出2007年6月1日以来连续4天跌停的股票。¶
对于之前不可以选定选股时间范围的版本:
DT:=(C-REF(C,1) ) /REF(C,1) *100<=-9;
TJ:=EVERY(DT,4) ;
SHUCHU:IF(( YEAR>2007 OR (YEAR=2007 AND ( MONTH>6 OR (MONTH=6 AND DAY>=1) ) ) ) ,TJ,0) ;
可以设定选股时间范围的新版本:
DT:=(C-REF(C,1) ) /REF(C,1) *100<=-9;
TJ:EVERY(DT,4) ;{注意需要在条件选股中设定选股的日期范围}
公式中引用单只股票的基本行情数据 (高开低收)¶
问:请问如何区分代码相同的品种?比如深康佳的收盘价为:"000016$C",同样上证50的代码也是000016,这两个怎么区分开?
答:"SH000016$C"; SZ是限制深圳市场 刚好个股000016是深圳 000016指数是上证的
引用个股的行情数据(非基础函数)¶
方法一:$操作符
想比较指定的两个股票000001和000002的收盘价。但是那个引用操作符“$”只能引用基础函数 。
方法二:
编写甲乙二个公式,用乙公式引用甲公式。
例如甲公式取名:买入价。
买1价:DYNAINFO(20) ;
用乙公式引用甲公式:
CALCSTOCKINDEX('000001SZ','买入价',1) ;
CALCSTOCKINDEX('000002SZ','买入价',1) ;
这样儿是可以取到这两个股票当时的即时的买一价,但是这个是即时行情数据 其实觉得没有第一种方法人性化,但是这个方法来引用个股非基础函数(H L O C)的好方法。CALCSTOCKINDEX。
CALCSTOCKINDEX(指标说明)
用法:CALCSTOCKINDEX(股票代码,指标名称,指标线) ,
返回股票该指标相应输出的计算值.
例如:CALCSTOCKINDEX('600000SH','KDJ',3) 表示上证600000股票的KDJ指标第三个输出即J之值
有客户反应con2str函数有问题的¶
因为这个函数转换后的值必须用drawtext来输出才可以正确显示。
如何在分时主图指标中引用日线的数据¶
(要点是此指标要是主图叠加类型的指标 因为只有这类型的指标才可以在分时图中选择被使用)
比如在分时主图上画昨日的最高值最低值的线
1.先做一个次指标FSSUB:
LASTHIGH:REF(HIGH,1) ;
LASTLOW:REF(LOW,1) ;
2.再做一个主指标FS:(主图叠加类型)
ZG:FSSUB.LASTHIGH#DAY;
ZD:FSSUB.LASTLOW#DAY;
就可以在分时图主图上使用这个FS指标了
注意:跨周期引用需要下载完整的日K线
直接用上面1做成主图叠加指标加入到k线图和2引用日线数据#DAY是有区别的。直接在分时的引用就是分钟周期的指标公式的值。
不同含义的数据拿来对比的问题¶
例1:
主力风向标的统计数据应该是和DDX的统计值一样的,其实主力风向标引用的应该也就是DDX的数值吧,这个没有疑问。可是DDX为负值,也就是说大单流出是大于大单流入的,可为什么同一只股票DDX为负值,为什么资金博弈的超大单和大单统计却是资金大幅流入。
DDX:(逐笔买入大单成交-逐笔卖出大单成交) *10000/流通股本(股)
(LARGEINTRDVOL-LARGEOUTTRDVOL) ;{这个是(逐笔买入大单成交-逐笔卖出大单成交) }
分档解释:
L2\_VOL(N,M) {N(0--3):超大/大/中/小四档处理,M(0--3) :买入/卖出/主买/主卖四类}
也可以用下面的lev2分档函数表示
(L2\_VOL(0,0) +L2\_VOL(1,0) ) -(L2\_VOL(0,1) +L2\_VOL(1,1) ) ;
{逐笔买入大单成交量,相当于L2\_VOL(0,0) +L2\_VOL(1,0) ,就是分档中的超大单和大单的买入 资金流向功能专用};
{逐笔卖出大单成交量,相当于L2\_VOL(0,1) +L2\_VOL(1,1) ,就是分档中的超大单和大单的卖出 资金流向功能专用};
当日超大单:当日超大单净流入(超大单主买金额-超大单主卖金额)即 L2_AMO(0,2) -L2_AMO(0,3)
当日大单:当日大单净流入(大单主买金额-大单主卖金额) 即 L2_AMO(1,2) -L2_AMO(1,3)
区别:一个是分档中的买卖 一个是分档中的主买主卖 ;
一个是量一个是金额 所以不是一个东西。不一样是正常的!
例2:
TRADENUM=逐笔成交总单数
TRADEINNUM=逐笔买入成交单数
TRADEOUTNUM=逐笔卖出成交单数
此三个函数个人以为:逐笔成交总单数=逐笔买入成交单数+逐笔卖出成交单数;
实际上逐笔成交总单数与(逐笔买入成交单数+逐笔卖出成交单数) 之间并不相等,相差很大。
BUYNUM:TRADEINNUM{=逐笔买入成交单数}; {可以理解为所有的超大单 大单 中单 小单的买卖的总单数}
BUYNUM1:L2\_VOLNUM(0,0) +L2\_VOLNUM(1,0) ;{L2\_VOLNUM(N,M) 单数分档,按: N(0--1) :(超大+大) /(中+小) ,M(0--1) :买/卖二类,资金流向功能专用};
SELLNUM:TRADEOUTNUM{=逐笔卖出成交单数};
SELLNUM1:L2\_VOLNUM(0,1) +L2\_VOLNUM(1,1) ;{L2\_VOLNUM(N,M) 单数分档,按: N(0--1) :(超大+大) /(中+小) ,M(0--1) :买/卖二类,资金流向功能专用};
TRADENUM=逐笔成交总单数=超大 大 中的主买 主卖的总单和 。(买入:主买+被买 卖出:主卖+被卖)