检测新柱或蜡烛的开始 - MetaTrader 5 Expert
对于一个专家顾问 (EA),当新的报价到达时,元交易者终端调用默认值OnTick()事件处理函数。然而,当新的柱(蜡烛)开始或打开时,没有默认的事件处理函数。
为了检测这一点,需要监控当前最新柱的开盘时间。一旦它发生变化,就意味着新柱的开始,人们可以对其做出反应并处理事件。以下示例代码与 MQL4 和 MQL5 兼容,展示了一种如何实现这一目标的方法:
// 默认刻度事件处理程序 空白 勾选() { // 检查新柱(与 MQL4 和 MQL5 兼容)。 静止的 日期时间dtBar当前 =错误_值; 日期时间dtBar上一个= dtBar当前; dtBar当前 =爱时(_象征,_时期,0); 布尔值 bNewBarEvent = ( dtBarCurrent != dtBarPrevious ); // 对新的栏事件作出反应并处理它。 如果(bNewBarEvent) { // 检测这是否是第一个收到的报价并处理它。 /* 例如,当它第一次附加到图表并且 该酒吧正处于其进度的中间位置并且 这实际上并不是一个新酒吧的开始。 */ 如果( dtBar上一个 ==错误_值) { // 在第一个价格变动或柱线中间做一些事情... } 别的 { // 当正常的柱开始时做一些事情... }; // 无论上述条件如何,都做一些事情... } 别的 { // 做点别的事... }; // 做其他事情... };
在上面的代码中,静态变量跟踪酒吧的营业时间,即使从酒吧回来时也是如此OnTick()功能。与普通的局部变量不同,它会记住其数据内容,并且在离开函数时不会释放它。这是检测当前柱开盘时间变化的关键。
还需要注意的是,当 EA 首次放置在图表上时,上述代码的反应就像柱刚刚打开一样。如果情况需要以不同方式处理,则需要对这种情况进行特殊处理。
附件下载
📎 newbar.mq5 (2.8 KB)
Source: MQL5 #39103
💡 精彩内容推荐
✍️ 楼主最新发布
- •
- •
- •
- •
- •
- •
🔗 您可能感兴趣
- •
- •
- •
- •
- •
- •
🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录
