错误和功能紊乱 - 页 2

 
angevoyageur:

你不必期待文件 中所描述的其他东西。

例如,一个指标中的缓冲区数量必须事先用编译器指令声明。

#propertyindicator_buffers 3// 缓冲区的数量
#propertyindicator_plots 2// 绘图数量

用于绘图的缓冲区的数量取决于指标类型。这个类型可以动态地 设置。所以编译器没有办法确定缓冲区的正确使用。上面的声明可以使用1个缓冲区的2个绘图,第三个是INDICATOR_CALCULATIONS,或者1个缓冲区的1个绘图和2个缓冲区的1个,或者...

MQL5给了你很大的灵活性,这取决于你如何将你的缓冲区与你的指标逻辑地结合起来。这并不是一个错误

我不认为这是一个bug,这是一个功能障碍。

我理解#pragma的概念,但如果我通过#pragmas声明

#property indicator_buffers 3
#property indicator_plots   3

这并不意味着我将使用3个缓冲区和3个绘图,这意味着我将资源使用限制在最多3个缓冲区和最多3个绘图,以便系统知道在启动我的指标时应该保留多少内存和/或其他资源。

因此,不管我声明了多少最大值,真正的使用量是通过动态分配决定的。
因此,当我声明一个指标 缓冲区INDICATOR_CALCULATIONS 缓冲区时,我并不期望它在图表上可见。

 
angevoyageur:

你画的是什么对象,第一个似乎是趋势线,但第二个只有两个锚点

你对磁铁灵敏度的设置是什么?

这是斐波那契扩张,磁铁敏感度设置为50。但它在较低的数值上也不能正常工作,如20。

还有其他类型的对象,如趋势线。

 
graziani:

g #4

磁铁(工具->选项->图表->磁铁灵敏度)对蜡烛的作用不正常。

选定的点不是放在典型的蜡烛点上(高点/低点/...),而是放在中间的空间。

在这种情况下,如果你移动一个点,其他的也会被移动,尽管你只想移动一个。

我想只有当你放开锚点 时,才会产生快照,而不是在你拖动它的时候。 我知道它在Ninja中的工作方式不同,但我想这是MetaTrader的通常行为。
Documentation on MQL5: Standard Constants, Enumerations and Structures / Objects Constants / Methods of Object Binding
Documentation on MQL5: Standard Constants, Enumerations and Structures / Objects Constants / Methods of Object Binding
  • www.mql5.com
Standard Constants, Enumerations and Structures / Objects Constants / Methods of Object Binding - Documentation on MQL5
 
RaptorUK:
我认为只有当您放开锚点 时,才会产生快照,而不是在您拖动它的时候。 我知道它在Ninja中的工作方式不同,但我认为这是在MetaTrader中的通常行为。
不,在MT4中这是正确的。
 
graziani:

我不会说这是一个bug,这是一个功能障碍。从现在开始,我将说明我认为报告是一个bug还是功能障碍。

我理解#pragma的概念,但如果我通过#pragmas声明

这并不意味着我将使用3个缓冲区和3个绘图,这意味着我将资源使用限制在最多3个缓冲区和最多3个绘图,以便系统知道在启动我的指标时应该保留多少内存和/或其他资源。

因此,不管我声明了什么最大值,真正的使用量是通过动态分配决定的。
因此,当我将一个指标缓冲区 声明INDICATOR_CALCULATIONS 缓冲区时,我并不期望它在图表上显示出来。

你能展示一下你用于该 "功能障碍 "的代码片段吗?
 
RaptorUK:
我认为只有当您放开锚点 时才会产生卡顿,而不是在您拖动它的时候。 我知道它在Ninja中的工作方式不同,但我认为这是MetaTrader的通常行为。
我明白了,在MT4中,X轴上的快照在你移动它时起作用,但在MT5中不是。
 
graziani:

这是斐波那契扩张,磁铁灵敏度设置为50。但它在较低的数值上也不能正常工作,如20。

还有其他类型的对象,如趋势线。

我不太习惯 使用这种工具,但在我看来它是有效的,不是吗?

磁铁灵敏度

 
angevoyageur:
你能展示一下你用于该 "功能障碍 "的代码片断吗?

好吧,现在看来,我们已经偏离了我报告这种 "功能障碍 "的想法。

重点是,当你用SetIndexBuffer(int, double,ENUM_INDEXBUFFER_TYPE)定义一个动态数组时,从逻辑上讲,可以假设(因为文档中没有说明)通过定义

   SetIndexBuffer(0, all, INDICATOR_DATA);
   SetIndexBuffer(1, up, INDICATOR_DATA);
   SetIndexBuffer(2, down, INDICATOR_CALCULATIONS);

就不可能在任何地方看到第三个缓冲区的存在:在图表、指标属性 或使用该指标的EA中。
特别是你不得不定义这个动态分配的数组的使用性质。
(再重复一次,通过#pragmas定义缓冲区和绘图的数量并不意味着你会使用所有这些缓冲区。)

但是,除了这不是真的,对于有经验的程序员来说,这似乎也是不明显的,所以我认为目前报告这样的 "功能障碍 "没有任何意义。

那么......我到底该不该报告这样的事情?

我将用我想到的类似的东西再试一次,但现在看来,这似乎是在浪费(不仅是我的)时间;)

 
angevoyageur:

我不太习惯 使用这种工具,但在我看来,它是有效的,不是吗?


我不相信你在第一次尝试中就不能重现这种失败。

只要把灵敏度调到20/50,然后试着移动趋势线、菲波或任何物体的锚点

Documentation on MQL5: Standard Constants, Enumerations and Structures / Objects Constants / Methods of Object Binding
Documentation on MQL5: Standard Constants, Enumerations and Structures / Objects Constants / Methods of Object Binding
  • www.mql5.com
Standard Constants, Enumerations and Structures / Objects Constants / Methods of Object Binding - Documentation on MQL5
 
RaptorUK:
啊,我明白了,在MT4中,X轴上的卡位在你移动它时是有效的,但在MT5中不是。

是的!

而且它在不正确的水平上卡住了!

当你移动其他的点时,所有没有被卡住的点也会移动,尽管它们不应该。

我怎么会是第一个注意到这一点的人呢?

我在6个月前使用MT5的10分钟后就注意到了这种令人恼火的行为