以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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=162932)

--  作者:LCY
--  发布时间:2018/4/22 11:08:59
--  提示未来函数
Formula13
VARIABLE: X[5]:=0;
X[1]:=STKINDI(\'CU00\',\'KDJ.K\',0,6,0);
X[2]:=STKINDI(\'RU00\',\'KDJ.K\',0,6,0);
X[3]:=STKINDI(\'M00\',\'KDJ.K\',0,6,0);
X[4]:=STKINDI(\'CF00\',\'KDJ.K\',0,6,0);
X[5]:=STKINDI(\'IF00\',\'KDJ.K\',0,6,0);
CU排名:HOD2(X,5,X[1]),LINETHICK0;
RU排名:HOD2(X,5,X[2]),LINETHICK0;
M排名:HOD2(X,5,X[3]),LINETHICK0;
CF排名:HOD2(X,5,X[4]),LINETHICK0;
IF排名:HOD2(X,5,X[5]),LINETHICK0;
if CU排名=1 then  YY[1]:= X[1];
if RU排名=1 then  YY[2]:= X[2];
if M排名=1 then  YY[3]:= X[3];
if CF排名=1 then  YY[4]:= X[4];
if IF排名=1 then  YY[5]:= X[5];
if CU排名=5 then  Y[1]:= X[1];
if RU排名=5 then  Y[2]:= X[2];
if M排名=5 then  Y[3]:= X[3];
if CF排名=5 then  Y[4]:= X[4];
if IF排名=5 then  Y[5]:= X[5];
  IF CU排名=1 then
   ZFC1:=X[1]-Y[2]>0.01;
   ZFC2:=X[1]-Y[3]>0.01;  
   ZFC3:=X[1]-Y[4]>0.01;  
   ZFC4:=X[1]-Y[5]>0.01;
   ZFC5:ZFC1 OR ZFC2 OR ZFC3 OR ZFC4;

<!--StartFragment -->
这个公式Formula13,在逐K线模式仅刷最后一根,应用于图,提示未来函数!为什么?如何解决未来函数?


--  作者:wenarm
--  发布时间:2018/4/22 12:51:10
--  
就是不符合编译机制规则。这种不符合规则的写法除了改你的代码,没别的方式。你可以考虑使用序列计算
另外,你下面的代码逻辑貌似写的有问题。如果你是想CU排名=1时,处理ZFC1、ZFC2、ZFC3....应要加begin。
而你的写法,只是代表IF CU排名=1 then  ZFC1:=X[1]-Y[2]>0.01;

如果是下面的思想逻辑,就不会报你所说的二次重复计算的机制问题。
IF CU排名=1 then  begin
   ZFC1:=X[1]-Y[2]>0.01;

   ZFC2:=X[1]-Y[3]>0.01;  
   ZFC3:=X[1]-Y[4]>0.01;  
   ZFC4:=X[1]-Y[5]>0.01;
   ZFC5:ZFC1 OR ZFC2 OR ZFC3 OR ZFC4;
end
[此贴子已经被作者于2018/4/22 12:57:54编辑过]

--  作者:JDS
--  发布时间:2018/4/22 14:27:39
--  
问下老师,按序列计算模式如何改写呢
--  作者:wenarm
--  发布时间:2018/4/22 17:05:28
--  
公式编辑界面中选择“序列计算”模式
--  作者:LCY
--  发布时间:2018/4/22 19:35:24
--  
以下是引用wenarm在2018/4/22 12:51:10的发言:
就是不符合编译机制规则。这种不符合规则的写法除了改你的代码,没别的方式。你可以考虑使用序列计算
另外,你下面的代码逻辑貌似写的有问题。如果你是想CU排名=1时,处理ZFC1、ZFC2、ZFC3....应要加begin。
而你的写法,只是代表IF CU排名=1 then  ZFC1:=X[1]-Y[2]>0.01;

如果是下面的思想逻辑,就不会报你所说的二次重复计算的机制问题。
IF CU排名=1 then  begin
   ZFC1:=X[1]-Y[2]>0.01;

   ZFC2:=X[1]-Y[3]>0.01;  
   ZFC3:=X[1]-Y[4]>0.01;  
   ZFC4:=X[1]-Y[5]>0.01;
   ZFC5:ZFC1 OR ZFC2 OR ZFC3 OR ZFC4;
end
[此贴子已经被作者于2018/4/22 12:57:54编辑过]


这个二次重复计算是发生在哪一句呢?不好理解


--  作者:LCY
--  发布时间:2018/4/22 19:36:15
--  
要是后面再接上去呢,如

--  作者:LCY
--  发布时间:2018/4/22 19:42:30
--  
要是后面再接上去呢,如
IF CU排名=5 then  begin
   ZFC1:=YY2]-X[1]>0.01;

   ZFC2:=YY[3]-X[1]>0.01;  
   ZFC3:=YY[4]-X[1]>0.01;  
   ZFC4:=YY[5]-X1]>0.01;
   ZFC5:ZFC1 OR ZFC2 OR ZFC3 OR ZFC4;
end
等等,仍然会提示二次重复计算,有未来函数。真不知道怎么改


--  作者:wenarm
--  发布时间:2018/4/23 5:28:09
--  
那就没办法了,你自己只能考虑使用序列方式。
--  作者:LCY
--  发布时间:2018/4/23 7:07:35
--  
 勾选序列模式,写好后加载到K线又自动跳转到逐K模式仅刷最好后一根!怎么办?

--  作者:LCY
--  发布时间:2018/4/23 7:13:28
--  
这个公式里,上部赋值了,一根K里运行(固定1秒轮扫),就一次赋值并计算吧,怎么会二次重复计算?二次重复计算发生在哪些个句子?这些都搞不懂,代码也没法改写呀