错误、漏洞、问题 - 页 2491

 
Alexey Navoykov:
我注意到很久了,在一个大项目中高亮显示用户定义的宏名称并不总是有效。 许多在其他文件中定义的宏由于某种原因没有被高亮显示。 我还搞不清楚其中的规律。 我所看到的是,在某个文件中定义的所有宏在某一行之后在其他文件中停止高亮显示。 有人在自己的文件中看到这种情况吗?
 
Alexey Navoykov:
我注意到很久了,在一个大项目中高亮显示自定义宏名称并不总是有效。 许多在其他文件中定义的宏由于某种原因没有被高亮显示。 我还不能找出规律。 我所看到的是,所有在某个文件中定义的宏在某一行之后在其他文件中停止高亮显示。 有没有人看到自己发生这种情况?

我也注意到了类似的情况。我不能保证这种情况的准确性。

 
Alexey Navoykov:
很长时间以来,我注意到一个大项目中的自定义宏名称并不总是高亮显示。 许多在其他文件中定义的宏由于某种原因没有高亮显示。 我还搞不清楚其中的原因,但我看到所有在某个文件中定义的宏在某一行之后在其他文件中停止高亮显示。 有没有人在他们的环境中看到这种情况?

是的,有时自动修正对新的变量或类字段不起作用,通常可以通过重新编译项目 来修复。

据我所知,在ME的后台运行一个处理高亮和自动修正的进程,在某些时候,它没有时间(或不想)更新所有的信息。

 
现在我们正在讨论rate_total,让我问一下社区,OnCalculate 中的什么结构更聪明、更理想?
我曾经在OnCalculate中使用过这样的结构:
if (rates_total==prev_calculated) {}        // новый тик, перерисовываем последний бар, все бары на своих местах
else if (rates_total-prev_calculated==1) {} // момент формирования нового бара 
else {}                                     // пересчитываем последние(rates_total-prev_calculated) бар


但在我意识到可能存在prev_calculated>rates_total的情况后,我意识到我什么都不懂,我放弃了,如果重新计算所有条形的时间不超过几秒钟,我开始使用这样的结构。

if (rates_total==prev_calculated) {}        // новый тик, перерисовываем последний бар, все бары на своих местах
else if (rates_total-prev_calculated==1) {} // момент формирования нового бара 
else {}                                     // пересчитываем все бары

我如何做,如何正确地做?

 
Nikolai Semko:
既然我们说的是rate_total,让我问问社区,OnCalculate中的什么结构更优雅、更理想?
我曾经在OnCalculate中使用过这样的结构。


但在我意识到可能存在prev_calculated>rates_total的情况后,我意识到我什么都不懂,我放弃了,如果重新计算所有条形的时间不超过几秒钟,我开始使用这样的结构。

有人是如何做到的,一般来说,是如何胜任的?

它是有文采的,因为你明白发生了什么事。关于你的建筑的注意事项。我不写==1,而是写>=1,或者只写if(rates_total > prev_calculated),这样,如果错过的条数被抽走了,就会重新计算。

另外,在mql5和mql4的严格指令下,为了不使数组 过热,我们应该考虑从最左边的柱子开始计算可能涉及多少个柱子。因此,事实证明,我个人并没有一个适用于所有场合的模板。

 
Nikolai Semko:
现在我们正在讨论rate_total,我想问问社区,OnCalculate中的什么结构更优雅、更理想?
我曾经在OnCalculate中使用过这样的结构。


但当我了解到可能存在prev_calculated>rates_total的情况时,我意识到我什么都不懂,于是摇了摇头,如果重新计算所有条形图的时间不超过几秒钟,我决定使用这种结构。

有人是如何做到的,一般情况下是如何做到正确的?

我的计算方法是:limit = rates_total - prev_calculated。
然后,如果limit > 1,那么limit = rates_total - 1(或第一次计算所需的条数-1),并进行初始化。
然后从极限到>=0进行循环。
我不能从我的手机做代码...
 
Nikolai Semko:
既然我们说的是rate_total,让我问问社区,OnCalculate中的什么结构更优雅、更理想?
我曾经在OnCalculate中使用过这样的结构。


当我了解到可能存在prev_calculated>rates_total的情况时,我意识到我什么都不懂,所以我放弃了,使用了这种结构,如果重新计算所有条形图不超过几秒钟。

有谁能做到这一点,而且,一般来说,如何能胜任?

原则上,这个问题是相关的,在开发者的例子中(交付MT)不同的计算方式,甚至BarsCalculated()在Bars.mql5中也被使用。

我最近在MT4下讨论,到目前为止,我已经确定了以下模式:https://www.mql5.com/ru/forum/314931/page2#comment_11946579

我仍然要在MT5上检查,但图表的行为是不同的(MT4/MT5),在MT5中,如果你用鼠标滚轮滚动到历史的开头,似乎prev_calculated将被重置为零 - 去年我在MT5上写了一个指标,看到这种行为很惊讶

ZZY:制作自定义图表,通过计时器滚动浏览历史 - 需要一个所谓的测试平台来追踪 rates_total 和 prev_calculated 的行为 - 我几页前在这里写过 rates_total 和 iBars() 的不匹配 - 这也应该被考虑在内。

我喜欢他写指标的方式--一切都做得很仔细。 他的代码的唯一问题是源代码格式的风格非常特别。

 
Igor Makanu:

...........................

一个非常奇特的格式化来源的风格


 
Сергей Таболин:


我知道如何使用样式器,但如果你在一行中放入几个运算符,样式器就不工作了

;)

示例https://www.mql5.com/ru/code/22766
 

只是一个问题。

ulong的最高值为18.........

我得到的数值是61........

而这个值的IntegerToString()给出的是90.............。

我花了一段时间才找到问题所在。

有什么方法可以使其本地化吗?