以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  请教:STKINDIEX使用的两个小问题  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=159811)

--  作者:yangyang
--  发布时间:2017/11/23 14:27:48
--  请教:STKINDIEX使用的两个小问题
引用本周起指标一直如下写,可以正常使用:

MStr:=NUMTOSTR(M,0);
barnum := LARGE(CURRBARSCOUNT ,BARPOS,1) ;
某值 : STKINDIEX(\'\' ,\'某指标.某值 ( \'&MStr&\')\',0 ,DATAPERIOD , 0,barnum ),colorstick;

问题一: barnum 我无法固定赋值成一百,只能如上取得很大,取到所有的K线数目。我指标里实际只用了20根k线,为什么赋值 barnum :=100 使用就错误?
问题二:如上的正确的写法在分钟级别以上K线都是正确的,到了分笔成交的Ticket级别这样引用就很多错误,为什么?

高人指点我下,谢谢~~

--  作者:FireScript
--  发布时间:2017/11/23 15:19:08
--  

barnum 的计算是在当前的指标里面对吧。 引用函数的最后一个参数指的是被引用数据的数据使用量。 我们传入的参数是针对被引用指标的数据量。你这里这样计算barnum不管公式对不对,计算的结果都是基于当前周期。并没有合理的限制好被引用指标的数据。  会出现什么情况自然不好说了。

 

[此贴子已经被作者于2017/11/23 16:39:15编辑过]

--  作者:客人
--  发布时间:2017/11/23 16:33:54
--  
MStr:=NUMTOSTR(M,0);
barnum := 100;
某值 : STKINDIEX(\'\' ,\'某指标.某值 ( \'&MStr&\')\',0 ,DATAPERIOD , 0,barnum ),colorstick;

问题是我如上写直接就错了,根本取不到值。而我要引用的指标里只用了几十根K线,数据也没超过。
就是在十五分钟图上,固定barnum,直接取不到指标的值。

--  作者:yangyang
--  发布时间:2017/11/23 16:34:21
--  
MStr:=NUMTOSTR(M,0);
barnum := 100;
某值 : STKINDIEX(\'\' ,\'某指标.某值 ( \'&MStr&\')\',0 ,DATAPERIOD , 0,barnum ),colorstick;

问题是我如上写直接就错了,根本取不到值。而我要引用的指标里只用了几十根K线,数据也没超过。
就是在十五分钟图上,固定barnum,直接取不到指标的值。


--  作者:FireScript
--  发布时间:2017/11/23 16:40:03
--  

代码帖完整点。我本地测试下。

被引用部分的代码和当前运行代码。

 

 

[此贴子已经被作者于2017/11/23 16:42:19编辑过]

--  作者:yangyang
--  发布时间:2017/11/24 13:27:59
--  
指标-进场:

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就失效;

--  作者:FireScript
--  发布时间:2017/11/24 14:50:45
--  

我刚刚测试了,填写100也是可以的。 但是这个你填100的时候,那被引用的指标就是只用当前最新的100个K的数据,不会因为“系统”K线位置移动,和ma均线这种移动计算不一样。

 

你可以看下你“系统”在最新100K上是否有数据,超过100是不是就没数据了。因为你这个是引用同周期的,可以这样对比。周期不一样的话,还要大致计算下被引用周期的数据是否足够计算出所需的数据。分笔的话,你当前是30分钟周期数据,分笔的K线量和30分钟K线量完全不在一个量级,也就是说你传入的barnum 完全不够计算。


--  作者:yangyang
--  发布时间:2017/11/27 16:17:18
--  
在十五分钟K线图上上都是有数据的,现在还不涉及到跨周期的问题,就是同周期出的问题,也不需要偏移,只用最新的数据。
但是我这里这样引用出的问题,不好定位是为什么。

--  作者:yangyang
--  发布时间:2017/11/28 13:48:37
--  
版主我刚明白,是的是更新最新的一百根K线。也就是我数据最右端的100根K线有值。
所以如果我希望回测的话,得用全部的数据,也只能这么写
barnum := LARGE(CURRBARSCOUNT ,BARPOS,1) ;   取值也只好取为所有的K线数据。


--  作者:wenarm
--  发布时间:2017/11/28 15:34:13
--  

STKINDIEX本身就是为了提高效率的,你通过这种填充变量没有任何意义。

如果你需要使用全部的数据,直接使用STKINDI函数,不需要限定数量。(STKINDI是被引用的周期和当前的周期数据是时间对其的关系。)