Новая версия платформы MetaTrader 5 build 3660: Улучшения и исправления - страница 16

 
ycomp #:

5.00 build 3661 25 Mar 2023

Maybe it's a bug?

...

Это русский форум, пожалуйста, пишите на этом форуме на русском языке. При необходимости используйте инструмент перевода.

Какой баг?

2023.04.19 15:55:37.101 testq (EURUSD,D1) max - min vs 0: 2.2250738585072014e-308

DBL_MIN — положительное значение больше 0, так что это правильно.

 

Для чего в редакторе при выборе по правой кнопке пункта "Перейти к определению" показывает 2 одинаковых записи?


 

Сделайте, пожалуйста, возможность работы с прокси серверами через терминал (поддержка SOCKS5). Требуется смена прокси через MQL.

Прокси это гуманно по отношению к сайтам - ведь в наше время приходиться искать и обрабатывать много информации.

 
Aleksey Vyazmikin #:

Сделайте, пожалуйста, возможность работы с прокси серверами через терминал (поддержка SOCKS5). Требуется смена прокси через MQL.

Прокси это гуманно по отношению к сайтам - ведь в наше время приходиться искать и обрабатывать много информации.

HTTP/SOCK4/SOCK5 прокси являются штатными настройками наших терминалов больше 20 лет:


 
Renat Fatkhullin #:

HTTP/SOCK4/SOCK5 прокси являются штатными настройками наших терминалов больше 20 лет:


Вот чудеса - смотрел - смотрел и не видел - спасибо!

А как то кодом настройки возможно менять? Может кто знает?

 
Aleksey Vyazmikin #:

Вот чудеса - смотрел - смотрел и не видел - спасибо!

А как то кодом настройки возможно менять? Может кто знает?

winapi

 
npats2007 #:

winapi

Это понятно, что в теории должно работать, но я про конкретную реализацию.

 

Вот такие чудеса:

MqlParam parse(const string s)
{
   MqlParam p = {};
   bool isString = false;

   ResetLastError();
   p.double_value = StringToDouble(s);
   if(!_LastError)
   {
      p.integer_value = StringToInteger(s); // под отладчиком здесь _LastError = 5040
      if(!_LastError)
      {
         if((double)p.integer_value == p.double_value && StringFind(s, ".") == -1)
         {
            if(StringLen((string)p.integer_value) == StringLen(s))
            {
               p.type = TYPE_LONG;
            }
            else
            {
               isString = true;
            }
         }
         else
         {
            p.type = TYPE_DOUBLE;
         }
         
         if(!isString)
         {
            return p;
         }
      }
   }

   p.string_value = s;
   p.type = TYPE_STRING;
   
   return p;
}


void OnStart()
{
   MqlParam pa[1];
   pa[0] = parse("?");
   ArrayPrint(pa);
}

При запуске под отладчиком получаем ответ (ожидавшийся):

    [type] [integer_value] [double_value] [string_value]
[0]     14               0        0.00000 "?"           

При запуске в релизе получаем другой ответ:

    [type] [integer_value] [double_value] [string_value]
[0]     10               0        0.00000 null          
Должно работать одинаково. Как именно - не знаю, потому что взведение _LastError логично (я на это закладывался, как видно даже StringToDouble должен был бы взвести код на нечисловой строке - разве нет?), но код 5040 какой-то левый и возникает только при вызове StringToInteger.
 
Разве это правильно?
class A {};

A GetA()
{
  A a;
  A b = a; // OK.
  
  return(a); // object of 'class A' cannot be returned, copy constructor 'A::A(const A &)' not found
} 
 
fxsaber # :
Разве это правильно?
Кажется, ошибка.