请问,如下PEL语句在语法上应该没问题,但是,为何只有最后一条else if DATATYPE=4 后面的语句才可以正确执行,而如果把这条删除,则else if DATATYPE=6 then后面的也可以正确执行,反正就是只能正确执行最后一条else if 语句
DATABASE('Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:\JZTdb1.mdb');
if DATATYPE=2 then
BEGIN
DBREADTYPE( 1 );
DBTABLE('Select * From @Code@ where zhouqi="5m" Order By StockDate');
end
else if DATATYPE=6 then
BEGIN
DBREADTYPE( 1 );
DBTABLE('Select * From @Code@ where zhouqi="1d" Order By StockDate');
end
else if DATATYPE=4 then
BEGIN
DBREADTYPE( 1 );
DBTABLE('Select * From @Code@ where zhouqi="30m" Order By StockDate');
end
//读取STOCKCLOSE字段数据
收盘价:DBVALUE('stockclose');
你在每个if里面加上一个不同的debugfile,看下是否有执行
老师,按照您说的方法测试了,发现应该执行的代码是执行了的,不应该执行的代码没有执行,但就是读取出的数据不正确,只要不用IF语句,只写一条读数据库语句就是正确的。
老师,可否尽快帮我分析解决下吧,我着急推进哦,谢谢!
DBTABLE在你的公式中只能使用一条的,没法像你这样使用的。
你这个需求PEL是无法满足的,建议你改用VBA
金字塔指导老师好,你们可否优化一下这点呢?我发现其实是IF语句的问题,不该执行的代码执行了。
我用了个折衷的土办法解决了,同时写多个指标,都叠加到图上,每个指标仅限在某个周期下显示,方法很土,反正凑合用。
但,如果金字塔优化IF语句就好了
if DATATYPE!=4 THEN exit;
if DATATYPE=4 then
BEGIN
WARNING_DISABLE:4 ;
runmode:1;//序列模式
DATABASE('Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:\JZTdb1.mdb');
DBREADTYPE(1);
DBTABLE('Select * From @Code@ Order By StockDate') ;
收盘价:DBVALUE('stockclose');
end
例如上述代码,不论在任何周期,计算其他语句没有执行,但数据库语句都是执行了的,这个金字塔PEL语句的BUG
这不是BUG,是数据库的
DATABASE('Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:\JZTdb1.mdb');
DBTABLE('Select * From @Code@ Order By StockDate') ;
在你的公式编译时就已经内置到PEL中了,这2个语句是不会通过公式运行来改变加载的,你不可以将这2个当作函数来用,你就理解为2个设置就行了。
金字塔这么设计的原则是PEL作为基础语言给大家使用,简单实用是PEL的设计原则
金字塔可以优化这点吗?我现在要写至少5个PEL指标同时加载,确实麻烦,也不美观,而这个需求也是重要的,建议能尽快优化。