以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  如何取得一个新的序列值  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=66163)

--  作者:lcgs005
--  发布时间:2014/6/15 13:29:29
--  如何取得一个新的序列值
close每根K线都不同,形成一系列值,如何每间隔3根K线取一个close值形成一个新的序列?
假设K线的收盘价值序列为: 1,2,3,4,5,6,7,8,9,
希望得到新的序列数为:3,6,9,
不想得到这样的序列数:0,0,3,0,0,6,0,0,9

我试图用下面的方法来取这个值,但无论如何,b 的值输不出来,或是输出来的值是不对的。求改进或其它方法输出正确的这个值。
a:=close;
if mod(todaybars,3)=0 then b:=a;


--  作者:lcgs005
--  发布时间:2014/6/15 13:40:07
--  
第一个序列值是从上市以来的close值,而想要得到的序列数也会有很多个,所以,试图用有限个取值的解决方法似乎是不可取的,比如使用ref 然后 if 嵌套


--  作者:王锋
--  发布时间:2014/6/15 18:12:08
--  

RUNMODE:0;
VARIABLE :x[]=0; //空数组
if barpos % 3 = 0 THEN
BEGIN
   x:=close; //对数组赋值,每次都添加到后面
end;

if ISLASTBAR then
msgout(1,numtostr(UBOUND(x),0));


--  作者:lcgs005
--  发布时间:2014/6/15 23:45:41
--  
不知还有没有其它更简单一些的实现方式?
--  作者:lcgs005
--  发布时间:2014/7/29 12:08:18
--  
通过上面的方式可以输出来,但无法在其它语句中调用用于运算,如果 有其它实现方式实现这个值输出序列值就太好了。
--  作者:jinzhe
--  发布时间:2014/7/29 13:15:39
--  
这个是很好的算法用循环的方式来实现了