错误、漏洞、问题 - 页 1437

 
Документация по MQL5: Математические функции / MathIsValidNumber
Документация по MQL5: Математические функции / MathIsValidNumber
  • www.mql5.com
Математические функции / MathIsValidNumber - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
行为是不同的,由于MQL5代码的优化器更加积极。
 
Ilyas:
MathIsValidNumber
谢谢你,我不知道
 
Ilyas:
由于MQL5代码的优化器更加积极,所以行为有所不同。
另外,MT4更聪明,给出了 "积分恒定溢出 "的警告,而MT5则无动于衷。
 
Ilya Malev:

1.为什么在MT4和MT5中,这段代码会导致不同的结果(而在MT4中更符合逻辑)?

阅读文件

EMPTY_VALUE 在MQL4中是什么意思?

Прочие константы - Документация на MQL4
  • docs.mql4.com
Прочие константы - Документация на MQL4
 
Сергей Таболин:

你能告诉我为什么下面这一行(第一次访问时)会出现 "超出范围 "的错误。

申报 - 已申报,但谁来填充缓冲区buf_ldn[ldn]?
 
Сергей Таболин:

在第一次访问pr_open和pr_close时,看看它们的值。
 
Сергей Таболин:

这就是它,不是吗?

还是我错过了什么?

你声明了一个数组,但没有指定数组的大小...

静态例子int buf_lup[1000], buf_ldn[20000]

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

这就是补课的内容,不是吗?

还是我错过了什么?

不,这不是一个数组填充。此外,如果ldn = 0;,通过将0放入[ ],你已经声明了数组中的0个元素,也就是说,那里甚至没有一个元素。阅读文章 《MQL5中的数组:MQL5编程的基础》。
 
Сергей Таболин:

这就是补课的内容,不是吗?

还是我错过了什么?

你必须在填充前设置数组的大小。(ArrayRezise)。一个简单的例子。

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                              Copyright © 2015, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#property script_show_inputs
input bool show_error=true; // true - выполнить с ишибкой
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   int buf_ldn[]; // объявили динамический массив.
   Print("Размер массива buf_ldn[]=",ArraySize(buf_ldn)); // выведем на печать размер массива
   if(show_error)
     {
      //--- попытка присвоить значение элементу массива с индексом "0" вызовет ошибку:
      //--- Test (EURUSD,M15)   array out of range in 'Test.mq5' (22,14)
      buf_ldn[0]=1;
     }
   else
     {
      //--- установим новый размер массива:
      ArrayResize(buf_ldn,1);
      //--- попытка присвоить значение элементу массива с индексом "0" НЕ вызовет ошибку:
      buf_ldn[0]=1;
      //--- выведем на печать размер массива и значение элемента с индексом "0"
      Print("Размер массива buf_ldn[]=",ArraySize(buf_ldn),", элемент с индексом ""0"" имеет значение:",buf_ldn[0]);
     }
  }
//+------------------------------------------------------------------+
附加的文件:
Test.mq5  2 kb