初学者的问题 MQL5 MT5 MetaTrader 5 - 页 985 1...978979980981982983984985986987988989990991992...1503 新评论 Maxim Dmitrievsky 2019.01.22 17:27 #9841 做 { ...缓冲区填充代码 } 虽然(这两个值不匹配) 简而言之,在循环中获取数值,直到它们匹配,然后才执行以下代码 Aleksey Vyazmikin 2019.01.22 17:55 #9842 Maxim Dmitrievsky:做 { ...缓冲区填充代码}虽然(这两个值不 重合) 简而言之,在循环中获取数值,直到它们是相同的,然后才执行以下代码问题是,在一个指标工作之前,数据(流)不会传递给另一个指标,也就是说,没有这个指标的OnCalculate 的指标循环不会有帮助。而OnCalculate一结束,数据就被传给了Expert Advisor,而且是错误的。 或者说我不理解你的想法。 Maxim Dmitrievsky 2019.01.22 18:01 #9843 Aleksey Vyazmikin:因此,重点是,在一个指标工作之前,数据(流)不会转移到另一个指标,也就是说,在没有终止这个指标的OnCalculate的情况下,指标中的循环不会有帮助。你从其他指标的缓冲区逐一接收数值,如果它们的数量不一样,你就再接收一次,直到相同为止,忘记流。 但一般来说,没有人这样做--它非常 慢。 Maxim Dmitrievsky 2019.01.22 18:03 #9844 Aleksey Vyazmikin:所以,重点是,在一个指标工作之前,数据(流)不会传递给另一个指标,也就是说,指标中的循环没有这个指标的OnCalculate是没有用的。但OnCalculate一结束,数据就被传递给Expert Advisor,而且是错误的。 或者我不明白你的想法。你需要条件为真,那么只有缓冲区会被填满,按照我的理解(其他指标的缓冲区的条数将是相同的)。 在填充当前指标的缓冲区之前,强行满足所有条件 或者把它还给错误的程序员--我们为什么要在错误的领域解决他的问题? Aleksey Vyazmikin 2019.01.22 18:31 #9845 Maxim Dmitrievsky:你从其他指标的缓冲区中一个一个地获取数值,如果它们的数量不一样,你再获取它们,直到相同为止,忘掉流。马克西姆-德米特里耶夫斯基。你需要条件得到满足,那么只有缓冲区会被填满,我的理解是(其他指标的缓冲区的条数将是相同的)。 在当前指标的缓冲区被填满之前强制执行所有条件 或者把它还给手气不好的程序员,我们为什么要在错误的地方解决他的问题? 如果其他指标的计算还没有准备好,数值将为零,所以在这里强行填充是没有意义的,你可以填充过去的数据,但有同样的效果,你可以不向指标请求当前条形的数据,而是请求过去的数据,然后代码根本不应该改变。 因为测试者和真实账户的情况是不同的,模拟睡眠的工作非常奇怪,15秒滑点的重新计算只发生一次,而它必须发生在每一个刻度,或在要求下,而且根据日志,它不是在15秒内发生,而是在13秒内发生。 此外,同步问题是相关的,对于这种情况,最好能增加通知指标需要将数据流传递给其他指标的可能性,否则就不可能进行进一步的计算--这将是一个解决方案--在没有完成计算的情况下将数据流传递给另一个指标的命令。 尊敬的是,专家顾问应该等待来自指标的数据,并跳过刻度,直到完成计算;现在,当试图使用"while "语句 时,计算的结果挂起/停滞不前(即什么也没有发生,测试者只是站在那里),这也是不正确的。 当然,我已经通知了开发商,但我已经一个多月没有听到他的消息了--自由职业者的成本。 Aleksey Vyazmikin 2019.01.22 18:46 #9846 在测试者和真实账户中的情况是不同的,睡眠模拟工作非常奇怪,15秒滑移的指标重新计算只发生一次,而它应该在每一个刻度上发生,或在需求上发生,但它不是在15秒内发生,而是在13秒内发生,根据日志。此外,同步问题也是相关的,对于这种情况,最好能增加通知指标需要将数据流传递给其他指标的可能性,否则就不可能进行进一步的计算--这将是一个解决方案--在没有完成计算的情况下将数据流传递给另一个指标的命令。尊敬的是,专家顾问应该等待来自指标的数据,并跳过刻度,直到全部计算结束,但现在,当试图使用"while "语句 来等待正确的计算结果时,它冻结/停滞不前(即没有任何事情发生,测试者只是站在那里),这也是不正确的。 Aleksey Vyazmikin 2019.01.22 18:48 #9847 亲爱的Artyom Trishkin! 我非常希望,既然你已经确定上述问题是为初学者准备的,那么你已经知道了答案,可以帮助我了!"。 我正在等待专业人士的答复。 Artyom Trishkin 2019.01.22 19:06 #9848 Aleksey Vyazmikin:亲爱的Artyom Trishkin! 我非常希望,既然你已经确定上述问题是为初学者准备的,那么你已经知道了答案,可以帮助我了!"。 我正在等待专业人士的答复。我唯一能给出的建议是:如果指标没有收到计算所需的条数,应该退出OnCalculate():如果(rate_total<number of_bars required)返回0。 专家顾问应该检查从指标上收到的数据,如果它们不等于空指标值,才用收到的数据进行计算。 在指标中,首先,缓冲区被初始化为一个空值(它是什么 - 可以在指标中设置)。在指标中(缓冲区已经被填充了一个空值),检查可用的条数(我上面描述的)。如果通过了酒吧可用性的检查,则执行指标的计算周期,用必要的值填充缓冲区。.........在专家顾问中,检查指标计算的条数(有一个标准函数BarsCalculated())。从指标中获取数据取决于我们得到什么--这取决于你的TS的逻辑如果指标是一条线,那么它的空值表明它还没有被计算过--我们不拿它来计算。如果指标--箭头,那么就有另一种逻辑(因为空值也是它的工作数据),例如,如果这是一个分形,那么我们检查条数3,并从得到的数值中推回。好吧,包括你自己的逻辑,不要把一切都归咎于终端Bugs。首先,我用自己来检查Bugs。你呢? Aleksey Vyazmikin 2019.01.22 19:22 #9849 Artyom Trishkin:我只能建议:如果指标没有得到正确的计算条数,应该退出OnCalculate():如果(rate_total<number_of_bars required)返回0。谢谢你的提示,退出没有问题,但不能解决这个问题,我现在已经做为一个失败的计算。 if(barsch!=channel.BarsCalculated())return(counted_bars=rates_total-1); 并以某种方式填充缓冲区,从其他指标中获取数据,在满足条件之前,数据不会传递给EA。我还没有检查数据的正确性,但它看起来是正确的。或者是我错了,肯定有问题? 阿尔乔姆-特里什金。专家顾问应该检查从指标上收到的数据,如果它不等于空指标值,才用收到的数据进行计算。 专家顾问在一个新条形图 的到来时进行一次计算,而试图等待指标的正确值则分别导致测试器的停止。 阿尔乔姆-特里什金。在指标中,缓冲区首先被初始化为一个空值(它是什么 - 可以在指标中设置)。在指标中(缓冲区已经被填充了一个空值)检查可用的条数(如上所述)。如果通过了酒吧可用性的检查,则通过用必要的值填充缓冲器来进行指标计算的循环。.........在专家顾问中,检查指标计算的条数(有一个标准函数BarsCalculated())。从指标中获取数据取决于我们得到什么--这取决于你的TS的逻辑如果指标是一条线,那么它的空值表明它还没有被计算过--我们不拿它来计算。如果指标--箭头,那么就有另一种逻辑(因为空值也是它的工作数据),例如,如果这是一个分形,那么我们检查条数3,从得到的值开始。好吧,包括你自己的逻辑,不要把一切都归咎于终端Bugs。首先,我用自己来检查错误。你呢? 1.它是真实的。 2.就这样,事情发生了。这个计算在下一个tick上将是正确的,但我想在第一个tick上收到正确的计算,因为Expert Advisor没有在循环中等待其他tick,或者期望值与我的耐心不相称,也就是说,它不现实--有一个错误。 3. 4.当然了。 5.是的,我们是这样做的,但该指标需要接收来自其他指标的数据,这就是问题所在! 6.1-2.在指标缓冲区中故意放假数据是不正确的,这只会使专家顾问代码中的算法错误检测变得复杂。 7.我在逻辑上描述一切,但我没有写指标,所以我很难理解是什么原因,我描述的是指标的合理表现,即由于数据流的垄断,在没有收到其他指标的缓冲值的情况下无法进行计算(指标是按顺序计算)。 8.我已经在这里和之前指出,我不是作者,我花了很多时间--几乎是一天--来确定原因。 9.而我正在寻找解决问题的办法,另外,如果有人遇到过这种情况,可以迅速帮助我。我再说一遍,在那条线上,我开始写的是 "睡眠",后来又出现了测试器的其他功能,我也认为是错误的。 谢谢你的答复。 Artyom Trishkin 2019.01.22 19:41 #9850 Aleksey Vyazmikin:谢谢你的提示,输出没有问题,但它不能解决这个问题,到目前为止我已经做了一个失败的计算。 并以某种方式填充缓冲区,从其他指标获取数据,在条件满足之前,数据不会传递给EA。我还没有检查数据的正确性,但它看起来是正确的。或者是我错了,肯定有问题? 专家顾问在新条形图 到来时单独进行计算,因此,当试图等待指标的正确值时,会导致测试器的停止。 1.确实如此。 就这样,2。这个计算在下一个tick上是正确的,但是我需要在第一个tick上得到一个正确的计算,因为我的专家顾问没有在循环中等待其他tick,或者期望值与我的耐心不相称,也就是说,它不现实--有一个错误。 3. 4.当然了。 5.是的,我们是这样做的,但该指标需要接收来自其他指标的数据,这就是问题所在! 6.1-2.在指标缓冲区中故意放假数据是不正确的,这只会使专家顾问代码中的算法错误检测变得复杂。 7.我在逻辑上描述一切,但我没有写指标,所以我很难理解是什么原因,我描述的是指标的合理表现,即由于数据流的垄断,在没有收到其他指标的缓冲值的情况下无法进行计算(指标是按顺序计算)。 8.我已经在这里和之前指出,我不是作者,我花了很多时间--几乎是一天--来确定原因。 9.而我正在寻找解决问题的办法,另外,如果有人遇到过这种情况,可以迅速帮助我。我再说一遍,在那条线上,我开始写的是 "睡眠",后来又出现了测试器的其他功能,我也认为是错误的。 谢谢你的答复。在OnInit()中调用符号的时间序列:iTime(Symbol,Timeframe,1)。 在一开始,在OnTick()中,使用相应的iFunc()询问所需时间序列的所需条形,或者如果( iTime(Symbol,Timeframe,10)==0) 返回。 在这种情况下,专家顾问将不会检测到一个新的条形图,而会等待下一个刻度。 在OnInit()中,我们已经请求了时间序列数据,从而激活了数据分页。 在OnTick()中,我们检查EA是否有最低要求的历史记录,如果还没有,我们就等待下一个tick。 而在收到专家顾问所需的所有数据之前,它将等待下一个刻度。 一旦所有必要的数据被抽出并获得,专家顾问将开始使用新的条形图和所需的历史数据。 为了使串行数据保持最新,必须至少每两分钟访问一次。做一个大约一分半钟(90秒)的第二个计时器,在其中简单地引用所需符号的任何时间序列,例如iTime(Symbol,Timeframe,1); 不检查收到的数据 - 只是 "摇摆 "历史。那么符号上的所有数据将始终是最新的。 1...978979980981982983984985986987988989990991992...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
做 { ...缓冲区填充代码
}
虽然(这两个值不匹配)
简而言之,在循环中获取数值,直到它们匹配,然后才执行以下代码做 { ...缓冲区填充代码
}
虽然(这两个值不 重合)
简而言之,在循环中获取数值,直到它们是相同的,然后才执行以下代码问题是,在一个指标工作之前,数据(流)不会传递给另一个指标,也就是说,没有这个指标的OnCalculate 的指标循环不会有帮助。而OnCalculate一结束,数据就被传给了Expert Advisor,而且是错误的。
或者说我不理解你的想法。因此,重点是,在一个指标工作之前,数据(流)不会转移到另一个指标,也就是说,在没有终止这个指标的OnCalculate的情况下,指标中的循环不会有帮助。
你从其他指标的缓冲区逐一接收数值,如果它们的数量不一样,你就再接收一次,直到相同为止,忘记流。 但一般来说,没有人这样做--它非常 慢。
所以,重点是,在一个指标工作之前,数据(流)不会传递给另一个指标,也就是说,指标中的循环没有这个指标的OnCalculate是没有用的。但OnCalculate一结束,数据就被传递给Expert Advisor,而且是错误的。
或者我不明白你的想法。你需要条件为真,那么只有缓冲区会被填满,按照我的理解(其他指标的缓冲区的条数将是相同的)。
在填充当前指标的缓冲区之前,强行满足所有条件
或者把它还给错误的程序员--我们为什么要在错误的领域解决他的问题?
你从其他指标的缓冲区中一个一个地获取数值,如果它们的数量不一样,你再获取它们,直到相同为止,忘掉流。
你需要条件得到满足,那么只有缓冲区会被填满,我的理解是(其他指标的缓冲区的条数将是相同的)。
在当前指标的缓冲区被填满之前强制执行所有条件
或者把它还给手气不好的程序员,我们为什么要在错误的地方解决他的问题?
如果其他指标的计算还没有准备好,数值将为零,所以在这里强行填充是没有意义的,你可以填充过去的数据,但有同样的效果,你可以不向指标请求当前条形的数据,而是请求过去的数据,然后代码根本不应该改变。
因为测试者和真实账户的情况是不同的,模拟睡眠的工作非常奇怪,15秒滑点的重新计算只发生一次,而它必须发生在每一个刻度,或在要求下,而且根据日志,它不是在15秒内发生,而是在13秒内发生。
此外,同步问题是相关的,对于这种情况,最好能增加通知指标需要将数据流传递给其他指标的可能性,否则就不可能进行进一步的计算--这将是一个解决方案--在没有完成计算的情况下将数据流传递给另一个指标的命令。
尊敬的是,专家顾问应该等待来自指标的数据,并跳过刻度,直到完成计算;现在,当试图使用"while "语句 时,计算的结果挂起/停滞不前(即什么也没有发生,测试者只是站在那里),这也是不正确的。
当然,我已经通知了开发商,但我已经一个多月没有听到他的消息了--自由职业者的成本。
在测试者和真实账户中的情况是不同的,睡眠模拟工作非常奇怪,15秒滑移的指标重新计算只发生一次,而它应该在每一个刻度上发生,或在需求上发生,但它不是在15秒内发生,而是在13秒内发生,根据日志。
此外,同步问题也是相关的,对于这种情况,最好能增加通知指标需要将数据流传递给其他指标的可能性,否则就不可能进行进一步的计算--这将是一个解决方案--在没有完成计算的情况下将数据流传递给另一个指标的命令。
尊敬的是,专家顾问应该等待来自指标的数据,并跳过刻度,直到全部计算结束,但现在,当试图使用"while "语句 来等待正确的计算结果时,它冻结/停滞不前(即没有任何事情发生,测试者只是站在那里),这也是不正确的。
亲爱的Artyom Trishkin!
我非常希望,既然你已经确定上述问题是为初学者准备的,那么你已经知道了答案,可以帮助我了!"。
我正在等待专业人士的答复。
亲爱的Artyom Trishkin!
我非常希望,既然你已经确定上述问题是为初学者准备的,那么你已经知道了答案,可以帮助我了!"。
我正在等待专业人士的答复。
我唯一能给出的建议是:如果指标没有收到计算所需的条数,应该退出OnCalculate():如果(rate_total<number of_bars required)返回0。
专家顾问应该检查从指标上收到的数据,如果它们不等于空指标值,才用收到的数据进行计算。
.........
我只能建议:如果指标没有得到正确的计算条数,应该退出OnCalculate():如果(rate_total<number_of_bars required)返回0。
谢谢你的提示,退出没有问题,但不能解决这个问题,我现在已经做为一个失败的计算。
并以某种方式填充缓冲区,从其他指标中获取数据,在满足条件之前,数据不会传递给EA。我还没有检查数据的正确性,但它看起来是正确的。或者是我错了,肯定有问题?
专家顾问应该检查从指标上收到的数据,如果它不等于空指标值,才用收到的数据进行计算。
专家顾问在一个新条形图 的到来时进行一次计算,而试图等待指标的正确值则分别导致测试器的停止。
.........
1.它是真实的。
2.就这样,事情发生了。这个计算在下一个tick上将是正确的,但我想在第一个tick上收到正确的计算,因为Expert Advisor没有在循环中等待其他tick,或者期望值与我的耐心不相称,也就是说,它不现实--有一个错误。
3.
4.当然了。
5.是的,我们是这样做的,但该指标需要接收来自其他指标的数据,这就是问题所在!
6.1-2.在指标缓冲区中故意放假数据是不正确的,这只会使专家顾问代码中的算法错误检测变得复杂。
7.我在逻辑上描述一切,但我没有写指标,所以我很难理解是什么原因,我描述的是指标的合理表现,即由于数据流的垄断,在没有收到其他指标的缓冲值的情况下无法进行计算(指标是按顺序计算)。
8.我已经在这里和之前指出,我不是作者,我花了很多时间--几乎是一天--来确定原因。
9.而我正在寻找解决问题的办法,另外,如果有人遇到过这种情况,可以迅速帮助我。我再说一遍,在那条线上,我开始写的是 "睡眠",后来又出现了测试器的其他功能,我也认为是错误的。
谢谢你的答复。
谢谢你的提示,输出没有问题,但它不能解决这个问题,到目前为止我已经做了一个失败的计算。
并以某种方式填充缓冲区,从其他指标获取数据,在条件满足之前,数据不会传递给EA。我还没有检查数据的正确性,但它看起来是正确的。或者是我错了,肯定有问题?
专家顾问在新条形图 到来时单独进行计算,因此,当试图等待指标的正确值时,会导致测试器的停止。
1.确实如此。
就这样,2。这个计算在下一个tick上是正确的,但是我需要在第一个tick上得到一个正确的计算,因为我的专家顾问没有在循环中等待其他tick,或者期望值与我的耐心不相称,也就是说,它不现实--有一个错误。
3.
4.当然了。
5.是的,我们是这样做的,但该指标需要接收来自其他指标的数据,这就是问题所在!
6.1-2.在指标缓冲区中故意放假数据是不正确的,这只会使专家顾问代码中的算法错误检测变得复杂。
7.我在逻辑上描述一切,但我没有写指标,所以我很难理解是什么原因,我描述的是指标的合理表现,即由于数据流的垄断,在没有收到其他指标的缓冲值的情况下无法进行计算(指标是按顺序计算)。
8.我已经在这里和之前指出,我不是作者,我花了很多时间--几乎是一天--来确定原因。
9.而我正在寻找解决问题的办法,另外,如果有人遇到过这种情况,可以迅速帮助我。我再说一遍,在那条线上,我开始写的是 "睡眠",后来又出现了测试器的其他功能,我也认为是错误的。
谢谢你的答复。
在OnInit()中调用符号的时间序列:iTime(Symbol,Timeframe,1)。
在一开始,在OnTick()中,使用相应的iFunc()询问所需时间序列的所需条形,或者如果( iTime(Symbol,Timeframe,10)==0) 返回。
在这种情况下,专家顾问将不会检测到一个新的条形图,而会等待下一个刻度。
在OnInit()中,我们已经请求了时间序列数据,从而激活了数据分页。
在OnTick()中,我们检查EA是否有最低要求的历史记录,如果还没有,我们就等待下一个tick。
而在收到专家顾问所需的所有数据之前,它将等待下一个刻度。
一旦所有必要的数据被抽出并获得,专家顾问将开始使用新的条形图和所需的历史数据。
为了使串行数据保持最新,必须至少每两分钟访问一次。做一个大约一分半钟(90秒)的第二个计时器,在其中简单地引用所需符号的任何时间序列,例如iTime(Symbol,Timeframe,1); 不检查收到的数据 - 只是 "摇摆 "历史。那么符号上的所有数据将始终是最新的。