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

 
A100:

Не буду писать что можно, а то вдруг опять окажется что просто и pavlick_ снова ...лается

Не понимаю вашего поведения.

 
Комментарии, не относящиеся к этой теме, были перенесены в "Вопросы от начинающих MQL5 MT5 MetaTrader 5".
 
Alexey Navoykov:
Кастинг указателя ничего не даст.  Как его ни кастингуй, а объект - один и тот же.

I stand corrected.

 

Кто пробовал тестировать на реальных тиках, нужно ли создавать 1 минутную историю или она сформируется на основе закачанных тиков(кастомный символ)?

У меня, как-то не идет тест, закачал семь дней тиков, пускаю тест вот что в логах:

2018.12.24 22:04:16.925 Core 1  no data synchronized, 41 bytes read
2018.12.24 22:04:16.925 Core 1  symbol EURUSD_custom synchronization error
2018.12.24 22:04:16.925 Core 1  cannot get history EURUSD_custom,M1
 
forexman77:

Кто пробовал тестировать на реальных тиках, нужно ли создавать 1 минутную историю или она сформируется на основе закачанных тиков(кастомный символ)?

У меня, как-то не идет тест, закачал семь дней тиков, пускаю тест вот что в логах:

Пока нужно.

 

DoubleToString для "одинаковых" вычислений цены могут давать разные результаты. При этом DoubleToString может отличаться от NormalizeDouble.

#property strict

#define PRINT(A) Print(#A + " = " + (string)(A))

void OnStart()
{
  const double Koef =  0.25;
  const int iDelta = 32;
  const double point = 0.00001;
  
  const double high = 1.06736;
  const double low = 1.06676;
  
  const double Avg = (high + low) * 0.5;  
  const double Size = (high - low) * Koef * 0.5;
  
  // Вычисление одной и той же цены разной последовательностью сложения одного и того же количества пипсов
  const double Price1 = Avg - Size - point * iDelta;
  const double Price2 = Avg - (Size + point * iDelta);  
  
  PRINT(DoubleToString(Price1, 5));   // DoubleToString(Price1,5) = 1.06666
  PRINT(DoubleToString(Price2, 5));   // DoubleToString(Price2,5) = 1.06667

  PRINT(NormalizeDouble(Price1, 5)); // NormalizeDouble(Price1,5) = 1.06667
  PRINT(NormalizeDouble(Price2, 5)); // NormalizeDouble(Price1,5) = 1.06667
}
 
fxsaber:

DoubleToString для "одинаковых" вычислений цены могут давать разные результаты. При этом DoubleToString может отличаться от NormalizeDouble.

Описанное поведение не является исключительной особенностью языка MQL5. "Способ представления вещественных чисел в машинной памяти определен стандартом IEEE 754 и не зависит от платформ, операционных систем и языков программирования."
 

Если вдруг кому пригодится на тему template unresolved static variable  по мотивам https://www.mql5.com/ru/forum/1111/page2364#comment_10048274

Проблема решается реализацией метода сразу в месте объявления. Не очень красиво, зато работает.

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2018.12.28
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 
Ilya Malev:

Если вдруг кому пригодится на тему template unresolved static variable  по мотивам https://www.mql5.com/ru/forum/1111/page2364#comment_10048274

Проблема решается реализацией метода сразу в месте объявления. Не очень красиво, зато работает.

У вас там лишнее слово static указано. За пределами класса оно не употребляется

 
Alexey Navoykov:

У вас там лишнее слово static указано. За пределами класса оно не употребляется

(устало) если бы в этом была проблема, то вылезла бы ошибка "'k' - redefinition; different type modifiers", но на скрине её нет. Значит компилятору все равно и дело не в этом.


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