EA 中的新柱事件 - MetaTrader 4 专家
很多人都想要:
如何检测是否存在新的钢筋。
这非常简单,特别是如果您想在当前时间范围内检测新的柱,
空白开始(){ 静止的 日期时间tmp; 如果(tmp!=时间[0]) { tmp = 时间[0]; //在这里做你的代码 } }
但是其他时间范围事件呢?这并不太难,但有一些限制:
MT4不支持onBar事件,但您可以将上涨次数放入数组中,并在每个价格变动时检查数组次数,如果到达正确的时间,则执行新的柱事件。
这意味着如果您运行例如:在 M5 时间范围上进行回测,您可以捕获 M6 M7...D1 事件。
为什么你只能检测到上升趋势?答案是一个问题:如何产生打钩 数据经过元交易者?A1,A2,A3,...
在 D1 时间范围之前,它会更加困难,因为一周开始于例如:周日 20:45(特定于经纪商)和 开始 本月的可以开始在中间 一周...等等
我认为这个信息不太相关,所以我不发布它......
所以有一个话题对于这个问题,但我认为很多人不阅读文章和论坛,所以我发布了这段代码。
一些解释:
在 init 函数中,您用启动时间填充时间数组:
curIndex = utils.periodToPeriodIndex(时期()); 次数[curIndex] = 时间[0]; 为了(整数我=当前索引+1;我<最大值;我++) 次数[i] = 次数[curIndex]-数学模块(times[curIndex],utils.periodIndexToPeriod(i)*60);
在启动函数中,您检查了现在是否已经过去了足够的时间,然后执行事件
如果(时间[curIndex] != 时间[0]) { 次数[curIndex] = 时间[0]; 酒吧(时期()); 为了(整数我=当前索引+1;我<最大值;我++){ 整数周期 = utils.periodIndexToPeriod(i), 秒 = 周期*60, time0 = 次数[curIndex] -数学模块(次[curIndex],秒); 如果(时间[i]!=时间0){ 次[i] = 时间0; onBar(句点); } } }
将您的代码写入
空白onTick() {
}
和
空白酒吧(整数时期) { }
这就是大家。
更新1.1: 谢谢WH罗德为了清晰的代码
附件下载
📎 ea_symr_newBar.mq4 (2.61 KB)
Source: MQL5 #10370
💡 精彩内容推荐
✍️ 楼主最新发布
- •
- •
- •
- •
- •
- •
🔗 您可能感兴趣
- •
- •
- •
- •
- •
- •
🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录
