Fehler, Irrtümer, Fragen - Seite 1437

 
Документация по MQL5: Математические функции / MathIsValidNumber
Документация по MQL5: Математические функции / MathIsValidNumber
  • www.mql5.com
Математические функции / MathIsValidNumber - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Das Verhalten ist anders, weil der Optimierer für MQL5-Code aggressiver ist.
 
Ilyas:
MathIsValidNumber
Danke, das wusste ich nicht.
 
Ilyas:
Das Verhalten ist anders, weil der Optimierer für MQL5-Code aggressiver ist.
Auch MT4 war schlauer und gab eine "integral constant overflow"-Warnung, während MT5 stumm blieb.
 
Ilya Malev:

1. Warum führt dieser Code in MT4 und MT5 zu unterschiedlichen Ergebnissen (und in MT4 zu logischeren)?

Dokumentation lesen

Was bedeutet EMPTY_VALUE in MQL4?

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

Können Sie mir sagen, warum die folgende Zeile (beim ersten Zugriff) einen "out of range"-Fehler erzeugt?

Declare - deklariert, aber wer wird den Puffer buf_ldn[ldn] füllen?
 
Сергей Таболин:

Schauen Sie sich die Werte von pr_open und pr_close an, wenn das erste Mal auf sie zugegriffen wird.
 
Сергей Таболин:

Das ist doch der Lückenfüller, oder?

Oder übersehe ich etwas?

Sie haben ein Array deklariert, aber keine Array-Größe angegeben ...

Statisches Beispielint buf_lup[1000], buf_ldn[20000];

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

Das ist doch der Lückenfüller, oder?

Oder übersehe ich etwas?

Nein, es handelt sich nicht um eine Array-Füllung. Außerdem, wenn ldn = 0; ist, haben Sie durch das Einfügen von 0 in [ ] 0 Elemente im Array deklariert, d.h. es gibt dort nicht einmal ein Element. Lesen Sie den Artikel Arrays in MQL5: Grundlagen der MQL5-Programmierung.
 
Сергей Таболин:

Das ist doch der Lückenfüller, oder?

Oder übersehe ich etwas?

Sie müssen die Größe des Arrays festlegen, bevor Sie es füllen. (ArrayRezise). Ein einfaches Beispiel:

//+------------------------------------------------------------------+
//|                                                         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]);
     }
  }
//+------------------------------------------------------------------+
Dateien:
Test.mq5  2 kb
Grund der Beschwerde: