Errores, fallos, preguntas - página 1437

 
Документация по MQL5: Математические функции / MathIsValidNumber
Документация по MQL5: Математические функции / MathIsValidNumber
  • www.mql5.com
Математические функции / MathIsValidNumber - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
El comportamiento es diferente, debido a un optimizador más agresivo para el código MQL5.
 
Ilyas:
MathIsValidNumber
Gracias, no sabía
 
Ilyas:
El comportamiento es diferente debido a un optimizador más agresivo para el código MQL5.
También MT4 era más inteligente y daba un aviso de "desbordamiento constante integral", mientras que MT5 no decía nada.
 
Ilya Malev:

1. ¿Por qué en MT4 y MT5 este código conduce a resultados diferentes (y más lógicos en MT4)?

Leer la documentación

¿Qué significa EMPTY_VALUE en MQL4?

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

¿Puede decirme por qué la siguiente línea (cuando se accede por primera vez) da un error de "fuera de rango"?

Declare - declarado, pero ¿quién llenará el buffer buf_ldn[ldn]?
 
Сергей Таболин:

Observe los valores de pr_open y pr_close la primera vez que se accede a ellos.
 
Сергей Таболин:

eso es lo que es, ¿no?

¿O me estoy perdiendo algo?

Has declarado un array pero no has especificado el tamaño del mismo...

Ejemplo estáticoint buf_lup[1000], buf_ldn[20000];

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

es el relleno, ¿no?

¿O me estoy perdiendo algo?

No, no es un relleno de matriz. Además, si ldn = 0;, al poner 0 en [ ] has declarado 0 elementos en el array, es decir, no hay ni siquiera un elemento allí. Lea el artículo Arrays in MQL5: Fundamentals of MQL5 Programming.
 
Сергей Таболин:

es el relleno, ¿no?

¿O me estoy perdiendo algo?

Tienes que establecer el tamaño del array antes de llenarlo. (ArrayRezise). Un ejemplo sencillo:

//+------------------------------------------------------------------+
//|                                                         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]);
     }
  }
//+------------------------------------------------------------------+
Archivos adjuntos:
Test.mq5  2 kb