以文本方式查看主题

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

--  作者:小小草
--  发布时间:2019/6/6 14:36:01
--  请教问题出在哪。怎么改写代码。
序列计算模式下编写了一个指标系统。编译能通过,但是应用于图的时候就提示如下的此行错误:解释错误
该行代码如下:G:IF(K2=0&&K1=1&&REF(K1,1)=0,-3,IF(K1=0&&K2=1&&REF(K2,1)=0,+3,0)),NODRAW;
我仔细看了金字塔的说明,猜测问题可能出在。ref函数不能使用在if控制语句里,可是论坛里关于这点的说明是序列模式下可以。但是我在序列模式下,这个依然不行。编译能过。应用于图的时候就解释错误。请教问题出在什么地方。怎么改动。万分感谢。

--  作者:小小草
--  发布时间:2019/6/6 14:39:54
--  
另外,我将ref函数移出了If语句之外,改写成如下三行代码,依然不行。同样还是提示解释错误。改写后的如下:
k3:=(K2=0)&&(K1=1)&&(REF(K1,1)=0);
k4:=(K1=0)&&(K2=1)&&(REF(K2,1)=0);


G:=IF(k3,-3,IF(k4,+3,0));
求救,问题怎么解决

--  作者:yukizzc
--  发布时间:2019/6/6 14:41:17
--  
请贴出其他相关代码,否者工作人员也没能力找问题
--  作者:小小草
--  发布时间:2019/6/6 14:45:07
--  
K1:(C1<(A2-0.3*MINDIFF)&&C1<(A1-0.3*MINDIFF)&&C1<(A44-0.3*MINDIFF))||(C<=L40K&&N40K<10&&K40K1&&C<(A20-0.3*MINDIFF)&&C<(A40-0.3*MINDIFF)),NODRAW;
//K2:C1>(A2+0.3*MINPRICE)&&C1>(A1+0.3*MINPRICE)&&KDC0,NODRAW;
K2:(C1>(A2+0.3*MINDIFF)&&C1>(A1+0.3*MINDIFF)&&C1>(A44+0.3*MINDIFF))||(C>=H40D&&N40D<10&&K40D1&&C>(A20+0.3*MINDIFF)&&C>(A40+0.3*MINDIFF)),NODRAW;
k3:=(K2=0)&&(K1=1)&&(REF(K1,1)=0);
k4:=(K1=0)&&(K2=1)&&(REF(K2,1)=0);


G:=IF(k3,-3,IF(k4,+3,0));

--  作者:小小草
--  发布时间:2019/6/6 14:49:20
--  
k1 ,k2都是判断条件成立与否的参数而已。语句主要的问题是出在
G:IF(K2=0&&K1=1&&REF(K1,1)=0,-3,IF(K1=0&&K2=1&&REF(K2,1)=0,+3,0)),NODRAW;
金字塔软件反复提示的都是这行的解释错误。
请版主回答。一:在序列模式下,首先,这行的代码这样写没问题吧。序列模式下。ref函数能用在if语句里面吗?
二:if语句里能再嵌套if语句嘛?




--  作者:小小草
--  发布时间:2019/6/6 15:27:27
--  
把问题简单化吧。例如如下完整代码。序列模式下。主图叠加。编译能通过。但是应用于图。则依然是第七行,也就是最后一行解释错误。
A1:EMA(CLOSE,5);
A2:EMA(CLOSE,34);
A44:EMA(CLOSE,44);
C1:=CLOSE;
K1:(C1<(A2-0.3*MINDIFF)&&C1<(A1-0.3*MINDIFF)&&C1<(A44-0.3*MINDIFF)),NODRAW;
K2:(C1>(A2+0.3*MINDIFF)&&C1>(A1+0.3*MINDIFF)&&C1>(A44+0.3*MINDIFF)),NODRAW;
G:IF(K2=0&&K1=1&&REF(K1,1)=0,-3,IF(K1=0&&K2=1&&REF(K2,1)=0,+3,0)),NODRAW;
最后一行也就是G:IF(K2=0&&K1=1&&REF(K1,1)=0,-3,IF(K1=0&&K2=1&&REF(K2,1)=0,+3,0)),NODRAW;
问题出在哪?
将最后一行注释掉,
//G:IF(K2=0&&K1=1&&REF(K1,1)=0,-3,IF(K1=0&&K2=1&&REF(K2,1)=0,+3,0)),NODRAW;
则正常了。可是我就是需要最后一行得到最终的判定条件啊


--  作者:banzhuan
--  发布时间:2019/6/6 15:35:32
--  
A1:EMA(CLOSE,5);
A2:EMA(CLOSE,34);
A44:EMA(CLOSE,44);
C1:=CLOSE;
K1:(C1<(A2-0.3*MINDIFF)&&C1<(A1-0.3*MINDIFF)&&C1<(A44-0.3*MINDIFF)),NODRAW;
K2:(C1>(A2+0.3*MINDIFF)&&C1>(A1+0.3*MINDIFF)&&C1>(A44+0.3*MINDIFF)),NODRAW;
G:IF(K2=0&&K1=1&&REF(K1,1)=0,-3,IF(K1=0&&K2=1&&REF(K2,1)=0,3,0)),NODRAW;

[此贴子已经被作者于2019/6/6 15:35:41编辑过]

--  作者:小小草
--  发布时间:2019/6/6 15:38:55
--  
晕,就是一个加号的问题?汗。。谢谢版主。。是否出在if语句里,我的代码是+3.您去掉了加号。改为3
--  作者:banzhuan
--  发布时间:2019/6/6 15:40:44
--  
对的,不要重复发帖,再一个贴中追问就行
--  作者:小小草
--  发布时间:2019/6/6 15:43:58
--  
谢谢。也就是if语句里实际上现在可以用ref函数了么。