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


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

   

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


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

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

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


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2017/10/16 13:39:50
[求助]想提高运行效率,是否应该用循环?  发帖心情 Post By:2019/3/28 17:04:50    Post IP:182.149.165.118[只看该作者]

因为自定义的变量很多,所以挑出了几个容易判断的变量,比如:①C>O;②C>MA60 and C>MA20;③C>Last_H;
想写成:
1、先判断①是否成立,如果①不成立,则返回最开始,重新判断①是否成立,直到①成立

2、①成立后,才能判断②是否成立,如果②不成立,则返回最开始,重新判断①是否成立(这个算是循环吧);

3、②成立后,才能判断③是否成立,如果③不成立,则返回最开始,重新判断①是否成立;

请教老师,以上条件应该怎么写?这样的逻辑是不是能提升运行效率,谢谢!

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


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

追加一个问题:

上面的条件①不满足时,返回重新判断条件①,按照刚才的思路,公式里后面所有的代码是否就不在运行了,也就是当条件①没有达成时,实际运行的代码,只在判断条件①的前几行代码打转?还是仍然要把后续的代码全部过一遍,才又回到公式的第一行代码?

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/3/29 8:56:35    Post IP:180.169.30.6[只看该作者]

“先判断①是否成立,如果①不成立,则返回最开始,重新判断①是否成立,直到①成立” 返回最开始,重新判断这个是什么逻辑,简单说明下吧。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
wonggoo
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2017/10/16 13:39:50
  发帖心情 Post By:2019/3/30 9:00:55    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个标的里,绝大部分都只运行了代码的很小一部分,很少标的运行大部分代码。
就想实现这个怎么写,谢谢老师,我是个小白,不知道描述清楚没?

 回到顶部
帅哥哟,离线,有人找我吗?
wonggoo
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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个标的里,绝大部分都只运行了代码的很小一部分,很少标的运行大部分代码。
就想实现这个怎么写,谢谢老师,我是个小白,不知道描述清楚没?

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


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

以下是引用FireScript在2019/3/29 8:56:35的发言:
“先判断①是否成立,如果①不成立,则返回最开始,重新判断①是否成立,直到①成立” 返回最开始,重新判断这个是什么逻辑,简单说明下吧。 
假设代码是这样的:
============================================
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个标的里,绝大部分都只运行了代码的很小一部分,很少标的运行大部分代码。
就想实现这个怎么写,谢谢老师,我是个小白,不知道描述清楚没?


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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/4/1 9:47:49    Post IP:180.169.30.6[只看该作者]

 我明白你的意思了。AA  BB CC  如果AA不成立后面不再进行判断,直到AA成立是吗?

AA:=Close>Open;
if aa then
begin
MA60:=ma(C,60);
BB:=Close>MA60;
if bb then
begin
.....
end   
end
可以这样把这个条件放在后面代码的外部嵌套下。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
wonggoo
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2017/10/16 13:39:50
回复:(FireScript) 我明白你的意思了。AA&nbs...  发帖心情 Post By:2019/4/1 19:53:18    Post IP:222.209.155.186[只看该作者]

明白了,老师,谢谢你!

我还发了另一个问题,麻烦老师也解答一下
===================================
创建的自定义板块指数,只有日线级别可以正常显示大量历史K线;

分钟级别的只能显示当日的K线

求教自定义板块指数,如何加载历史上的所有分钟级别的K线?比如5分钟级别的。
==================================

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/4/2 9:49:04    Post IP:180.169.30.6[只看该作者]

 这个版块指数其他周期只能分笔数据生成,你本地如果没有分笔数据那是不行的。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
wonggoo
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2017/10/16 13:39:50
回复:(FireScript) 这个版块指数其他周期只能...  发帖心情 Post By:2019/4/2 17:03:46    Post IP:222.209.155.186[只看该作者]

哦,知道了,谢谢!图片点击可在新窗口打开查看

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