引用数据和指标

来自tradeStar帮助系统
(版本间的差异)
跳转到: 导航, 搜索
(参数说明)
(easyLanguage兼容引用函数)
第131行: 第131行:
 
=easyLanguage兼容引用函数=
 
=easyLanguage兼容引用函数=
 
OpenX,CloseX,HighX,LowX,VolX,AmountX系列函数
 
OpenX,CloseX,HighX,LowX,VolX,AmountX系列函数
这个系列的函数只能用在逐根模式
+
这个系列的函数只能用在逐根模式。
跟普通的引用不同,它们并非直接引用大周期数据,而是用1分钟数据产生的。
+
跟RefDataEx不同,它们并非使用本周期数据合成日线,而是直接取现成日线,所以有可能的话最好用RefDataEx来代替。

2013年9月18日 (三) 18:27的版本

目录

引用的概念

引用的概念有广义和狭义的分别。

广义的引用泛指一切访问数据的方式,既包括对其他品种和周期的访问吗,也包括对本图表上,本品种、本周期的数据的访问。例如ref,hhv,data2,data10甚至ma函数都可以归入广义的引用函数。

而狭义的“引用”,是指调用非本图上的,其他品种的,其他周期的数据。这里主要讨论狭义的引用。下面提到引用时只要不特别说明,都是指狭义引用。


引用分为两大类,第一类是引用原始K线数据,第二类是引用指标数据。

其实引用指标也可以理解为引用数据的一种。引用指标可以理解为对引用数据直接加工再返回的方式。

引用函数

服务于引用的函数有以下这些

refData、refIndi、refDLL

OpenD、HighD、LowD、CloseD系列

RefDataEx、RefIndiEx


除此之外,还有为了兼容而支持的stkindi、"xxx.yyy#min5"、“close##day”等引用方式,是用refData和refIndi实现的。尽管部分功能相同,但我们鼓励大家使用参数意义更明确、功能更强的refData、refIndi、refDataEx、refIndiEx等函数。


用途 refData,refIndi主要用于逐行模式的指标显示。

refDataEx,refIndiEx主要用于逐根模式的交易策略。


OpenD,HighD等主要是为了兼容easyLanguage,如果不是必须,建议使用refDataEx来代替。


策略中跨周期引用

refDataEx和refIndiEx

在策略中引用数据或指标需要用到refDataEx和refIndiEx函数

同样的,这两个函数也是只能用在逐根模式。

refDataEx与refData的区别:

 在引用到大周期数据时,

 refData和refIndi是直接用大周期历史数据计算而成。

 refDataEx和refIndiEx用到的数据,是由主图的小周期类型数据,在每一个小周期,不断插值拼接成大周期,再进行计算。


这么做的目的是,测评的时候能得到当时精确的大周期值。

例如,1分钟引用日线,那么,每一个1分钟,都能得到当时那1分钟的日线的收盘,而不是那1分钟所在那一天的最后一分钟的日线收盘。

这样就杜绝了未来数据,让历史信号精确匹配。

例如,主图是5分钟K线,引用“沪深300”日线的5日均线。

refIndiEx( '399300', 'ma.m1', P_DAY,1);

那么,首先取出沪深300的5分钟线,然后用这些5分钟线合成日线,然后用合成的日线计算5日均线。

注意事项

在逐根时,不要引用逐行指标。

上例中的refIndiEx( '399300', 'ma.m1', P_DAY,1);是个不好的例子,因为它引用了逐行的ma指标。

有可能的话,自己写一个#run_by_bar的ma指标,然后引用它。

refDataEx和refIndiEx的局限

由于数据是由小周期数据(典型应用里都是分钟数据)组合而成,那么有可能所有分钟得到的最高最低值,不一定能和日线的最高最低值匹配。原因是日线的最高最低是由交易所提供,而分钟线的最高最低,是从分笔得来,而分笔是一个均值,不一定能达到真正的最高最低。

对于nextBar交易,小周期拼接可以大大提升策略的进入时机的精确性;

而对于运行在thisBar模式下的交易,小周期拼接的精确性,依然无法达到分笔插值的程度。

refIndiEx实例

rr:RefIndiEx('000001.SZ', 'RSI.RSI1', P_Day, 2, 20); //计算深发展的参数为20的日线的RSI 
rr1:rr[1];//深发展昨天收盘时的RSI值
rr0:rr[0];//深发展这一刻的日线RSI值

参数说明

refData、refIndi、refDataEx、refIndiEx等包括以下参数。

  Symbol:品种代码,如'600001.SH'。也可以写,代表当前品种。
  DataType:引用的数据类型,包括开、高、低、收、量、额、持仓
  Period:包括 default,分笔、1分钟5分钟等。
  Align:对齐标志。0代表不对齐。1代表对齐。
  nCount:数据数量。

关于nCount

nCount这个参数在不对齐模式下才有用。


关于对齐

首先,对齐是之前设计没想清楚时留下的痕迹,是应该要放弃掉的一个参数。 一般用户,只需总是选对齐就可以了。

而RefDataEx和RefIndiEx这两个后来新增的函数已经放弃了这个参数,并且总是工作在不对齐模式下。

但这里还是要解释一下这个参数的来历,以帮助大家更好地理解实现原理。

我们都知道,一份历史数据是有很多根的。对于股票,1天会产生1根日线和240根1分钟线。

我们处理数据时通常是以下标的形式对这些数据顺序逐个处理的。

这就产生一个问题,同样是下标1,在1分钟线是指向今天的时间,而日线就可能指向昨天。

为了让相同的下标下,1分钟和日线都同样指向今天,就需要对今天日线进行复制,并填充到下标1,以便让下标1依然是今天的日线。

例如,当1分钟与日线相对,那么就要填充239根相同的日线。


以上为了让时间落在同一范围内的动作就称之为对齐。

大周期引用小周期数据不考虑对齐

我们认为,在大周期调用小周期数据的话,不考虑、不存在对齐的问题。例如,如果在日线调用1分钟数据,如果要对齐,势必需要压缩合并1分钟数据。合并的结果,其实把1分钟变成了日线,那不如就直接调用日线好了,没必要调用1 分钟。所以,如果在大周期调用小周期数据,进行refData的话,align参数是忽略的。


当需要方便的访问到昨天或昨天之前的大周期数据时,不对齐比较好。上面已经讲到,为了对齐,需要平白的填充很多数据到日线中。那么如果我想在今天访问昨天的日线怎么办?假如不对齐,只需要访问[1]就可以得到昨天日线,如果作了对齐,那还要查找对比时间,比较麻烦。


对于refDataEx,当nCount为1,那么每次返回合成的大周期数据的最新值。如果nCount为2,那么每次返回合成的大周期数据的最新值,和大周期上一周期的值。

easyLanguage兼容引用函数

OpenX,CloseX,HighX,LowX,VolX,AmountX系列函数 这个系列的函数只能用在逐根模式。 跟RefDataEx不同,它们并非使用本周期数据合成日线,而是直接取现成日线,所以有可能的话最好用RefDataEx来代替。

个人工具
名字空间

变换
操作
导航
工具箱