Init()和DeInit()执行顺序 - 页 20 1...13141516171819202122232425262728 新评论 fxsaber 2017.04.14 17:07 #191 Комбинатор:当你改变f。如果指标的缓冲区里有来自旧时间框架的垃圾,它也可能影响到计时器。 更加美丽 关于交易、自动交易系统和策略测试的论坛 新版本的MetaTrader 4 build 1065 Sergey Klimov, 2017.04.14 16:34 在账户之间切换时,指标中的_Digits变量不会改变。 TheXpert 2017.04.14 17:32 #192 fxsaber: 它更漂亮。 由于所有不同的数字,似乎都在到处跑,我在大约5年前就不再在同一个终端机上跨越这样的账户。 Alexey Viktorov 2017.04.14 17:45 #193 fxsaber: 它更漂亮。这是为那些谈论MT4中适当的一致性的人准备的。 观察并了解到,在MT4中并非一切都那么美好。 Nikolai Semko 2017.04.14 18:16 #194 fxsaber: 队列是毫不含糊的。 那么,哪里是毫不含糊的呢?试试这个原始的例子。在切换TF时,你会明白 "独特性"。在这个例子中,一个带有当前时间 和价格坐标的对象在OnInit中被创建。在OnCalculate中,这个对象与价格一起移动。在OnDeinit中,它被简单地(逻辑地)删除。当我们切换TF时,该物体出现,然后消失。 为什么会发生这种情况? 因为有时 旧TF的OnDeinit会删除在新TF的OnInit中已经创建的东西。这不是一个错误!创建这个例子的程序员应该怎么想,而没有阅读这个分支?#property copyright "Copyright 2016, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property indicator_chart_window //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnInit() { datetime t = TimeCurrent(); double pr = SymbolInfoDouble(Symbol(),SYMBOL_BID); ObjectCreate(0,"InitDeinit",OBJ_ARROW_THUMB_UP,0,t,pr); ObjectSetInteger(0,"InitDeinit",OBJPROP_WIDTH,15); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ObjectDelete(0,"InitDeinit"); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnCalculate (const int rates_total, // размер массива price[] const int prev_calculated, // обработано баров на предыдущем вызове const int begin, // откуда начинаются значимые данные const double& price[]) // массив для расчета { datetime t = TimeCurrent(); double pr = SymbolInfoDouble(Symbol(),SYMBOL_BID); ObjectMove(0,"InitDeinit",0,t,pr); return(rates_total); } //+------------------------------------------------------------------+ 附加的文件: Init-Deinit.mq5 5 kb fxsaber 2017.04.14 18:32 #195 Nikolai Semko:那么,她在哪里一心一意地工作。 那里谈到了定时器。 Nikolai Semko 2017.04.14 18:41 #196 fxsaber: 那里提到了定时器。 有什么区别。你可以把EventSetTimer放在Unite,而不是创建对象,把EventKillTimer放在Deunite,而不是删除对象。而这不会减少不确定性,因为设定的计时器 会被老TF的Deunite杀死,而有时不会。而且情况会更糟糕,因为至少你可以看到物体,但你无法看到计时器--无论它是否工作。 Dmitry Fedoseev 2017.04.14 18:54 #197 也许他们已经发明了它,还没有读完。如果指标创建了面板,你可以使用终端的全局变量,在init中把它的值增加1,并把它作为图形对象名称的加法。我的任务是不同的 - 保存面板的参数,为此我在deinit中创建了终端的全局变量。解决方案很简单--在inite中创建终端的全局变量,并在图形面板的参数变化时更新每个变量。如果去初始化是由移除指标引起的,则只在deinit中删除变量。 Forester 2017.04.14 19:03 #198 Dmitry Fedoseev 如果指标创建了一个面板,你可以使用终端的一个全局变量,将其值增加1,并将其作为图形对象名称的附录。 这些都是拐杖。你只需要在终端做出正确的订单,就可以了。首先取消前一个实例,然后才启动新的实例。尼古拉-森科。创建这个例子的程序员一定在想什么,而且没有看过这个主题?我完全同意。非阅读者不会知道这个功能,他们会消磨时间,试图弄清楚这个问题。而这将是数百人的事......特别是那些初学者。你只需要修复一次错误,就可以了。 fxsaber 2017.04.14 19:18 #199 Nikolai Semko: 有什么区别。你可以把EventSetTimer放在Unite,而不是创建对象,把EventKillTimer放在Deunite,而不是删除对象。这不会减少不确定性,因为设定的定时器 会被老TF的Deunite杀死,而有时不会。而且情况会更糟糕,因为至少你可以看到物体,但你无法看到计时器是否工作。 这听起来很傻。指示器副本的定时器相互之间没有任何关系。 Nikolai Semko 2017.04.14 19:41 #200 elibrarius: 这都是拐杖。你只需要在终端做出正确的命令,就可以了。首先取消上一个实例,然后才初始化新的实例。我完全同意。非阅读者不会知道这个功能,他们会消磨时间,试图弄清楚这个问题。而这将是数百人的事...特别对不起初学者。你所要做的就是修复一次错误,就可以了。 这就是我所说的! 我个人正在努力,因为我觉得我比大多数人有优势,因为我知道如何处理这一切,不仅仅是在语言上,而且在行动上。我已经做了补丁,并在我的方案中加入了拐杖。我只是不明白为什么开发人员顽固地拒绝将这一 "功能 "视为一个错误。 例如。斯拉瓦。指标的使用应符合其预期目的。换句话说,当图表 符号周期发生变化时,OnInit和OnDeinit指标的执行顺序对任何人来说都不应该关心。但在我上面的gif动画的例子中,对于一个没有读过这个主题的程序员来说,这绝对是一个bug!哪些事情没有按照预定目的去做? 1...13141516171819202122232425262728 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
当你改变f。
如果指标的缓冲区里有来自旧时间框架的垃圾,它也可能影响到计时器。
关于交易、自动交易系统和策略测试的论坛
新版本的MetaTrader 4 build 1065
Sergey Klimov, 2017.04.14 16:34
在账户之间切换时,指标中的_Digits变量不会改变。
它更漂亮。
它更漂亮。
这是为那些谈论MT4中适当的一致性的人准备的。
观察并了解到,在MT4中并非一切都那么美好。
队列是毫不含糊的。
那么,哪里是毫不含糊的呢?
试试这个原始的例子。在切换TF时,你会明白 "独特性"。
在这个例子中,一个带有当前时间 和价格坐标的对象在OnInit中被创建。在OnCalculate中,这个对象与价格一起移动。
在OnDeinit中,它被简单地(逻辑地)删除。
当我们切换TF时,该物体出现,然后消失。
为什么会发生这种情况?
因为有时 旧TF的OnDeinit会删除在新TF的OnInit中已经创建的东西。这不是一个错误!创建这个例子的程序员应该怎么想,而没有阅读这个分支?
那么,她在哪里一心一意地工作。
那里提到了定时器。
有什么区别。你可以把EventSetTimer放在Unite,而不是创建对象,把EventKillTimer放在Deunite,而不是删除对象。而这不会减少不确定性,因为设定的计时器 会被老TF的Deunite杀死,而有时不会。而且情况会更糟糕,因为至少你可以看到物体,但你无法看到计时器--无论它是否工作。
也许他们已经发明了它,还没有读完。如果指标创建了面板,你可以使用终端的全局变量,在init中把它的值增加1,并把它作为图形对象名称的加法。
我的任务是不同的 - 保存面板的参数,为此我在deinit中创建了终端的全局变量。解决方案很简单--在inite中创建终端的全局变量,并在图形面板的参数变化时更新每个变量。如果去初始化是由移除指标引起的,则只在deinit中删除变量。
如果指标创建了一个面板,你可以使用终端的一个全局变量,将其值增加1,并将其作为图形对象名称的附录。
创建这个例子的程序员一定在想什么,而且没有看过这个主题?
我完全同意。非阅读者不会知道这个功能,他们会消磨时间,试图弄清楚这个问题。而这将是数百人的事......特别是那些初学者。
你只需要修复一次错误,就可以了。
有什么区别。你可以把EventSetTimer放在Unite,而不是创建对象,把EventKillTimer放在Deunite,而不是删除对象。这不会减少不确定性,因为设定的定时器 会被老TF的Deunite杀死,而有时不会。而且情况会更糟糕,因为至少你可以看到物体,但你无法看到计时器是否工作。
这都是拐杖。你只需要在终端做出正确的命令,就可以了。首先取消上一个实例,然后才初始化新的实例。
我完全同意。非阅读者不会知道这个功能,他们会消磨时间,试图弄清楚这个问题。而这将是数百人的事...特别对不起初学者。
你所要做的就是修复一次错误,就可以了。
这就是我所说的!
我个人正在努力,因为我觉得我比大多数人有优势,因为我知道如何处理这一切,不仅仅是在语言上,而且在行动上。我已经做了补丁,并在我的方案中加入了拐杖。
我只是不明白为什么开发人员顽固地拒绝将这一 "功能 "视为一个错误。
例如。
指标的使用应符合其预期目的。
换句话说,当图表 符号周期发生变化时,OnInit和OnDeinit指标的执行顺序对任何人来说都不应该关心。
但在我上面的gif动画的例子中,对于一个没有读过这个主题的程序员来说,这绝对是一个bug!哪些事情没有按照预定目的去做?