错误、漏洞、问题 - 页 460

 
voix_kas:

该EA需要访问一个指标。你至少可以通过三种方式获得它:IndicatorCreate(...)或iCustome(...),或者,如果它是一个标准指标,例如,iMA(...)。

据我所知,当使用任何变体时,你必须明确地释放产生的句柄(IndicatorRelease)。

这个问题是关于选择调用指标的方式。每种方法的优点和缺点是什么?对处理速度的优先兴趣。

IndicatorCreate - 用于标准指标,因此在手腕的情况下,它们是iMA调用的类似物。iCustom - 用于 "自定义 "的自定义指标。也就是说,本质上是不同的东西。

iMA和IndicatorCreate(IND_MA)的调用速度应该是相当的,但我没有检查。

至于 IndicatorRelease - 如果你在计算后不需要返回这个指标,那么调用它是有意义的。我没有这种情况--如果需要一些指标(有一组给定的参数),那么它将需要额外的计算/再计算,如果脚本的输入参数发生变化,那么一切都将被重新初始化,新的手柄将被创建。

 

事实上,99%的情况下,调用IndicatorRelease 是程序员的一个逻辑错误。

指标的创建是最昂贵的操作之一,它引发了非常深入的计算机制。试图关闭一个指标手柄也是一个非常昂贵的操作,如果你考虑到其实施的真正过程。频繁地创建和关闭指标表明,开发者根本不了解操作的本质。

它非常容易理解。

Документация по MQL5: Доступ к таймсериям и индикаторам / IndicatorRelease
Документация по MQL5: Доступ к таймсериям и индикаторам / IndicatorRelease
  • www.mql5.com
Доступ к таймсериям и индикаторам / IndicatorRelease - Документация по MQL5
 
Renat:

事实上,在99%的情况下,调用 IndicatorRelease 是程序员的一个逻辑错误。

创建一个指标是最昂贵的操作之一,会触发非常深的机制来计算它们。如果你考虑到其实施的真正底层过程,试图关闭一个指标手柄也是一个非常昂贵的操作。频繁地创建和关闭指标表明,开发者根本不了解操作的本质。

它非常容易理解。

让我插话说:M-程序、终端、外汇的机制(事实上,我们为什么聚集在这里)。

我们在这里的原因是简单的真理,那么是什么阻碍了我们理解这些真理,并为卢布割草--或我们要销售的软件。

如果没有可能这样做,我们必须保持沉默,直到 "奇迹 "发生!

 
Im_hungry:

让我插话说:程序的机制、终端、外汇(基本上是我们在这里的目的)。

我们必须谨慎对待我们所做的事情和我们不想做的事情。

我们应该保持沉默,直到有 "奇迹 "发生!"。

一个不可理解的思想流的美丽例子。我羡慕这种能力。
 
Renat:
一个不可理解的思想流的美丽例子。能够这样做是令人羡慕的。

当然是80级的绝地,尤达大师在一旁静静地打坐 :)

而且毫无疑问,他们 "在遇到困难时帮助无家可归的孩子"(来自12位主席)。

 

不久前,我的工作代码停止了编译。

这是在指责标准库中 的代码。

'GetLastError' - ambiguous call to overloaded function with the same parameters SymbolInfo.mqh  718     10
'GetLastError' - ambiguous call to overloaded function with the same parameters	SymbolInfo.mqh	725	57
显然是因为我的代码中的内容。
#import "kernel32.dll"
uint GetLastError();
#import
.....
kernel32::GetLastError() 
.... 

我怎样才能 "消化 "这个问题,使我的程序重新运作?我不确定MQL的新版本有什么变化。

是否不允许导入的函数与内置的函数有相同的名称?如何继续生活?

 
7134956:

我怎样才能 "消化 "这个问题,使我的程序重新运作?我不太明白MQL的新版本有什么变化。

只需添加一个参数在

#import "Kernel32.dll"
uint GetLastError(int);
#import
 
sergeev:

内添加一个简单的参数

谢谢你!似乎有帮助。但是,传递一个多余的参数,这有点像拐杖。
 
让我们把它看作是一个功能或一个自动调试器。
 
sergeev:
让我们把它看成是一个功能或自动调试器。

你可以把它拿出来,包在一个单独的库里,重新命名。

你也可以尝试要求命名空间,但这可能没有用。