Особенности языка mql5, тонкости и приёмы работы - страница 286

 
Stanislav Korotky #:

Это особенность тестера в целом, а не мат.режима - оптимизируемая программа загружается агентом однократно в целях эффективности, насколько я знаю.

Но данные приходится этой программе подгружать на каждом проходе.

 
fxsaber #:

Но данные приходится этой программе подгружать на каждом проходе.

Вот предполагаю, что описанный пустой (точнее, "мусорный", т.к. ничем не инициализируется) глобальный массив распределяется только 1 раз - во время загрузки перед первым проходом. Речь же шла о том, что вроде как тратится лишнее время на перевыделение памяти в случае динамического массива, а тут таких повторяющихся затрат нет.

 

Привет всем, я здесь совсем недавно.

У меня возникли проблемы с использованием шаблонов при написании тела функции вне класса функции. Я уже искал в документации, но не нашел ничего, связанного с этим.

Компилируя этот код, я получаю следующую ошибку: " функция 'Test::test' уже определена и имеет другой тип возврата".

template<typename any>
struct Optional {
    any value;
};

class Test {
public: 

    template<typename any>
    Optional<any>    test();

};

template<typename any>
Optional<any> Test::test() {
    return Optional<any>();


Но если я напишу тело функции внутри класса, то не получу никакой ошибки:

template<typename any>
struct Optional {
    any value;
};

class Test {
public: 

    template<typename any>
    Optional<any> test() {
        return Optional<any>();
    }

};

Может ли кто-нибудь помочь мне понять, как решить эту проблему? (Я не хочу помечать весь класс как шаблон)



 
Paolo Besana #:

Компилируя этот код, я получаю следующую ошибку: " функция 'Test::test' уже определена и имеет другой тип возврата".

Это баг MQL5, в MQL4 с этим все в порядке. Пишите баг-репорт.
 
Похоже на баг. По крайней мере в С++ такое нормально компилируется. Попытайтесь написать вот в эту ветку.
Новая версия платформы MetaTrader 5 build 4755: общие улучшения - После обновления платформы MetaTrader 5 мы исправили ошибку в расчете тройного свопа, происшедшую при некоторых сочетаниях условий тестирования.
Новая версия платформы MetaTrader 5 build 4755: общие улучшения - После обновления платформы MetaTrader 5 мы исправили ошибку в расчете тройного свопа, происшедшую при некоторых сочетаниях условий тестирования.
  • 2024.12.13
  • MetaQuotes
  • www.mql5.com
Радиус примагничивания курсора мыши при выделении графических объектов. Надо просто добавить установочные файлы в исключения этого антивирусника и Некоторые проблемы с отрисовкой и срабатыванием контролов тестера. Зависает Play видно по кликам которые сопровождаются желтым кружком. Ползунок пропадает и вместо него выводится Tooltip контрола
 
Andrei Iakovlev #:

Когда Х равна 0 или 1, как быстро и элегантно сделать её равной 1 или 0 соответственно?

X = 1 - X;
X = !X;
X ^= 1;
 
fxsaber #:

Спасибо))

 
Разницы между ними нет, эти тривиальные выражения выполняются за < 1 наносекунды.

Используйте то, которое делает ваш код понятным.
Я бы выбрал условное.
 
Andrei Iakovlev #:

Спасибо))

Другой вариант

switch(X)
{
   case 0: 
     X=1;     
     break;
   case 1: 
     X=0;     
     break;
   default:
     break;
}
 
Roman #:

Другой вариант

 ещё один

x=(x+1)%2;