Errori, bug, domande - pagina 1437 1...143014311432143314341435143614371438143914401441144214431444...3184 Nuovo commento Ilyas 2015.11.24 15:15 #14361 MathIsValidNumber Документация по MQL5: Математические функции / MathIsValidNumber www.mql5.com Математические функции / MathIsValidNumber - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5 Ilyas 2015.11.24 15:16 #14362 Il comportamento è diverso, a causa dell'ottimizzatore più aggressivo per il codice MQL5. Ilya Malev 2015.11.24 15:22 #14363 Ilyas: MathIsValidNumber Grazie, non sapevo Ilya Malev 2015.11.24 15:30 #14364 Ilyas: Il comportamento è diverso a causa dell'ottimizzatore più aggressivo per il codice MQL5. Anche MT4 era più intelligente e dava un avviso di "overflow costante integrale", mentre MT5 era silenzioso. Slava 2015.11.24 16:35 #14365 Ilya Malev: 1. Perché in MT4 e MT5 questo codice porta a risultati diversi (e più logici in MT4)?Leggi la documentazioneCosa significa EMPTY_VALUE in MQL4? Прочие константы - Документация на MQL4 docs.mql4.com Прочие константы - Документация на MQL4 Vladimir Karputov 2015.11.24 17:43 #14366 Сергей Таболин: Potete dirmi perché la seguente linea (al primo accesso) dà un errore "out of range": Dichiarare - dichiarato, ma chi riempirà il buffer buf_ldn[ldn]? Dina Paches 2015.11.24 17:59 #14367 Сергей Таболин: Guardate i valori di pr_open e pr_close la prima volta che vi si accede. Vladimir Pastushak 2015.11.24 17:59 #14368 Сергей Таболин: è quello che è, no?O mi manca qualcosa?Hai dichiarato un array ma non hai specificato la dimensione dell'array...Esempio staticoint buf_lup[1000], buf_ldn[20000]; Maxim Khrolenko 2015.11.24 18:02 #14369 Сергей Таболин: è quello che è, no?O mi manca qualcosa? No, non è un riempimento di array. Inoltre, se ldn = 0;, mettendo 0 in [ ] avete dichiarato 0 elementi nell'array, cioè non c'è nemmeno un elemento. Leggete l'articolo Arrays in MQL5: Fondamenti della programmazione MQL5. Vladimir Karputov 2015.11.24 18:05 #14370 Сергей Таболин: questo è il riempimento, vero?O mi manca qualcosa?Dovete impostare la dimensione dell'array prima di riempirlo. (ArrayRezise). Un semplice esempio://+------------------------------------------------------------------+ //| 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]); } } //+------------------------------------------------------------------+ File: Test.mq5 2 kb 1...143014311432143314341435143614371438143914401441144214431444...3184 Nuovo commento
MathIsValidNumber
Il comportamento è diverso a causa dell'ottimizzatore più aggressivo per il codice MQL5.
1. Perché in MT4 e MT5 questo codice porta a risultati diversi (e più logici in MT4)?
Leggi la documentazione
Cosa significa EMPTY_VALUE in MQL4?
Potete dirmi perché la seguente linea (al primo accesso) dà un errore "out of range":
è quello che è, no?
O mi manca qualcosa?
Hai dichiarato un array ma non hai specificato la dimensione dell'array...
Esempio staticoint buf_lup[1000], buf_ldn[20000];
è quello che è, no?
O mi manca qualcosa?
questo è il riempimento, vero?
O mi manca qualcosa?
Dovete impostare la dimensione dell'array prima di riempirlo. (ArrayRezise). Un semplice esempio: