以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  报错 REF 函数在逐K线模式下不能直接在IF控制语句之内引用。  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=172154)

--  作者:qq代人发帖
--  发布时间:2019/9/23 11:14:37
--  报错 REF 函数在逐K线模式下不能直接在IF控制语句之内引用。
//报错 REF 函数在逐K线模式下不能直接在IF控制语句之内引用。
   if ISLASTBAR THEN  
   BEGIN
for  i=1 to 8 do
BEGIN
MA8_10S[i]:=REF(ma(close,8),i); //获取8均线的1-8根K线对应的值
END
END

那是否可以使用
MA8:=ma(close,8);
if ISLASTBAR THEN  
   BEGIN
for  i=1 to 8 do
BEGIN
MA8_10S[i]:=MA8[i]; //获取8均线的1-8根K线对应的值
END
END

--  作者:FireScript
--  发布时间:2019/9/23 13:13:03
--  
 不行的。这样是获取不到的。


--  作者:jztlt
--  发布时间:2019/9/23 15:31:53
--  接1楼问题
请问一下应该如何 操作才能实现这个功能
--  作者:FireScript
--  发布时间:2019/9/23 15:37:49
--  
 可以这样做:

VARIABLE:m8[]:=0;
MA8:ma(close,8);
m8:=MA8;//均线赋给一个未定义长度的数组变量
//取值
S1:m8[BARPOS-1];//上一个
S2:m8[BARPOS-2];//上上一个


--  作者:jztlt
--  发布时间:2019/9/23 16:36:05
--  
这个m8保存均线的数组 里面的元素和时间序列是相反的吗,m8[BARPOS]是当前的,,m8[1]是最远的?
--  作者:FireScript
--  发布时间:2019/9/23 16:43:27
--  
 对的。数组的缘故,这个没办法。并且下标1 不一定是有效值,或者说没有值。8周期均线至少在第八个周期开始才有有效值。
[此贴子已经被作者于2019/9/23 16:44:31编辑过]

--  作者:jztlt
--  发布时间:2019/9/23 16:59:41
--  
那么再问一个问题,close[1]代表当前还未走完的K线的收盘价 还是上一根已经走完的K线的收盘价。如果是前一根的,那么哪个价格代表当前Tick的最新价格。C和close有什么区别,我在编程助手里没看到C,但示例代码却有使用C的
--  作者:FireScript
--  发布时间:2019/9/23 17:15:01
--  
 close[1]是第一个K,不是上一个,也不是最新的(除非你只要一个K的数据),这个第一个K是当前程序使用的数据当中的第一个K线。c是close的缩写而已,历史K上是收盘价。在最新K上c和最新值是保存一致。
[此贴子已经被作者于2019/9/23 17:15:36编辑过]

--  作者:jztlt
--  发布时间:2019/9/23 17:31:03
--  
MA8_1M[1]:=STKINDI(\'\' , \'ma(close,8)\',0,1,-1); 目的是在1分钟上获取5分钟里前一根K线的8均线值,这里有什么问题,无法正常获取.close_1M[1]:=STKINDI(\'\' , \'close\',0,1,-1);同理
--  作者:wenarm
--  发布时间:2019/9/23 21:12:25
--  
1.金字塔的很多函数返回值都是序列变量。根本不需要用数组保存。
2.stkindi中的第二个参数是"公式名.变量名"    你要引用的公式必须存在。
aa::=STKINDI(\'\' , \'公式名.变量名\',0,1,-1);

[此贴子已经被作者于2019/9/23 21:12:38编辑过]