mql4语言的特点、微妙之处以及技巧 - 页 4

 
Alexey Kozitsyn:
哇,这是个微妙的观点。他们在SD中写了吗?

作者曾写道。长期以来,语言的能力与旧的文档不一致,也就是说,没有文档的东西实际上被使用了,相应地,这是一个奇怪的说法。

关于交易、自动交易系统和策略测试的论坛

如何快速比较 double 和 QNaN ?

fxsaber, 2016.10.11 15:56

没有人注意到。

double QNaN   =Nan(0x7FF7000000000000);  

全局变量的初始值 现在可以通过一个函数来声明了!

其余的静态变量也是如此。

奇怪的是,开发商对这一创新却保持沉默。


Документация по MQL5: Основы языка / Переменные / Статические переменные
Документация по MQL5: Основы языка / Переменные / Статические переменные
  • www.mql5.com
Основы языка / Переменные / Статические переменные - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
fxsaber:
在这两种语言中,有一个关于静态的微妙观点

阿列克谢-科齐岑
哇,说得真好...你是用SD写的吗?

帮助中说,一个静态变量......这是否合适?自己看吧。

静态变量可以由一个常数或 适合其类型的常数表达式 来初始化,这与简单的局部变量不同,后者可以由任何表达式来初始化。


但不是一个函数。

这就是它的工作方式

#property strict
#property indicator_chart_window

int TestBrokenStatic()
{
   static int stInt = 101;
   stInt++;
   return stInt;
}

int OnInit()
{
   static int result = 0;
   result = TestBrokenStatic();
   Print("TestStatic Expected result 102   - Actual result=", result);
   result = TestBrokenStatic();
   Print("TestStatic Expected result 103   - Actual result=", result);
   
   return INIT_SUCCEEDED;
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   return rates_total;
}
2017.04.29 13:49:51.546 !Test USDCHF,M15: TestStatic Expected result 103   - Actual result=103
2017.04.29 13:49:48.457 !Test USDCHF,M15: TestStatic Expected result 102   - Actual result=102
2017.04.29 13:49:40.089 Custom indicator Test\!Test USDCHF,M15: loaded successfully
Статические переменные - Переменные - Основы языка - Справочник MQL4
Статические переменные - Переменные - Основы языка - Справочник MQL4
  • docs.mql4.com
Статические переменные - Переменные - Основы языка - Справочник MQL4
 
Alexey Viktorov:

帮助中说,一个静态变量......这是否合适?自己看吧。

但不是一个函数。

这就是它的作用。

那么编译器必须给出一个错误...
 
Alexey Viktorov:

帮助中说,一个静态变量......这是否合适?自己看吧。

我一下子给了一个文档的链接,又给了一个六个月前 代码讨论的链接,这样做可以吗...遵循你自己的建议。

尤其是静态常量。

 
fxsaber:

一次性链接到文档,并链接到开发人员 六个月前的代码讨论,这是否可以...听从你自己的建议。

尤其是静态常量。

我没有看链接,因为我不懂希腊语,而机械翻译有时比中文/日文加一点韩国语更难理解。

而且你不必如此敏感。我的话里没有一丝责备的意思,你没有注意到这样的小事。

 
Alexey Viktorov:

我没有看这个链接,因为我对aglitsky语言缺乏了解,而机械的翻译有时比带有少量韩国语的中文/日文更让人难以理解。

哦,也没必要这么丧心病狂。我的话中没有一丝责备,你没有注意到这样的小事。


关于交易、自动交易系统和策略测试器的论坛

mql4语言的特点、微妙之处以及技巧

fxsaber, 2017.04.29 11:07

长期以来,语言的特点与旧的文档不一致,也就是说,实际上使用的是无文档的东西,关于这些东西的说法也相应的很奇怪。

 
Alexey Kozitsyn:
那么编译器应该给出一个错误...

也许应该这样,但是...我们拥有我们所拥有的。

 
fxsaber:

以前的文件不是这样的吗?


ps.对我来说,现在掌握这些参考资料的意义已经太晚了......。

但这里是对这一说法的反驳

fxsaber:

没有人注意到。

全局变量的初始值 现在可以通过一个函数来声明了!

其余的静态变量也是如此。

奇怪的是,开发商对这一创新却保持沉默。

还是说这完全是为了别的事情?申报还是初始化?
 
static const bool IsTester = (::MQLInfoInteger(MQL_TESTER) || ::MQLInfoInteger(MQL_OPTIMIZATION) ||
                              ::MQLInfoInteger(MQL_VISUAL_MODE) || ::MQLInfoInteger(MQL_FRAME_MODE));
 
fxsaber:

我现在无法检查,但MQL_TESTER似乎包括其他一切。但其他的一切分别不包括对方。

也就是说,要了解该程序在测试器中工作(在任何列出的模式中),你只需要检查第一个标志。

原因: