long a=132;
if(a>-9223372036854775808)
{Print("а прошла проверку на > INT64_MIN");}
else{Print("а НЕ прошла проверку на > INT64_MIN");}
if(a<-9223372036854775808)
{Print("а прошла проверку на < INT64_MIN");}
else{Print("а НЕ прошла проверку на < INT64_MIN");}
if(a!=-9223372036854775808)
{Print("а прошла проверку на != INT64_MIN");}
else{Print("а НЕ прошла проверку на != INT64_MIN");}
Результат
2019.05.1411:49:13.574 check (EURUSD,M5) а НЕ прошла проверку на > INT64_MIN
2019.05.1411:49:13.574 check (EURUSD,M5) а прошла проверку на < INT64_MIN
2019.05.1411:49:13.574 check (EURUSD,M5) а прошла проверку на != INT64_MIN
В последних билдах начала появляться такая ошибка:
2019.05.1413:03:50.526 EURUSD: history data load error
2019.05.1413:03:50.528 EURUSD,M5: history cache allocated for101454 bars and contains 74274 bars from2018.01.0209:00 to 2018.12.3120:552019.05.1413:03:50.528 EURUSD,M5: history begins from2018.01.0209:002019.05.1413:03:50.533 history error 9in undefined function
2019.05.1413:03:50.533 stopped on 0% of testing interval with error '03 EURUSD'
2 часа убил на то, что бы выделить проблему с кода проекта.
#define PRINT(x) Print(#x, ":", string(x))
template<typename DATA_TYPE>
struct Wrapper{
uchar type;
DATA_TYPE data;
template<typename T>
voidoperator=(T value){ // при замене данной строки на "void operator=(T &value){" происходит перезапись оператора присвоения в классе наследнике B (код не компилируется).this.data = value;
};
voidoperator=(DATA_TYPE &_data){
this.data = _data;
};
};
struct A{
string data;
voidoperator=(string value){
data = value;
};
};
struct B : Wrapper<A>{};
voidOnStart(){
B b;
string str_value;
b = str_value;
A a;
b = a;
B b1;
b = b1;
}
Используя приведенный код все работает как и ожидалось, однако если попытаться расширить функционал и добавить поддержку не только простых типов как (string) из класса A, но и структур, то окажется, что шаблонный оператор присвоения из базового класса начинает перекрывает дефолтные операторы присвоения классов наследников, наглухо убивая весь функционал. В качестве workaround-а можно использовать другие операторы, например "operator*=", но это не дело.
Разработчикам: Прошу добавить возможность указания принудительной генерации кода для оператора присвоения (конструктор копирования) по умолчанию:
В ленте нет возможности получить ссылку на запись. Например, чтобы оставить в закладках.
В ленте нет возможности получить ссылку на запись. Например, чтобы оставить в закладках.
https://www.mql5.com/ru/users/fxsaber#profileMessage_6131695 - оно?
Да, но штатного способа получить ссылку не вижу.
Результат
Точно так должно быть ?
Всем привет.
В последних билдах начала появляться такая ошибка:
при чем через раз.
что это может значить?
Результат
Точно так должно быть ?
Результат:
long -9223372036854775808
ulong 9223372036854775808
long -9223372036854775807
int -2147483648
long -2147483648
int -2147483647
А чем принципиально отличаются между собой (1)(2)(3) и (4)(5)(6) соответственно?
Используя приведенный код все работает как и ожидалось,
однако если попытаться расширить функционал и добавить поддержку не только простых типов как (string) из класса A, но и структур,
то окажется, что шаблонный оператор присвоения из базового класса начинает перекрывает дефолтные операторы присвоения классов наследников, наглухо убивая весь функционал.
В качестве workaround-а можно использовать другие операторы, например "operator*=", но это не дело.
Разработчикам:
Прошу добавить возможность указания принудительной генерации кода для оператора присвоения (конструктор копирования) по умолчанию:
Подскажите, если я в советнике использую стандартные индикаторы, например iMA,
как задать им стили рисования, чтобы правильно отображались в окне визуализации?
Подскажите, если я в советнике использую стандартные индикаторы, например iMA,
как задать им стили рисования, чтобы правильно отображались в окне визуализации?
Вот так: Custom Moving Average Input Color