文章 ""New Bar" (新柱)事件处理程序" - 页 5 1234567 新评论 Charles Magno 2019.11.09 18:51 #41 tito.vinicius:目前,我的 EA 在同一蜡烛上打开多个订单。我认为这篇文章中的材料会对我有所帮助。我该如何实施? 您可以将交易进入逻辑从 OnTick() 事件中移出,放到 OnNewBar() 函数中。这样,只有在出现新的条形图时才会执行,而不会在同一蜡烛图上多次进入,因为一旦执行,它只会在下一根蜡烛图上再次执行。 schueppe 2020.06.29 14:52 #42 非常感谢你提供的这张漂亮的纸 - 非常感谢你的努力! GUY BERTRAND YANA 2020.09.21 17:59 #43 好文章。 谢谢! Ernie Gunning 2020.10.30 11:46 #44 非常好,谢谢、 我希望能有一个 MQL5库函数,但似乎没有。我有一个模块化交易库,我遇到的问题是,信号模块会设置其 IsNewBar 标志并覆盖 prevCandleTime,而当 TrailingSL 模块必须评估相同函数时,由于 prevCandleTime 与当前时间相同,所以返回 false。 是的,我可以将结果存储在一个中央标志中,并将其用于所有模块,这样就不会出现这种情况了,但这些模块可以在不同的时间框架上运行,因此这个解决方案太完美了,谢谢。 AMD2019 2021.04.12 05:13 #45 文章内容丰富,非常感谢 fdesu 2021.04.22 20:17 #46 谢谢,这是检测新酒吧的最佳方法! :) KUNAL VISHNU MAHTANI DARYANANI 2021.09.18 11:25 #47 在我看来,有时我们会把事情搞得过于复杂。出于实际原因,即使从性能上讲,也没有什么能比系统时间(窗口时间)更快。在下一分钟开始时,或者为了确定起见,在几秒钟后,我们可以假设每个符号都会有一个新的条形图。比如说一分钟、五分钟、十五分钟,或者任何你想要的时间范围。当然,你也可以 检查 条形图时间和系统时间是否一致。但是,当我们都知道何时会出现新的条形图时,就没有必要为了检查是否有新的条形图而创建该类的多个实例了。https://www.mql5.com/zh/docs/dateandtime Max Go 2021.11.08 15:05 #48 double Old_open, New_open; bool NewBar = false; int OnInit() { //---------- Old_open = iOpen(Symbol(),PERIOD_CURRENT,0); //---------- return(INIT_SUCCEEDED); } void OnTick() { //--- New_open = iOpen(Symbol(),PERIOD_CURRENT,0); if (New_open != Old_open) { Print("有家新酒吧要开张了", TimeCurrent()); NewBar = true; Old_open = New_open; } else NewBar = false; } 你好,我认为只要 Open() 报价出现,就意味着新的条形图 出现了。我认为这样做更简单,还是我遗漏了什么? Denis Kirichenko 2021.11.08 17:49 #49 Max Go 新的条形图 出现了。我认为这样更简单,还是我遗漏了什么? 试想一下,当新条形图的开盘价等于上一条形图的开盘价时....。在小型 TF 上很有可能出现这种情况。 Armen Shahinyan 2021.11.11 13:08 #50 我没有比这更简单的方法了。 跟踪当前条形图的开盘时间,并在每个刻度线进行比较。 // 我没有比这更简单的方法了。 // 跟踪当前条形图的开盘时间,并在每个刻度进行比较。 double lastTime = 0; void OnTick() { if(isNewBar()){ Print("New Bar"); } } bool isNewBar() { double thisTime= NormalizeDouble(iTime(_Symbol, PERIOD_CURRENT, 0), _Digits); if(lastTime != thisTime) { lastTime = thisTime; return true; } return false; } Документация по MQL5: Преобразование данных / NormalizeDouble www.mql5.com NormalizeDouble - Преобразование данных - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5 1234567 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
目前,我的 EA 在同一蜡烛上打开多个订单。我认为这篇文章中的材料会对我有所帮助。
我该如何实施?
您可以将交易进入逻辑从 OnTick() 事件中移出,放到 OnNewBar() 函数中。这样,只有在出现新的条形图时才会执行,而不会在同一蜡烛图上多次进入,因为一旦执行,它只会在下一根蜡烛图上再次执行。
好文章。
谢谢!
非常好,谢谢、
我希望能有一个 MQL5库函数,但似乎没有。我有一个模块化交易库,我遇到的问题是,信号模块会设置其 IsNewBar 标志并覆盖 prevCandleTime,而当 TrailingSL 模块必须评估相同函数时,由于 prevCandleTime 与当前时间相同,所以返回 false。
是的,我可以将结果存储在一个中央标志中,并将其用于所有模块,这样就不会出现这种情况了,但这些模块可以在不同的时间框架上运行,因此这个解决方案太完美了,谢谢。
你好,我认为只要 Open() 报价出现,就意味着新的条形图 出现了。我认为这样做更简单,还是我遗漏了什么?
试想一下,当新条形图的开盘价等于上一条形图的开盘价时....。在小型 TF 上很有可能出现这种情况。
我没有比这更简单的方法了。
跟踪当前条形图的开盘时间,并在每个刻度线进行比较。