检测新柱或蜡烛的开始 - MetaTrader 5 Expert
对于一个专家顾问 (EA),当一个新的报价(“打钩”)被接收者元交易者,标准OnTick()事件处理函数由终端调用。然而,当新的柱(蜡烛)开始时,没有标准的事件处理函数。
要检测这一点,您需要监控最近柱的开盘时间。当它发生变化时,就意味着新柱的开始,您可以对情况做出反应并处理事件。以下代码示例与 MQL4 和 MQL5 兼容,演示了如何实现这一目标的方法之一:
// 标准刻度事件处理程序 空白 勾选() { // 检查新柱(与 MQL4 和 MQL5 兼容)。 静止的 日期时间dtBarraCorrente =错误_值; 日期时间dtBarraPrecedente = dtBarraCorrente; dtBarraCorrente =爱时(_象征,_时期,0); 布尔值 bEventoBarraNova = ( dtBarraCorrente != dtBarraPrecedente ); // 对新柱的事件做出反应并处理这种情况。 如果(bEventoBarraNova) { // 检测这是否是第一个收到的报价并处理这种情况。 /* 例如,当它第一次应用于图形时并且 该酒吧正处于其进度的中间位置并且 并不是真正的新酒吧的开始。 */ 如果( dtBarraPrecedente ==错误_值) { // 在第一个价格变动处或柱线中间执行某些操作 ... } 别的 { // 当正常条形出现时做一些事情... }; // 做一些独立于先前条件的事情... } 别的 { // 做点别的事... }; // 做其他事情... };
在前面的代码中,静态变量跟踪酒吧的营业时间,即使从酒吧回来时也是如此OnTick()功能。与普通的局部变量不同,它会记住其数据内容,并且在离开函数时不会释放它。这是检测当前柱开盘时间变化的关键。
同样重要的是要注意,当 EA 第一次放置在图表上时,之前的代码会做出反应,就好像柱刚刚打开一样。如果需要以不同方式处理这种情况,则需要特殊处理。
请注意我所有的源代码代码库出版物现在也可通过元编辑器的“公共项目”,名称为“FMIC”。
附件下载
📎 novabarra.mq5 (1.53 KB)
Source: MQL5 #41601
💡 精彩内容推荐
✍️ 楼主最新发布
- •
- •
- •
- •
- •
- •
🔗 您可能感兴趣
- •
- •
- •
- •
- •
- •
🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录
