Errores, fallos, preguntas - página 1437 1...143014311432143314341435143614371438143914401441144214431444...3188 Nuevo comentario Ilyas 2015.11.24 15:15 #14361 MathIsValidNumber Документация по MQL5: Математические функции / MathIsValidNumber www.mql5.com Математические функции / MathIsValidNumber - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5 Ilyas 2015.11.24 15:16 #14362 El comportamiento es diferente, debido a un optimizador más agresivo para el código MQL5. Ilya Malev 2015.11.24 15:22 #14363 Ilyas: MathIsValidNumber Gracias, no sabía Ilya Malev 2015.11.24 15:30 #14364 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. Slava 2015.11.24 16:35 #14365 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 Vladimir Karputov 2015.11.24 17:43 #14366 Сергей Таболин: ¿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]? Dina Paches 2015.11.24 17:59 #14367 Сергей Таболин: Observe los valores de pr_open y pr_close la primera vez que se accede a ellos. Vladimir Pastushak 2015.11.24 17:59 #14368 Сергей Таболин: 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]; Maxim Khrolenko 2015.11.24 18:02 #14369 Сергей Таболин: 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. Errors, bugs, questions Problemas de comprobación del matriz estática ? Vladimir Karputov 2015.11.24 18:05 #14370 Сергей Таболин: 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 1...143014311432143314341435143614371438143914401441144214431444...3188 Nuevo comentario
MathIsValidNumber
El comportamiento es diferente debido a un optimizador más agresivo para el código MQL5.
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?
¿Puede decirme por qué la siguiente línea (cuando se accede por primera vez) da un error de "fuera de rango"?
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?
es el relleno, ¿no?
¿O me estoy perdiendo algo?
Tienes que establecer el tamaño del array antes de llenarlo. (ArrayRezise). Un ejemplo sencillo: