以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  小周期调用大周期的疑问  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=181757)

--  作者:yesdgn
--  发布时间:2020/8/17 10:32:08
--  小周期调用大周期的疑问
一分钟周期的公式里调用了  15、60分钟周期的公式,15和60分钟的公式里用到了ema这样的函数 
最早选项里设置的是加载560周期,后来发现一分钟调用的大周期公式返回结果会不对 后来改成了1000,就正确了,
但是再后来又发现不正确,又改成3000就又正确了。 这样我们就不知道到底该加载多少数据才能满足这个大周期公式来得到正确的值? 
毕竟设置成3000 现在公式运行都慢了很多了。
想知道这个选项里设置成加载3000周期数据,  是不是只是1分钟周期加载3000周期的数据,那1分钟周期里调用的60分钟周期数据 他又会加载多少周期数据呢?  我们调用公式时datanum设置的是0.  



--  作者:yesdgn
--  发布时间:2020/8/17 10:46:31
--  
能不能确认下  小周期调用大周期  ,这个大周期到底会加载多少数据?  至少我知道的是选项里改了值 对这个大周期加载的数据肯定是有影响的  但是有可能不一定是选项里设置的值  可能是有比例关系。就是不知道到底是怎么个关系?
--  作者:FireScript
--  发布时间:2020/8/17 11:01:49
--  
 “一分钟周期的公式里调用了  15、60分钟周期的公式,15和60分钟的公式里用到了ema这样的函数 
最早选项里设置的是加载560周期,后来发现一分钟调用的大周期公式返回结果会不对 后来改成了1000,就正确了”
你这里是怎么判断它正确与否的。是把被调用的指标加载到15.60分钟周期上来进行对比?

--  作者:yesdgn
--  发布时间:2020/8/17 11:09:29
--  
你可以忽略公式返回的值是正确还是错误,至少说明了这个选项的设置  会影响到调用的大周期公式返回的结果, 我们只是想知道这种影响是怎么个关系  
比如选项设置加载1000周期   运行在一分钟周期下  一分钟周期里又调用了60分钟周期的公式  那这个60分钟周期的公式会加载多少数据来运算?

--  作者:yesdgn
--  发布时间:2020/8/17 13:42:23
--  
同样公式在原来金字塔的老版本上  他们反馈是这个一分钟周期调用的60分钟周期返回的值不会变   真是搞不懂  难道是版本更新 这个加载数据有改变吗?
--  作者:yesdgn
--  发布时间:2020/8/17 13:53:01
--  
老版本是5.21的   新的是最新版本 5.31 64位
--  作者:FireScript
--  发布时间:2020/8/17 14:20:33
--  
 工具选项里面的那个数据量设置不是直接影响这个调用的。  你如果用的是STKINDIex 并且最后一个参数是0 , 你跨周期调用时候是按照时间对齐方式获取的。

如果你当前周期时间跨度是10个交易日,那么你被调用的大周期 指标也是同样按照这个时间跨度来的。它调用的大周期K数据量确保覆盖了10个交易日的时间跨度。这个就是调用数据的一个标准。它没有一个确切的数据量,完全是根据当前周期使用了多少的数据 然后按照一个时间对齐的需求来进行调用的。当然了以上的前提是你本地有充足的数据可调用。


另外你如果指标用到了类似EMA这种的,一般只有固定了K线起点位置或者五倍ema参数N的数据量才能有稳定的计算。这个是它自己算法决定的性质。所以你前面说数据变化了,我建议从这里着手先排查下。比如数据量不足五倍数据量,或者本地硬盘数据量的确不足。

你这里我建议你再额外加一个变量的调用:
d:DATACOUNT;
这个是把被调用指标的 数据量输出出来。

也可以把被调用指标的K线位置输出出来:
dt:date;
t:time;
这样对被调用的数据有个直观的了解。




--  作者:yesdgn
--  发布时间:2020/8/17 14:54:54
--  
好的 谢谢
--  作者:yesdgn
--  发布时间:2020/8/17 16:21:43
--  
刚才按照步骤 将datacount输出了, 
测试例子如下:
gbjxyy公式里输出语句:
dataqty:DATACOUNT;

调用公式里:
D15:stkindiex(\'\',\'gbjxyy.dataqty\',0,3,-1,0) ; 
D60:stkindiex(\'\',\'gbjxyy.dataqty\',0,5,-1,0) ; 
Dday:stkindiex(\'\',\'gbjxyy.dataqty\',0,6,-1,0) ;  

版本5.31  x64    选项里设置1000周期, 
1分钟周期调用15分钟公式  显示加载的是67周期数据,
1分钟周期调用60分钟公式  显示加载的是18周期数据,
1分钟周期调用日线公式  显示加载的是401周期数据,


版本5.21  x64    选项里设置1000周期, 
1分钟周期调用15分钟公式  显示加载的是900周期数据,
1分钟周期调用60分钟公式  显示加载的是461周期数据,
1分钟周期调用日线公式  显示加载的是533周期数据,



为何两个版本完全不一样?

--  作者:FireScript
--  发布时间:2020/8/17 16:40:57
--  
你这个是本地没有足够数据吧,你断开行情,然后上下键扩充下看下15分钟,60分钟,日线 到底有多少数据在本地。另外就是你当前图表上数据量也要一样,因为跨周期是按时间对齐去调用的。当前图表上数据不一样,调用的数据量也不一样。