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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助]想提高运行效率,是否应该用循环?

   

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


  共有3029人关注过本帖平板打印复制链接

主题:[求助]想提高运行效率,是否应该用循环?

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


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2017/10/16 13:39:50
  发帖心情 Post By:2019/3/30 9:01:32    Post IP:222.209.155.186[只看该作者]

假设代码是这样的:
============================================
1行 AA:=Close>Open;
2行 MA60:=ma(C,60);
3行 BB:=Close>MA60;
4 行if  XXX then begin
5行 XXXXXXXXXXXX
6行 XXXXXXXXXXXX
..行 XXXXXXXXXXXX(假设此处很多行代码,得到变量C,且这是行代码大量引用其他指标数据,因此运行效率相对低)
..行 XXXXXXXXXXXX
100行 XXXXXXXXXXXX
101行 end
102行 Last_H:=XXX;
103行 CC:=Close>Last_H;
104行 Open_Cond:AA and BB and CC and DD and EE and FF;//开仓条件
================================================================
假设做本地预警,标的有500只股票,固定轮询模式(假设30秒询一次),每30秒都要把上述104行代码从上到下运行一遍的话,效率很低;
想实现的是:
1、判断第1行 AA:=Close>Open是否成立; 如果不成立,就不再运行后面的代码,始终只判断AA是否成立,直到AA成立;
2、如果AA成立了,则继续往下运行,第2、3行代码,判断BB是否成立,如果不成立,就不再运行后面的代码,返回判断AA(代码的最开始);
3、如果BB成立了(BB成立,一定是AA也成立了),则继续往下运行后面的代码,第4-104行代码判断CC是否成立,如果不成立,就不再运行后面的代码(也就是不判断Open_Cond),返回判断AA(代码的最开始);
4、如果CC成立了,则判断Open_Cond是否成立 ,如果Open_Cond不成立(这里不返回从AA开始判断),继续判断 Open_Cond;除非出现CC不成立,则返回判断AA;
我猜想的是,如果500个预警标的,30秒轮询,其中有450只都不满足AA,则这450只始终只在运行判断第1行条件;而剩下50只标的,有40只不满足BB,也变成返回只判断运行第1行条件;最后只剩下10只标的,会每30秒都把所有代码运行一遍,这样效率就高了。总的来时,就是500个标的里,绝大部分都只运行了代码的很小一部分,很少标的运行大部分代码。
就想实现这个怎么写,谢谢老师,我是个小白,不知道描述清楚没?

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