以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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 --
|
|
-- 作者: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是被引用的周期和当前的周期数据是时间对其的关系。) |