以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  提一个能全面提高运行速度的建议  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=49754)

--  作者:wide
--  发布时间:2013/3/15 13:19:34
--  提一个能全面提高运行速度的建议
<!--[if gte mso 9]> Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <![endif]-->

现在模型(至少我的模型是这样的),基本上这么几块:

1
、模块1                                          (基础公式与条件计算)

2
、模块2                                           (开多条件断)
            条件1.............;
           
条件2.............;
           
条件3.............;
                           ;
                           ;
           
条件..............N
           
满足条件____做开多动作

3
、模块3                                            (平多条件判断)
4
、模块4                                            (开空条件判断)
5
、模块5                                            (平空条件判断)

    
至少简单的模型都是这样运行的。问题是,在整个模型5个模块的运行过程,多数时间,仅有模块1”,和模块2-5”中任一模块在起作用,其它模型都处在空转状态。浪费了大量的CPU资源。

 

本来,只要简单地在每一个模块前加一个 IF”,用HOLDING来判断就行了。

 

If holding = o then

 

Beging

u       开多条件判断

u       开空条件断

End

 

 

If holding > o then

 

Beging

u       平多条件判断

End

 

If holding <o then

 

Beging

u       平空条件判断

End

 

这样就行了。但是由于 IF 用法条件的限制(如,在IF内不能用 LLV,HHV,REF)等搞得难以实现。

我到是理解,IF用法限制的意义,但是能不能针对上述问题,专门做一个IF_模块控制”函数

 

IF_模块控制   then

 

Begin

 

End

 

这个“IF_模块控制” 只管这一件事,不受用法限制,或许是一个解决问题的办法。

 

以上想法请考虑。

<!--[if gte mso 9]> <![endif]--><!--[if gte mso 10]> <![endif]-->
[此贴子已经被作者于2013-3-15 13:19:58编辑过]

--  作者:jinzhe
--  发布时间:2013/3/15 14:14:35
--  

现在的if是有这样的限制,所以在if外面就把hhv之类的给定义好

比如

if aa then hh:=hhv(x,xx);

 

改成

 

a:=hhv(x,xx);

 

if aa then hh:=a;