引用本周起指标一直如下写,可以正常使用:
MStr:=NUMTOSTR(M,0);
barnum := LARGE(CURRBARSCOUNT ,BARPOS,1) ;
某值 : STKINDIEX('' ,'某指标.某值 ( '&MStr&')',0 ,DATAPERIOD , 0,barnum ),colorstick;
问题一: barnum 我无法固定赋值成一百,只能如上取得很大,取到所有的K线数目。我指标里实际只用了20根k线,为什么赋值 barnum :=100 使用就错误?
问题二:如上的正确的写法在分钟级别以上K线都是正确的,到了分笔成交的Ticket级别这样引用就很多错误,为什么?
高人指点我下,谢谢~~
barnum 的计算是在当前的指标里面对吧。 引用函数的最后一个参数指的是被引用数据的数据使用量。 我们传入的参数是针对被引用指标的数据量。你这里这样计算barnum不管公式对不对,计算的结果都是基于当前周期。并没有合理的限制好被引用指标的数据。 会出现什么情况自然不好说了。
[此贴子已经被作者于2017/11/23 16:39:15编辑过]
代码帖完整点。我本地测试下。
被引用部分的代码和当前运行代码。
[此贴子已经被作者于2017/11/23 16:42:19编辑过]
指标-进场:
BuyCondition: c>HHV(ref(h,1),2) AND h>HHV(ref(h,1),1) AND c>ref(c,1) , COLORGREEN ;
SellCondition : c<LLV(ref(LOW,1),2) AND l<LLV(ref(LOW,1),1) AND c<ref(c,1) ,COLORRED ;
系统:
barnum := LARGE(CURRBARSCOUNT ,BARPOS,1) ;
signal_buyCondition: STKINDIEX('' ,'指标-进场.BuyCondition',0 ,DATAPERIOD , 0,barnum ),colorstick;
signal_sellCondition: STKINDIEX('' ,'指标-进场.SellCondition',0 ,DATAPERIOD , 0,barnum ),colorstick;
如上引用没问题,如果改为barnum := 100就失效;
我刚刚测试了,填写100也是可以的。 但是这个你填100的时候,那被引用的指标就是只用当前最新的100个K的数据,不会因为“系统”K线位置移动,和ma均线这种移动计算不一样。
你可以看下你“系统”在最新100K上是否有数据,超过100是不是就没数据了。因为你这个是引用同周期的,可以这样对比。周期不一样的话,还要大致计算下被引用周期的数据是否足够计算出所需的数据。分笔的话,你当前是30分钟周期数据,分笔的K线量和30分钟K线量完全不在一个量级,也就是说你传入的barnum 完全不够计算。
在十五分钟K线图上上都是有数据的,现在还不涉及到跨周期的问题,就是同周期出的问题,也不需要偏移,只用最新的数据。
但是我这里这样引用出的问题,不好定位是为什么。
版主我刚明白,是的是更新最新的一百根K线。也就是我数据最右端的100根K线有值。
所以如果我希望回测的话,得用全部的数据,也只能这么写
barnum := LARGE(CURRBARSCOUNT ,BARPOS,1) ; 取值也只好取为所有的K线数据。
STKINDIEX本身就是为了提高效率的,你通过这种填充变量没有任何意义。
如果你需要使用全部的数据,直接使用STKINDI函数,不需要限定数量。(STKINDI是被引用的周期和当前的周期数据是时间对其的关系。)
谢谢,我明白
STKINDIEX的用法了。那么我的自编指标有办法写得和ma均线一样,响应“系统”K线位置移动,从而使用STKINDIEX提高效率吗?