错误、漏洞、问题 - 页 2815

 

执行过程中出错。

class A {
public:
        A( int ) { Print( 1 ); }
        A( A&  ) { Print( 2 ); }
};
void OnStart()
{       
        int a = 5;
        {
                A a( a );         //(1)
        }
}

  • 结果在MQL。2
  • 预计在MQL。1

事实上,这个例子是由C++规则执行的

void OnStart()
{
        int a = 5;
        {
                A a( a );         //(2)
        }
}

而下面的例子根据其(与C++不同)规则在MQL中工作

void OnStart()
{       
        int a = 5;
        {
                int a = a;         //(3)
                printf( "%d", a );
        }
}

  • 结果(3)在MQL中。5
  • 在C++中:0(或随机数)

一个变量被认为是在以下情况下声明的

  • 从出现的那一刻起(*),或
  • 自声明结束后(**)。

在С++中,有一个单一的(*)方法,而在MQL中,在(2)的情况下是(*),在(3)的情况下是(**)。 在(2)和(3)之间有什么根本区别?

这是一个问题,为什么在MQL中,在一种情况下,变量从出现的那一刻起就被认为是声明的,而在另一种情况下,从声明完成的那一刻起就被认为是声明的?

 

编译错误。

#import "z.ex5"
#import
#define  MACRO1( x )    (x) //(*)
#define  MACRO2( x )    MACRO1(x)
int f( int z )
{
        return MACRO2( z ); //Error: '()' - operand expected
}

否则。

#define  MACRO1( x )    x  //(**)

好的。(*)和(**)之间有什么区别?

 
Fast235:

我不能在一个空的终端或在一个以前未使用的符号中加载历史记录

当我在M1上运行时,它加载了所有的东西,在H1上,它加载了~720个柱子,仅此而已,指标需要更少的东西来工作,但进一步的柱子加载停止了,指标不能正确呈现(如果我检查约900个柱子,指标完全停止工作)。

.....

我附上了来自https://www.mql5.com/ru/docs/series/timeseries_access 的脚本 我很长时间都不想用它,因为它太麻烦了。我把它加到了指标中,加了几行,它就能正常工作了。

该脚本设计精良,易于集成到交易机器人中,是多币种和多时间段的必备工具!因为它不加载或冻结取决于工作指标。

同样的事情,即使用标准的MA也能得到,但由于它的特殊性等,许多人不会注意到它,只是改变图表或周期,然后它就会重新加载......

Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
  • www.mql5.com
Прежде чем ценовые данные будут доступны в терминале MetaTrader 5, их необходимо получить и обработать. Для получения данных требуется подключение к торговому серверу MetaTrader 5. Данные поступают с сервера по запросу терминала в виде экономно упакованных блоков минутных баров. Механизм обращения к серверу за данными не зависит от того, каким...
 
下午好!安卓 4.4系统的MT5 已经停止更新。甚至无法打开该应用程序。如果有人遇到过这种情况,我希望得到帮助。
谢谢你!
 
fxsaber:

它们可以通过OnTesterInit中的Expert.mqh获得,因为Expert Advisor将在框架模式下运行以设置参数。

EXPERT::Parameters的调用由于某种原因有了字符串类型。这是一个错误还是一个限制?

 
Stanislav Korotky:

由于调用EXPERT::Parameters的结果,由于某种原因,所有的参数都是字符串类型。这是一个错误还是一个限制?

一个更好的例子。

 
Andrey:
下午好!安卓 4.4系统的MT5 已经停止更新。甚至无法打开该应用程序。如果有人遇到过,希望能得到帮助。
谢谢你!

最低限度是安卓 5,这就是开发人员最近写的。

 
fxsaber:

举个例子会更好。

那么这个例子是这个方法的标准,算是吧。

    EXPERT::Parameters(0, parameters, names);
    for(int i = 0; i < ArraySize(parameters); i++)
    // здесь parameters[i].type всегда равно TYPE_STRING, вне зависимости от фактического типа параметра

这也可以从Expert.mqh库本身的源代码看出。

PS。将讨论转移到图书馆专题。

 

ParameterGetRange/ParameterSetRange的另一个错误。

调用ParameterSetRange 并不改变将参数纳入后续ParameterGetRange 调用的优化中的标志。

// параметр "name" изначально включен в оптимизацию
// в одной части кода...
ParameterSetRange("name", false, value, start, step, stop);
...
// в другой части кода финализация проверок
ParameterGetRange("name", enabled, value, start, step, stop); // получаем enabled=true, т.е. изменения внесенные ParameterSetRange не применились
 
Stanislav Korotky:

ParameterGetRange/ParameterSetRange的另一个错误。

对ParameterSetRange的调用不会改变标志,以便在随后对ParameterGetRange 的调用中把参数纳入优化。

我记得当我开始接触这个话题时,有很多细微的差别。有些东西显示出正确或错误,取决于OnTester*函数。试着在不同的On-functions中调用它。