Ошибки, баги, вопросы - страница 1933

 
fxsaber:
Отличие больше, чем 1e-15. Более того, Num != Norm. Это разные числа, а не одинаковые.

У меня МТ4 выводит true, true и разницу 0. ;-)

 
Stanislav Korotky:

У меня МТ4 выводит true, true и разницу 0. ;-)

Недокументированный способ отличия MT4/5 образовался. И битность MT5 не при чем.

 
fxsaber:

Недокументированный способ отличия MT4/5 образовался. И битность MT5 не при чем.

Кроме этого в mql4 работает, а в mql5 нет даже документированная операция префиксный инкремент (++i) и декремент (--k)

Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
  • www.mql5.com
Основы языка / Операции и выражения / Арифметические операции - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov:

Кроме этого в mql4 работает, а в mql5 нет даже документированная операция префиксный инкремент (++i) и декремент (--k)

Не увидел проблемы

void OnStart()
{
  int i = 0;
  
  Print(i++ == 0); // true
  Print(++i == 2); // true
}
 
fxsaber:

Недокументированный способ отличия MT4/5 образовался. И битность MT5 не при чем.

Это даже отличие не MT4/5, а задействован ли #property strict.

Включен - будут отличаться, нет - не будут.

Там разные реализации NormalizeDouble!
 

В каких случаях в индикаторах в OnDeinit может передаваться reason=0?

 
fxsaber:
Отличие больше, чем 1e-15. Более того, Num != Norm. Это разные числа, а не одинаковые.

А нулевую степени посчитать? Степени от 0 до -14 - итого 15 разрядов. Степень -15 - это уже 16-й разряд. Я так думаю.

 
Stanislav Korotky:

А нулевую степени посчитать? Степени от 0 до -14 - итого 15 разрядов. Степень -15 - это уже 16-й разряд. Я так думаю.

Посмотрите, на сколько  разрядов отличается DBL_MIN от нуля.

 

Release-версия скрипта почти в 3 раза медленнее Debug-версии.

string  PositionGetString2( const ENUM_POSITION_PROPERTY_STRING  Property_id )
{
  return(PositionGetString(Property_id));
}

#define TOSTRING(A) #A + " = " + (string)(A)

void OnStart()
{
  if (PositionSelect(_Symbol))
  {
    const ulong StartTime = GetMicrosecondCount();
    
    for (int i = 0; i < 1e7; i++)
    {
      PositionGetString2(POSITION_SYMBOL);
      PositionGetString2(POSITION_COMMENT);
    }
    
    Print(TOSTRING(GetMicrosecondCount() - StartTime));
  }
}

Шаги для воспроизведения

  1. Выбрать EURUSD для отладки и открыть его чарт в терминале.
  2. Открыть одну позицию по EURUSD.
  3. Запустить из ME по F5 дебаг версию и посмотреть в логе результат.
  4. Перекомпилировать в ME через F7 - это очень важно, иначе EX5-будет дебажный.
  5. Запустить из терминала полученный Release-скрипт и посмотреть в логе результат.
Результат дебаг-версии

GetMicrosecondCount()-StartTime = 638537


Результат релиз-версии

GetMicrosecondCount()-StartTime = 1746492
 

При импорте тиков в кастомный символ tkc-файлы не читаются.

Причина обращения: