Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1021

Друзья помогите с функцией которая отбирала бы символы открытых позиций и сохраняла бы их в массив. С этим вроде проблем нету, но не могу избавиться от дубликатов, если открыто несколько позиций. 

Alexander Mikryukov:

Друзья помогите с функцией которая отбирала бы символы открытых позиций и сохраняла бы их в массив. С этим вроде проблем нету, но не могу избавиться от дубликатов, если открыто несколько позиций. 

Вот, под mql5 перепишите сами

  for(int i=0; i<OrdersTotal(); i++) {
   if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
    if(OrderType()<2) {
     if(ArraySearchStr(symbols, OrderSymbol())==-1) {
      b++;
       ArrayResize(symbols,b+1);
       symbols[b]=OrderSymbol();
  }}}}

//===============================================================================================
//------------------------------ Функция удаляет копии с массива -------------------------------+
//===============================================================================================
int ArraySearchStr(string& m[], string e) {
  for(int i=0; i<ArraySize(m); i++) {
   if(m[i]==e) return(i);
  }
  return(-1);
 }
Vitaly Muzichenko:

Вот, под mql5 перепишите сами

Спасибо.

[Удален]

Помогите понять непонятное.

      for(int p = 0; p < InpShiftCorrection; p++) prs += pressureDetermination(open[i],close[i],high[i],low[i]);
      prs /= InpShiftCorrection;
      prs *= (high[i] - low[i]);
      Print(NormalizeDouble(prs,Digits()));

Вопрос собственно почему принт с нормализацией выдаёт такую чушь?

2019.03.29 22:53:29.310 2019.01.02 06:01:21   -0.00025
2019.03.29 22:53:29.310 2019.01.02 06:01:21   0.00012
2019.03.29 22:53:29.310 2019.01.02 06:01:21   8.000000000000001e-05
2019.03.29 22:53:29.310 2019.01.02 06:01:21   -9.000000000000001e-05
2019.03.29 22:53:29.310 2019.01.02 06:01:21   -9.000000000000001e-05
2019.03.29 22:53:29.310 2019.01.02 06:01:21   5e-05
2019.03.29 22:53:29.310 2019.01.02 06:01:21   -4e-05
2019.03.29 22:53:29.310 2019.01.02 06:01:21   0.00017
2019.03.29 22:53:29.310 2019.01.02 06:01:21   -8.000000000000001e-05
2019.03.29 22:53:29.310 2019.01.02 06:01:21   -0.00052
2019.03.29 22:53:29.310 2019.01.02 06:01:21   -0.00029
2019.03.29 22:53:29.310 2019.01.02 06:01:21   -0.00114
2019.03.29 22:53:29.310 2019.01.02 06:01:21   0.00123
Сергей Таболин:

Помогите понять непонятное.

Вопрос собственно почему принт с нормализацией выдаёт такую чушь?

Print(NormalizeDouble(prs,Digits()));
Print(DoubleToString(prs,Digits()));
[Удален]
Vitaly Muzichenko:

Попробую. Спасибо. Но до сего дня этот самый принт выдавал исключительно верные значения...

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

Попробую. Спасибо. Но до сего дня этот самый принт выдавал исключительно верные значения...

Он вам льстил) 

[Удален]
Vitaly Muzichenko:

Он вам льстил) 

Видимо, да ))) Получилось.

Извините за copy-paste, но в другой теме не отвечают на вопрос.

Взял код из примера в справочнике https://www.mql5.com/ru/docs/strings/stringadd и вставил его в скрипт. Результат выполнения в MQL4 и MQL5 аналогичный:

       22:42:49.015    Test Script (EURUSD,H1) time for 'c = a + b' = 235 milliseconds, i = 1000000
       22:42:50.187    Test Script (EURUSD,H1) time for 'StringAdd(a,b)' = 1156 milliseconds, i = 1000000
       22:42:50.781    Test Script (EURUSD,H1) time for 'StringConcatenate(c,a,b)' = 594 milliseconds, i = 1000000

Логично, что функции StringAdd() и StringConcatenate() должны выполняться быстрее чем "+", но в действительности обычная склейка опережает их в три раза, а если добавить количество символов и склеек за итерацию, то "+" вырвется вперёд с большим отрывом. Почему так происходит, в чём суть и где логика?

Можно ли использовать 32-битную DLL на MT5?

2019.03.30 16:31:14.984 xxx is not 64-bit version

Какие есть варианты?