期货量化软件:赫兹量化手工制图表和交易工具箱-- 优化和全新工具

文章讨论了一个基于MQL4的交易指标实现,强调了如何组织函数库以处理击键逻辑、全局变量和绘图,以及为何从智能交易系统转向指标以优化性能,特别是在多窗口场景下。作者提到关键文件如Shortcuts.mqh和其在处理图表事件中的作用。
摘要由CSDN通过智能技术生成

主文件是 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; } //...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值