期货量化软件:赫兹量化手工制图表和交易工具箱-- 优化和全新工
主文件是 Shortcuts.mqh。 该文件存储击键处理逻辑。 甚而,这是唯一直接包含在智能交易系统或指标中的文件。 相应地,它包含其余文件,并对其进行初始化。文件 GlobalVariables.mqh 则包含所有全局变量。 这些设置主要用于设置线条颜色、线条厚度、线条延伸系数、等等。文件 Mouse.mqh 包含处理鼠标移动的类定义。 它存储当前光标坐标,含像素和“价格-时间”坐标,以及当前主线编号。Utilites.mqh 包含辅助函数。 它计算柱线图极值、指标线交点和其它有用参数,这些参数也许与绘图没有直接关系,但可判断图形的所有方面。文件 Graphics.mqh 负责依据其它文件中的数据进行绘图。 来自该文件中的主要函数调用 Shortcuts.mqh 文件。我并不总是严格地将函数分组。 某些计算是在绘图函数中进行的。 到目前为止,于我来讲,开发和维护这个结构还很方便。 也许有一天我会改进总体布局。此实现展示了如何在指标中运用函数库代码。优化函数库性能此处这是略微有点修改。为什么我在最初的函数库版本中选择采用智能交易系统,而非指标? 这很简单。 每个智能交易系统都在自己的执行线程中运行。 理想情况下,它们不会相互影响,因此,如果我们需要在多个图表上处理键盘快捷键,终端不会变慢太多。不过,智能交易系统的目的是交易,而该程序并不执行任何交易操作。 甚而,当一个指标附加到图表上时,在图表上运行另一个智能交易系统也更容易一些。 因此,我决定实现一款指标。 这里会浮现一个性能速度的问题。 如果用户有多个打开的窗口,这一点尤其重要。 例如,如果用户有 40 个打开的选项卡(可以有更多),那么若所有图表同时处理击键,则很难进行击键检查。然后我就悟了:为什么我们要处理所有的图表? 所有检查只需在活动窗口中执行。代码非常简单。/* Shortcuts.mqh */void CShortcuts::OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam) { //...if(ChartGetInteger(0,CHART_BRING_TO_TOP)==false) { return; }//...
页:
[1]