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

 
Aleksey Vyazmikin:

Всё равно не понимаю - у Вас предикторам требуется большая глубина расчета? У меня вот действительно требуется одному - МАшке на дневках :) Я запуская просто тестирование на год раньше, а торговлю до этой даты можно запретить...

Да - глубина истории нужна больше чем за год. Решение уже нашлось. Теперь тоже буду на 3 года раньше делать запуск и пропускать их.
 
В КБ не проходит код. Выдает такие ошибки
MQL5\Include\fxsaber\BestInterval\Deal.mqh(10,32) : error 239: '::' - syntax error
MQL5\Include\fxsaber\BestInterval\Deal.mqh(10,34) : error 279: 'ToNull' - call non-const method for constant object
MQL5\Include\fxsaber\BestInterval\Deal.mqh(10,34) : error 279: 'ToNull' - call non-const method for constant object
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(202,32) : error 239: '::' - syntax error
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(202,34) : error 351: 'ToNull' - access to non-static member or function
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(214,32) : error 239: '::' - syntax error
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(214,34) : error 351: 'ToNull' - access to non-static member or function
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(225,32) : error 239: '::' - syntax error
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(225,34) : error 351: 'ToNull' - access to non-static member or function
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(416,33) : error 239: '::' - syntax error
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(416,35) : error 351: 'ToNull' - access to non-static member or function
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(435,33) : error 239: '::' - syntax error
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(435,35) : error 351: 'ToNull' - access to non-static member or function

Прошу обновить КБ-компилятор.

 
Vladimir Simakov:
С отпуска вернусь, если не в ломы будет, то изучу вопрос. Но, по логике вещей, баг не в mql, а у Вас в коде.
Кстати, чисто так, а вдруг, у Вас в библиотека с какой кодировкой работает? Вы точно уверены, что utf-16, а вдруг все таки utf-8, как-никак, самая распространенная.

А вот этот момент ещё не проверял, спасибо за наводку. Покопаю в эту сторону.
Библиотека за океанская, классы с которыми работаю, выбраны с буквой W, т.е. Unicode.

Как я понимаю кодировку.

const char *Utf8;
const char *Ansi;
const wchar_t *Utf16;
const wchar_t *Utf32;

utf-16 подразумевает тип wchar_t, библиотечная функция читающая строку, возвращает const wchar_t*
Из этого становиться ясно, что функция возвращает указатель на строку в кодировке utf-16
В свойствах проекта так же выбрана поддержка символов Юникода.
В документации mql пишется, что string работает в формате Unicode.

 

занялся опять оптимизацией, не уверен, что сумею протестировать на скорость выполнения такой код:

void OnStart()
{  datetime m_stoptime = 0;
//1.
   if(m_stoptime < TimeCurrent())
   {
      //расчеты   
   }


//2.
   MqlTick last_tick;
   if(SymbolInfoTick(_Symbol, last_tick))
   {  if(m_stoptime < last_tick.time) 
      {
         //расчеты
      }
   }

}

подозреваю, что вариант №2 будет быстрее работать?

если да, где могут быть "подводные камни" - использую в OnTick() - для поиска в оптимизаторе времени торговли, ищу способы оптимизировать код


ЗЫ: могу вопрос поставить как проверить варианты №1 и №2 по скорости, высока вероятность, что компилятор оптимизирует исполняемый код и тесты будут не корректными - поэтому и спрашиваю

 
Igor Makanu:

могу вопрос поставить как проверить варианты №1 и №2 по скорости, высока вероятность, что компилятор оптимизирует исполняемый код и тесты будут не корректными - поэтому и спрашиваю

Прогнать обычный тест отдельно для 1 и 2 и сравнить время? )

Если время ничтожно мало, прогнать одинаковую оптимизацию с вариантом 1 и вариантом 2.

 
Igor Makanu:

ЗЫ: могу вопрос поставить как проверить варианты №1 и №2 по скорости, высока вероятность, что компилятор оптимизирует исполняемый код и тесты будут не корректными - поэтому и спрашиваю

https://www.mql5.com/ru/code/18804

TesterBenchmark
TesterBenchmark
  • www.mql5.com
При написании разных версий кода может возникнуть необходимость измерения влияния их на общую производительность советника в тестере. Это позволяет не только понять, насколько оптимален написанный код по сравнению с другим, но и дает предпосылки к будущей быстрой оптимизации советника. Такой подход позволяет выявить "бутылочное горлышко" в...
 
Igor Makanu:

занялся опять оптимизацией, не уверен, что сумею протестировать на скорость выполнения такой код:

подозреваю, что вариант №2 будет быстрее работать?

если да, где могут быть "подводные камни" - использую в OnTick() - для поиска в оптимизаторе времени торговли, ищу способы оптимизировать код


ЗЫ: могу вопрос поставить как проверить варианты №1 и №2 по скорости, высока вероятность, что компилятор оптимизирует исполняемый код и тесты будут не корректными - поэтому и спрашиваю

В дебаг режиме проверяй. Там компилятор по идее не должен оптимизировать, хотя ХЗ, как там на самом деле.
 

Вопрос по ArrayResize. Делаю сразу Reserve на несколько гигабайтов. И постепенно увеличиваю Size, который меньше исходного Reserve.

По какой причине TaskManager показывает увеличение потребления памяти во время увеличения Size?

 
fxsaber:

Вопрос по ArrayResize. Делаю сразу Reserve на несколько гигабайтов. И постепенно увеличиваю Size, который меньше исходного Reserve.

По какой причине TaskManager показывает увеличение потребления памяти во время увеличения Size?

Потому что, кроме metatrader, есть еще ОС Windows, которая в конечном итоге и решает, кому из нескольки десятков процессов  (кстати, у каждого из них, по умолчанию, адрессное пространство 4 ГБ), реально (сколько у Вам там?) оперативки выделять.
 
Andrey Khatimlianskii:

Прогнать обычный тест отдельно для 1 и 2 и сравнить время? )

Если время ничтожно мало, прогнать одинаковую оптимизацию с вариантом 1 и вариантом 2.

что то делаю не так, все равно не смог увидеть отличий, результаты плавают при одиночном прогоне в районе 0.1 сек 

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