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

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

fxsaber, 2016.07.22 15:39

Работаю в тестере в оффлайне. Как сделать, чтобы лог не засорялся сотнями тысяч записей?
2016.07.21 07:48:41.578 MQL5.community  authorization failed

Актуально. Вкладка Настройки -> Сообщество не заполнена.
 
Добавьте, пожалуйста, переход на определение соответствующих операторов при нажатии ALT+G.
 
Почему нет определенных по-умолчанию операторов "==" и "!=" для структур?
struct A { int i; };

int OnStart()
{
  A a, b;
  
  return(a == b); // '==' - illegal operation use
}
 
Почему нельзя делать return void-функции? Такая дискриминация проносит иногда неудобства
double Double() { return(0); }
int Int() { return(0); }
void Void() {}

#define MACROS(NAME,T) T New##NAME() { return(NAME()); }

MACROS(Double, double)
MACROS(Int, int)
MACROS(Void, void) // 'return' - 'void' function returns a value
 
Почему допускается static, объявленный в подтеле тела функции?
void OnStart()
{
  if (true)
    static int i = 0; // почему допускается static, объявленный в подтеле тела функции?
}
Тело (подтело) - мой термин. Не знаю, как правильно. По смыслу должно быть понятно.

 
Рационально ли (с точки зрения проивзодительности кода) в методах/функциях все внутренние (в основном теле - не в подтелах) переменные объявлять, как static?

Например, у меня есть много объектов одного класса. У всех у них я вызываю один и тот же метод. Будет ли выполняться такой массовый вызов быстрее (оптимальнее код), если все внутренние переменные соответствующего метода сделать static?
 
fxsaber:

Никакого противоречия

Это утверждение верно. Истинно и следующее утверждение

Вы уверены?

Разность ... будет равна нулю

и при этом

нормализованная разность не будет равна нулю.

Как вы это себе представляете?  Если первое равно, то второе и подавно будет равно.
 
Vasiliy Sokolov:

Объясните пожалуйста следующее поведение:

 

Это стабильно и в любой момент времени или на первом тике запущенного индикатора?

В окне вотча не хватает значения _LastError

 
Alexey Navoykov:

Вы уверены?

и при этомКак вы это себе представляете?  Если первое равно, то второе и подавно будет равно.
Пример для обеих платформ
// MQL4&5-code

#ifdef __MQL5__
  #define show_inputs script_show_inputs
#endif

#property show_inputs
#property strict

sinput double Price1 = 1.234566;
sinput double Price2 = 1.234574;

void NormToConsole( const double Price, const int digits, const string Str )
{
  Print("NormalizeDouble(" + Str + "(=" + DoubleToString(Price, digits + 1) +
        "), " + (string)digits + ") = " + DoubleToString(NormalizeDouble(Price, digits), digits));
}

#define NORM2CONSOLE(PRICE) NormToConsole(PRICE, 5, #PRICE);

void OnStart()
{  
  NORM2CONSOLE(Price1);
  NORM2CONSOLE(Price2);
  NORM2CONSOLE(Price2 - Price1);    
}
Результат
NormalizeDouble(Price1(=1.234566), 5) = 1.23457
NormalizeDouble(Price2(=1.234574), 5) = 1.23457
NormalizeDouble(Price2-Price1(=0.000008), 5) = 0.00001
 

Ошибка при компиляции

void f( int& i ){ Print( i ); }
void OnStart()
{
        int a, b;
        f( a = 5 ); //error: '=' - parameter passed as reference, variable expected
        f( b = a ); //error: '=' - parameter passed as reference, variable expected
}