欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → PEL数据库操作问题

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3717人关注过本帖树形打印复制链接

主题:PEL数据库操作问题

帅哥哟,离线,有人找我吗?
分析者
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:319 积分:0 威望:0 精华:1 注册:2015/11/1 14:20:16
PEL数据库操作问题  发帖心情 Post By:2020/4/9 22:30:42 [只看该作者]

请问,如下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');


 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2020/4/10 9:14:54 [只看该作者]

你在每个if里面加上一个不同的debugfile,看下是否有执行

 回到顶部
帅哥哟,离线,有人找我吗?
分析者
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:319 积分:0 威望:0 精华:1 注册:2015/11/1 14:20:16
回复:(yukizzc)你在每个if里面加上一个不同的debug...  发帖心情 Post By:2020/4/10 14:40:21 [只看该作者]

老师,按照您说的方法测试了,发现应该执行的代码是执行了的,不应该执行的代码没有执行,但就是读取出的数据不正确,只要不用IF语句,只写一条读数据库语句就是正确的。


 回到顶部
帅哥哟,离线,有人找我吗?
分析者
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:319 积分:0 威望:0 精华:1 注册:2015/11/1 14:20:16
  发帖心情 Post By:2020/4/10 16:08:39 [只看该作者]

老师,可否尽快帮我分析解决下吧,我着急推进哦,谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
分析者
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:319 积分:0 威望:0 精华:1 注册:2015/11/1 14:20:16
  发帖心情 Post By:2020/4/11 11:41:11 [只看该作者]

老师,这个问题能答复吗?


 回到顶部
帅哥哟,离线,有人找我吗?
无为剑
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:2437 积分:0 威望:0 精华:0 注册:2016/3/5 22:53:41
  发帖心情 Post By:2020/4/11 12:26:25 [只看该作者]

DBTABLE在你的公式中只能使用一条的,没法像你这样使用的。
你这个需求PEL是无法满足的,建议你改用VBA

 回到顶部
帅哥哟,离线,有人找我吗?
分析者
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:319 积分:0 威望:0 精华:1 注册:2015/11/1 14:20:16
回复:(无为剑)DBTABLE在你的公式中只能使用一条的,...  发帖心情 Post By:2020/4/12 10:36:47 [只看该作者]

金字塔指导老师好,你们可否优化一下这点呢?我发现其实是IF语句的问题,不该执行的代码执行了。
我用了个折衷的土办法解决了,同时写多个指标,都叠加到图上,每个指标仅限在某个周期下显示,方法很土,反正凑合用。
但,如果金字塔优化IF语句就好了

 回到顶部
帅哥哟,离线,有人找我吗?
分析者
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:319 积分:0 威望:0 精华:1 注册:2015/11/1 14:20:16
  发帖心情 Post By:2020/4/12 10:43:24 [只看该作者]


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

 回到顶部
帅哥哟,离线,有人找我吗?
无为剑
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:2437 积分:0 威望:0 精华:0 注册:2016/3/5 22:53:41
  发帖心情 Post By:2020/4/12 15:04:20 [只看该作者]

这不是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的设计原则

 回到顶部
帅哥哟,离线,有人找我吗?
分析者
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:319 积分:0 威望:0 精华:1 注册:2015/11/1 14:20:16
  发帖心情 Post By:2020/4/13 9:20:29 [只看该作者]

金字塔可以优化这点吗?我现在要写至少5个PEL指标同时加载,确实麻烦,也不美观,而这个需求也是重要的,建议能尽快优化。

 回到顶部
总数 11 1 2 下一页