需要MT4开发者和程序员的帮助 - 页 3 12345678 新评论 Stanislav Korotky 2014.07.17 09:14 #21 一个固执的专家是一个糟糕的人。 Alexander Shekhovtsov 2014.07.17 12:41 #22 Integer:2.新资料片已完成一半。以前,循环的专家顾问的属性窗口没有打开。现在确实如此,如果现在对参数变化有反应,那就好了。或者,属性窗口可以被关闭,以避免用户的混淆。正是如此!这就是我想说的,但没有人听到。服务台 "拒绝了,因为我认为他们根本就不了解情况。以下是请求信息的摘录。你为什么要告诉一个程序员他能做什么和不能做什么?广播顺利通过,没有出现错误。执行过程中没有错误。用户在输入参数选项卡中看到 "A=5",而系统则给专家顾问 "A=1"。是使用start() 还是while() 循环是一个品味问题。循环不是无限的,正如你所说的那样。如果你仔细观察了专家顾问的文本,它不是while(true),而是while(!IsStopped()&IsConnected()&IsExpertEnabled())。 在以前的MT4版本中,用户不能在Sleep() 函数执行期间改变输入参数的值。在新的建筑中,不再有这种障碍。因此,在这种情况下,要么撤销对改变输入参数的禁令,要么确保它们不是在"输入"标签上改变,而是在计数器上改变。就这样了。整数: 1.当我安装MetaTrader4终端时,在安装窗口有一个论坛的邀请,这个论坛而不是另一个。我很抱歉。但我注意到,MT4和MT5之间的界限正在逐渐消失。而正是从我在 "www.mql5.com "上的资料中,我申请到了 "servicedesk"(希望是第一次也是最后一次)。我填写了一个表格,上面清楚地显示你可以选择终端的版本 - 我选择了 "MT4"。这里是已经关闭的订单的另一个摘录(我不知道他们在自己匆忙关闭订单后是否阅读了订单?)(当然,很有趣,但我只能想到一个关于抓跳蚤的谚语)。在这种情况下,为什么用户能清楚地看到他们的新值?虽然EA可以全面运作,但这些新的价值是一种虚构的,它们对EA来说是不可用的。RefreshRates() 函数允许EA在任何周期内获得当前报价。为什么不提供一个类似的函数来获取输入参数的更新值,或者在现有的RefreshRates()函数中增加这一功能?按两次 "自动交易 "按钮(关闭和开启EA)确实打破了这个循环,之后新的数值就会出现,但只有在GRAPHICS SYMBOL上的刻度(新报价)之后才会出现。而且我们不知道它什么时候会来,专家顾问也不禁止处理其他符号,用户不需要这种时间损失。所以我们得到了类似 "回到未来 "的东西。一个新的MT4已经发布。它更现代,更快。他们说,它在屏幕上的速度非常慢,等待一个符号的报价,而其他符号的报价正在如火如荼地进行。也就是说,现在我告诉我的客户:改变参数,按两次 "专家顾问 "按钮来关闭和打开它们,然后在海边等待--总有一天它会 "滴答"。我以前从来没有求助过,希望以后也不会。反正我迟早会找到绕过 "钩子 "的办法。只要有MT4和它的"策略测试器"存在,情况就一直如此,我现在不想谈这个问题。但当然,任何实时的不准确都是非常严重的事情,特别是对于一个将自己的钱放在线上的用户,有时是相当大的金额。由于我没有看到其他有效的方法来解决这个问题,我求助于 "服务台",说实话,我有点怀疑他们是否会拒绝修复它。嗯...一切都要 "不顾 "而不是 "感谢",这已经很糟糕了。 Alexander Shekhovtsov 2014.07.17 13:20 #23 Integer: Wex,用一个计时器,你现在可以不用循环了。你是对的,当然,新的EA的编程方式可以非常不同。但是,有许多已经规划好的EA。而客户不明白为什么他们已经支付了钱的东西突然停止正常工作。也就是说,已经开发的EA(专家顾问或脚本,甚至指标)与MT4的新版本原则上不兼容,这是一些非常令人不快的趋势。而且我在编程中没有使用过任何非标准的东西,这是一个原则问题。我的EA是完全基于MQL4 BOMB的特点和功能。我已经被许多指标和EA淹没了(大多数是复杂的或所谓的 "多货币的"),它们要么在新版MT4上完全不能工作,要么看起来工作正常,但出现了我的例子中的情况。(至于翻译错误,我注意到,例如,名称为 "新 "的变量--我理解--因为保留字列表的扩大)。 Vasiliy Aseev 2014.07.18 15:40 #24 一个人太懒了,懒得去读文档。其余的人显示他们非常聪明...吁!抓住代码 :)我仍然不知道你的问题是什么。//+------------------------------------------------------------------+ //| ProjectName | //| Copyright 2012, CompanyName | //| http://www.companyname.net | //+------------------------------------------------------------------+ #property copyright "Grizzly_v :)" #property link "http://www.mql5.com" //+------------------------------------------------------------------+ extern int A1= 1; extern int A2= 2; int C1,C2; //+------------------------------------------------------------------+ int OnInit(){ C1=A1; C2=A2; return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ void OnDeinit(const int reason){ Comment(""); } //+------------------------------------------------------------------+ void OnTick(){ string t; t=TimeToStr(TimeCurrent(),TIME_MINUTES|TIME_SECONDS); Comment(t+"\nA1="+A1+" A2="+A2+"\nC1="+C1+" C2="+C2); } //+------------------------------------------------------------------+ Sergey Gridnev 2014.07.18 15:47 #25 grizzly_v:一个人太懒了,懒得去读文档。其余的人显示他们非常聪明...吁!抓住代码 :)我仍然不知道你的问题是什么。 问题是,专家顾问是循环的,所以OnTick事件不会发生在它身上,它不会看到改变的参数。 Vasiliy Aseev 2014.07.18 17:18 #26 好吧,那就这样吧。同样的周期只通过新的功能。 extern int A1= 1; extern int A2= 2; int C1,C2; //+------------------------------------------------------------------+ int OnInit(){ C1=A1; C2=A2; EventSetMillisecondTimer(100); return(0); } //+------------------------------------------------------------------+ void OnDeinit(const int reason){ EventKillTimer(); } //+------------------------------------------------------------------+ void OnTimer(){ string t; RefreshRates(); t=TimeToStr(TimeCurrent(),TIME_MINUTES|TIME_SECONDS); Comment(t+"\nA1="+A1+" A2="+A2+"\nC1="+C1+" C2="+C2); } //+------------------------------------------------------------------+ Vasiliy Aseev 2014.07.18 18:41 #27 https://www.mql5.com/ru/docs/migrationhttps://docs.mql4.com/ru/runtime/runninghttps://docs.mql4.com/ru/runtime/event_fire#starthttps://docs.mql4.com/ru/mql4changes Функции обработки событий - Документация на MQL4 docs.mql4.com Функции обработки событий - Документация на MQL4 Artyom Trishkin 2014.07.18 19:22 #28 stringo:1.看看Wex的资料。这是一个专业的MQL4开发者。装傻充愣。或者说是扯皮。我不知道为什么。2.我们需要思考这个问题。当新的参数到来时,你不能强行中断循环。类似IsNewParameter的函数,应该由程序员自己在无尽循环中调用。1.我也注意到了这个奇怪的现象...2.这将是非常好的。 Vasiliy Aseev 2014.07.18 20:36 #29 stringo:1.看看Wex的资料。这是一个专业的MQL4开发者。装傻充愣。或者说是扯皮。目前还不清楚原因。2.这就是我们需要思考的地方。我们不能在新参数到来时强行中断循环。类似IsNewParameter的函数,应该由程序员自己在无尽循环中调用。斯特林格。变量似乎就没有进入这样一个永恒的循环。当值被改变时,init方法不起作用。而外部变量只通过init传递。现在可以在专家顾问系统中使用OnTick和OnTimer 函数。 OnChartEvent.在我的记忆中,专家顾问的启动功能是在一个新的刻度线上触发的。 摘自文件。该程序只接收来自它所启动的图表的事件。所有的事件都按照收到的顺序一个接一个地处理。如果队列中已经有一个事件NewTick,或者该事件处于处理状态,一个新的事件NewTick不会被放入mql4-程序的队列中。同样,如果mql4-程序的队列已经包含了ChartEvent 事件或者这样的事件正在被处理,那么这种类型的新事件将不会被放入队列中。计时器事件按照同样的方案处理--如果队列中存在或已经有一个计时器 事件,那么这种类型的新事件将不会被放入队列中。因此,由于启动函数无限循环,当一个新的事件发生时,该函数将不会启动,其内部的变量也不会被更新。只有一个办法,使用语言的新功能,而不去管旧功能。 События клиентского терминала - Документация на MQL4 docs.mql4.com События клиентского терминала - Документация на MQL4 Alexander Shekhovtsov 2014.07.18 21:42 #30 artmedia70:1.我 也注意到了 这个奇怪的现象...而在别人的眼里,你总是可以看到哪怕是一根稻草。而一个人眼中的木头越多,可以辨别出的稻草就越小。在任何业务中,最重要的是结果,而不是过程。结果是这样的:黑色被呈现为白色--字面意思--而不是比喻--执行系统向用户显示了另一个数值而不是一个。这是在哪里做的--在某个函数内,还是在函数外--并不重要。一个实时多任务系统能够同时处理几个进程。在这个过程中,Sleep() 函数大部分时间都在 "运行",根本不消耗任何系统资源。这是经典的东西,基本上是用来暂停进程的。所有其他进程可以不受阻碍地运行。- 同志们,我们能按102%的比例完成计划吗?- ...是的,我们可以。 12345678 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
2.新资料片已完成一半。以前,循环的专家顾问的属性窗口没有打开。现在确实如此,如果现在对参数变化有反应,那就好了。或者,属性窗口可以被关闭,以避免用户的混淆。
正是如此!这就是我想说的,但没有人听到。
服务台 "拒绝了,因为我认为他们根本就不了解情况。以下是请求信息的摘录。
你为什么要告诉一个程序员他能做什么和不能做什么?广播顺利通过,没有出现错误。执行过程中没有错误。用户在输入参数选项卡中看到 "A=5",而系统则给专家顾问 "A=1"。是使用start() 还是while() 循环是一个品味问题。循环不是无限的,正如你所说的那样。如果你仔细观察了专家顾问的文本,它不是while(true),而是while(!IsStopped()&IsConnected()&IsExpertEnabled())。 在以前的MT4版本中,用户不能在Sleep() 函数执行期间改变输入参数的值。在新的建筑中,不再有这种障碍。因此,在这种情况下,要么撤销对改变输入参数的禁令,要么确保它们不是在"输入"标签上改变,而是在计数器上改变。就这样了。
1.当我安装MetaTrader4终端时,在安装窗口有一个论坛的邀请,这个论坛而不是另一个。
我很抱歉。但我注意到,MT4和MT5之间的界限正在逐渐消失。而正是从我在 "www.mql5.com "上的资料中,我申请到了 "servicedesk"(希望是第一次也是最后一次)。我填写了一个表格,上面清楚地显示你可以选择终端的版本 - 我选择了 "MT4"。
这里是已经关闭的订单的另一个摘录(我不知道他们在自己匆忙关闭订单后是否阅读了订单?)(当然,很有趣,但我只能想到一个关于抓跳蚤的谚语)。
在这种情况下,为什么用户能清楚地看到他们的新值?虽然EA可以全面运作,但这些新的价值是一种虚构的,它们对EA来说是不可用的。RefreshRates() 函数允许EA在任何周期内获得当前报价。为什么不提供一个类似的函数来获取输入参数的更新值,或者在现有的RefreshRates()函数中增加这一功能?
按两次 "自动交易 "按钮(关闭和开启EA)确实打破了这个循环,之后新的数值就会出现,但只有在GRAPHICS SYMBOL上的刻度(新报价)之后才会出现。而且我们不知道它什么时候会来,专家顾问也不禁止处理其他符号,用户不需要这种时间损失。所以我们得到了类似 "回到未来 "的东西。一个新的MT4已经发布。它更现代,更快。他们说,它在屏幕上的速度非常慢,等待一个符号的报价,而其他符号的报价正在如火如荼地进行。也就是说,现在我告诉我的客户:改变参数,按两次 "专家顾问 "按钮来关闭和打开它们,然后在海边等待--总有一天它会 "滴答"。
我以前从来没有求助过,希望以后也不会。反正我迟早会找到绕过 "钩子 "的办法。只要有MT4和它的"策略测试器"存在,情况就一直如此,我现在不想谈这个问题。但当然,任何实时的不准确都是非常严重的事情,特别是对于一个将自己的钱放在线上的用户,有时是相当大的金额。由于我没有看到其他有效的方法来解决这个问题,我求助于 "服务台",说实话,我有点怀疑他们是否会拒绝修复它。嗯...
一切都要 "不顾 "而不是 "感谢",这已经很糟糕了。
Wex,用一个计时器,你现在可以不用循环了。
你是对的,当然,新的EA的编程方式可以非常不同。但是,有许多已经规划好的EA。而客户不明白为什么他们已经支付了钱的东西突然停止正常工作。
也就是说,已经开发的EA(专家顾问或脚本,甚至指标)与MT4的新版本原则上不兼容,这是一些非常令人不快的趋势。
而且我在编程中没有使用过任何非标准的东西,这是一个原则问题。我的EA是完全基于MQL4 BOMB的特点和功能。我已经被许多指标和EA淹没了(大多数是复杂的或所谓的 "多货币的"),它们要么在新版MT4上完全不能工作,要么看起来工作正常,但出现了我的例子中的情况。(至于翻译错误,我注意到,例如,名称为 "新 "的变量--我理解--因为保留字列表的扩大)。
一个人太懒了,懒得去读文档。其余的人显示他们非常聪明...吁!
抓住代码 :)
我仍然不知道你的问题是什么。
一个人太懒了,懒得去读文档。其余的人显示他们非常聪明...吁!
抓住代码 :)
我仍然不知道你的问题是什么。
好吧,那就这样吧。同样的周期只通过新的功能。
https://www.mql5.com/ru/docs/migration
https://docs.mql4.com/ru/runtime/running
https://docs.mql4.com/ru/runtime/event_fire#start
https://docs.mql4.com/ru/mql4changes
1.看看Wex的资料。这是一个专业的MQL4开发者。装傻充愣。或者说是扯皮。我不知道为什么。
2.我们需要思考这个问题。当新的参数到来时,你不能强行中断循环。类似IsNewParameter的函数,应该由程序员自己在无尽循环中调用。
1.我也注意到了这个奇怪的现象...
2.这将是非常好的。
1.看看Wex的资料。这是一个专业的MQL4开发者。装傻充愣。或者说是扯皮。目前还不清楚原因。
2.这就是我们需要思考的地方。我们不能在新参数到来时强行中断循环。类似IsNewParameter的函数,应该由程序员自己在无尽循环中调用。
斯特林格。
变量似乎就没有进入这样一个永恒的循环。当值被改变时,init方法不起作用。而外部变量只通过init传递。现在可以在专家顾问系统中使用OnTick和OnTimer 函数。
OnChartEvent.在我的记忆中,专家顾问的启动功能是在一个新的刻度线上触发的。
摘自文件。
该程序只接收来自它所启动的图表的事件。所有的事件都按照收到的顺序一个接一个地处理。如果队列中已经有一个事件NewTick,或者该事件处于处理状态,一个新的事件NewTick不会被放入mql4-程序的队列中。同样,如果mql4-程序的队列已经包含了ChartEvent 事件或者这样的事件正在被处理,那么这种类型的新事件将不会被放入队列中。计时器事件按照同样的方案处理--如果队列中存在或已经有一个计时器 事件,那么这种类型的新事件将不会被放入队列中。
因此,由于启动函数无限循环,当一个新的事件发生时,该函数将不会启动,其内部的变量也不会被更新。
只有一个办法,使用语言的新功能,而不去管旧功能。
1.我 也注意到了 这个奇怪的现象...
而在别人的眼里,你总是可以看到哪怕是一根稻草。而一个人眼中的木头越多,可以辨别出的稻草就越小。
在任何业务中,最重要的是结果,而不是过程。结果是这样的:黑色被呈现为白色--字面意思--而不是比喻--执行系统向用户显示了另一个数值而不是一个。这是在哪里做的--在某个函数内,还是在函数外--并不重要。一个实时多任务系统能够同时处理几个进程。在这个过程中,Sleep() 函数大部分时间都在 "运行",根本不消耗任何系统资源。这是经典的东西,基本上是用来暂停进程的。所有其他进程可以不受阻碍地运行。
- 同志们,我们能按102%的比例完成计划吗?
- ...是的,我们可以。