以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  关于数据读取  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=149202)

--  作者:chenfansky
--  发布时间:2017/3/16 15:55:43
--  关于数据读取
公式运行在序列模式:
由于进行数据读取时是在if和for语句中,所以无法将数据序列提前到公式前面。
例如:要读取自定义数据: AA:=selfdatalabel(\'DATA1\',pinzhong); 在if和for语句中才进行pinzhong选取赋值,
那么,如何将该自定义历史数据到数组中?DATA[1] := AA; DATA[2] := REF(AA,1); DATA[3] := REF(AA,2);......依次类推,假设读取10个数据。
请教老师和高手,如何实现?谢谢了。

[此贴子已经被作者于2017-3-16 15:57:43编辑过]

--  作者:jinzhe
--  发布时间:2017/3/16 16:07:11
--  

AA:selfdatalabel(\'DATA1\',pinzhong);

这样来获取,AA就是一个每个周期都有对应值的数据序列,AA[barpos]就是当前十字光标所在k线的AA值,AA[BARPOS-1]就是当前十字光标所在k线的之前一个k线的AA值


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

--  作者:chenfansky
--  发布时间:2017/3/16 16:25:24
--  
例如:
for i=1 to stkcount(\'上海期货\') do begin
   pinzhong := stkfromblk(\'上海期货\',i);
    AA:=selfdatalabel(\'DATA1\',pinzhong);
    userDATA[1] :=  AA;
    userDATA[2] :=  ref(AA,1);
    userDATA[3] :=  ref(AA,2);
     ......
   结束后,这边再对userDATA进行数据处理运算......
end
这样,就没办法事先定义 SS:selfdatalabel(\'DATA1\',pinzhong);也就没办法AA[barpos]这样的取值方式了。
[此贴子已经被作者于2017-3-16 16:27:15编辑过]

--  作者:jinzhe
--  发布时间:2017/3/16 16:31:30
--  
nn:=datacount;
variable:userdata[nn]=0;
AA:=selfdatalabel(\'DATA1\',pinzhong);
if islastbar then begin
    for i=1 to datacount do begin
      
          userDATA[i] :=  AA[i];
    end
end

--  作者:chenfansky
--  发布时间:2017/3/16 20:23:36
--  
这样子也可以实现最后一根K线的要求。
但是我的本意是,每根K线都要执行一遍for循环语句,所以就不能有islastbar的限制了。

--  作者:chenfansky
--  发布时间:2017/3/16 20:43:37
--  
for i=1 to stkcount(\'上海期货\') do begin
   pinzhong := stkfromblk(\'上海期货\',i);
    AA:=selfdatalabel(\'DATA1\',pinzhong);
     for j=1 to datacount do userDATA[j] := AA[j];
end
在最外层for语句里面,AA:=selfdatalabel(\'DATA1\',pinzhong); 这个AA是一个序列数组吗?貌似AA只是单值吧?
如果AA不是序列数组,那么for j=1 to datacount do userDATA[i] :=  AA[i]; 这样赋值就失去意义了(可能全部都是同一个数值),实现不了期望的要求了。
[此贴子已经被作者于2017-3-16 20:44:28编辑过]

--  作者:jinzhe
--  发布时间:2017/3/17 8:41:49
--  
那就不行了,