通过设置提高金置塔软件的运行效率

通过设置提高金置塔软件的运行效率

Previous pageReturn to chapter overviewNext page

Show/Hide Hidden Text

 

方法1:限制数据数量

  金字塔是面向高端用户的高端分析工具,所有品种的行情数据都保存至本地计算机,这样做的目的是可以快速的进行大量的品种的横向统计计算和相互之间的数据引用。所以默认安装时金字塔将会尽大可能的允许用户保存尽可能长的历史数据,但是历史数据如果保存过长,将会给公式系统的运算带来很大的负担,解决方法就是在运行时限制数据的使用数量,方法如下:

Ctrl+O 选项-》维护选项卡,如图:

hmtoggle_plus1点看查看图片

 

上图红色部分两个选项,默认安装后的数字是9数0周期,960周期对于绝大多数情况下于公式运算量是可以满足的是如果用户的公式系统需要更多的历史数据,只要改动上面的设置即可。

图形显显:该设置主要用于图表上显示,第一次显示图表时初始使用的数据量使用该设置,如果用户按↓键增加图形显示量时,如果超过默认的960数量,系统会自动从硬盘中自动扩充该大小。

内存保留:该部分主要是非图形显示的数量控制选项,例如选股、后台预警交易、指标排序、横向统计等。内存保留系统不会自动扩充大小,需要用户自行调整该选项。

 


方法2:通过降低刷新频率和当日显示来提高速度

hmtoggle_plus1点击查看图片

 

报表刷新时间:报价表(动态显示牌)的刷新时间默认为500毫秒一次,如果系统已经比较卡占用CPU资源较大,那么建义提高此选项设置。

指标排序更标:报价表上的用户自定义指标数据栏的刷新时间,默认300秒一次,如果希望盘中即时刷新而降低该频率将会导致CPU的占用陡然增大。

盘中延新刷新:这是个重要的选项,图表K线图上的指标不是每来一笔TICK都会刷新的,为了提高软件的效率,默认为1.5秒刷新一次,此数值设置过小将会显著提高CPU的占用,如果用户设计的指标比较复杂或者图形使用的数据过多导致系统运行速度缓慢,那么可以将此选项设置高一些,这样可以让软件运行的顺畅一些。

K线图和分时图仅用当日数据:如果在分笔、多么或者1勾钟数据周期下,不涉及到昨日的历史数据,那么建义勾选此选项。

图式程式化交易中的高频选项:勾选此选项后,盘中延迟刷新设置 将会失效,系统每来一笔TICK,将会对图表做一次刷新,如果你的公式或数据量比较大,那么将会显著加重系统负担。

 


方法3:属过调整公式系统的属性

hmtoggle_plus1点击查看图片

 

通过上图的调色部分,有两个地方可有进行调整,下面我们将分别介绍

运行模式:2.0版之后的金字塔支持序列和逐周期两种模式,其中序列模式是运行效率最高的一种,逐周期模式只建议在一些特殊场合使用,比如带全局变量的需要逐周期运行的算法,如使用BUY等新交易系统的情况下等等。普通技术指标,ENTERLONG,TBUY后台自动交易等公式,建议用户在序列模式下运行,效率会得到大幅提升。在此提醒用户注意:很多用户为了方便,将用于后台自动交易公式,BUY,TBUY等交易混在一个公式里使用,在初期调试编写过程中这样是可以的,但是如果一旦模型确立编写调试完毕后,请将只能用于图表逐周期模式下的BUY指令去掉,在序列模式下运行我们的后台自动交易公式。否则就只能以逐周期模式运行,既降低了效率,又在后台执行中执行了没有必要的BUY指令,进一步增加了无谓的计算量。但是有特殊目的的算法除外,比如用户想通过BUY指令的虚拟持仓优点来控制实际下单量等等高级用法。

快速按钮:对于需要固定数量的图表公式,或者需要固定数量就可以计算得到最后一个周期的用于后台交易或者选股的公式来说,使用该选项无疑是最能提高效率的一种了,对于图表限制,可以使公式系统的数据计算不必依赖图表显示的多少,对于后台交易,由于我们通常只需要最后一个周期的数据,只要我们在公式编写时,知道一个正确计算最后周期的信号即可。

 


方法4:通过公式编写技巧

一个简单的例子:

 

ENTERLONG:CROSS(C,MA(5,10));

EXITLONG:CROSS(MA(5,10),C);

 

通过上面的语句,我们看到了,MA(5,10)其实是被连续使用了两次,这样的重复执行函数调用,必然会带来不必要的运算开支。改进方法如下:

 

MA5:=MA(5,10);

ENTERLONG:CROSS(C,MA5);

EXITGONG:CROSS(MA5,C);

 

通过中间变量MA5,保存函数调用结果,通过重复使用内部变量MA5,达到提高效率的目的。

 

通过IF控制语句:

通过使用IF ... THEN 控制语句,对语公式的条件进行判断,如果发现需要必要条件时再来进入到内部T行计算,否则就不执行了。

 

IF件条件达到 THEN

  BEEIN

   //执行条件内语句

 NEND