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

 
Slava Botalov:

 плохо, придется переходить на другого. есть предложения ?

Все предложения в Google. Здесь любые обсуждения сторонних организаций запрещены.

 
Vladimir Karputov:

Все предложения в Google. Здесь любые обсуждения сторонних организаций запрещены.

понял. СПАСИБО за помощь в моем вопросе

 
x572intraday:

 Дело не в этом. Вопрос в том, где это может пригодиться, особенно не программисту, а трейдеру? Я вот в терминале ни в шкале цен, ни в окне выставления ордера таких чисел не видел, там везде всё приведено к единому виду (где-то пятизнак, где-то ещё как).

Это не вопрос - где это может пригодиться. Это вопрос знания особенностей представления чисел в компьютере, знание того, что не существует для компьютера числа 0.72352, а только число 0.7235200000000001, которое можно распечатать с точностью до 5 знаков, а для этого существует функция DoubleToString.
 

Не получается скопировать данные:

MqlRates mql_rates[];
bar_kol = Bars("EURUSD", _Period);
copy_rates = CopyRates("EURUSD", _Period, bar_kol, 100, mql_rates);

bar_kol становится равным 6105, а copy_rates -1 (ошибка) при попытке скопировать данные от 6105 бара на + 100 баров.

В журнале следующее:

EURUSD: history synchronized from 2007.01.02 to 2020.06.30

EURUSD,H1: history cache allocated for 74955 bars and contains 6105 bars from 2008.01.02 10:00 to 2008.12.31 17:00

EURUSD,H1: history begins from 2008.01.02 10:00

История в кэше на 74955 бара, а 2008-й год содержит те самые 6105 бара. Т.е. максимум копирует бары за один год. Больше чем 6105 баров не получается скопировать. Максимально баров в окне 100000, вся история видна на графике, можно прокрутить, все бары есть, все подгружено. Буквально в массив mql_rates не копируются.

 

Отладка не реальных данных. Зависание на строке, многократное нажатие F11 или F10 не приводит к продолжению отладки. указатель остаётся на одной строке и просто моргает экран.

билд 2715. Вин10, 20H2 сборка 19042.746


вот такое состояние  памяти

 
Ilyas:

Скажите, в чем потенциальная опасность ZeroMemory, что в этой ситуации происходит ошибка?

struct A
{
private:
  int i;
};

void OnStart()
{
  A a[1];
  
  ZeroMemory(a); // not allowed for objects with protected members or inheritance
}
 
Aleksey Mavrin:

Отладка не реальных данных. Зависание на строке, многократное нажатие F11 или F10 не приводит к продолжению отладки. указатель остаётся на одной строке и просто моргает экран.

билд 2715. Вин10, 20H2 сборка 19042.746


вот такое состояние  памяти

Обновитесь до последней беты 2747, пожалуйста.

Мы многое меняем в отладчике.

 
fxsaber:

Скажите, в чем потенциальная опасность ZeroMemory, что в этой ситуации происходит ошибка?

private/protected и const (в большей его части) исключительно для программистов, компилятор лишь помогает придерживаться наложенных на код ограничений

Классический пример:
   Вы используете чужую библиотеку, под капотом тяжёлый код со связями, несанкционированное изменение которых приведёт к сбою, поэтому создатель библиотеки прячет часть объекта в private, чтобы запретить незапланированные изменения.

 
Ilyas:

private/protected и const (в большей его части) исключительно для программистов, компилятор лишь помогает придерживаться наложенных на код ограничений

Классический пример:
   Вы используете чужую библиотеку, под капотом тяжёлый код со связями, несанкционированное изменение которых приведёт к сбою, поэтому создатель библиотеки прячет часть объекта в private, чтобы запретить незапланированные изменения.

Понял, Спасибо за подробное объяснение!

 

Похоже, что поле real_volume в структуре MqlRates хотя и имеет тип long, но не способно хранить значения в диапазоне всех значений long (по документации - 0x7FFFFFFFFFFFFFFF). В частности, если записать в поле 0x40000000000000A8 по факту запишется 0xA8. Речь про кастом-символы.

Где-нибудь указан реальный диапазон допустимых значений? В принципе, причин для того, чтобы не работать как обычному long-у нет - похоже на баг.

PS. по tick_volume наверно такая же проблема

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