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

 

printf(), double, научная форма. Количество знаков после запятой могу задать, общую длину числа - могу задать:

double d=12.3456789;
printf("d=%012.4E",d);

Результат: d=001.2346E+01

А можно ли добавить ноликов перед степенью? Чтобы вот так было: d=001.2346E+0001
 
sershi87:
Как я писал выше после обновления терминал стал сильно тормозить и полностью зависать. До обновления таких проблем не было и всё работало отлично. По поводу Дебиана я в курсе и полностью согласен с тем что это очень стабильный дистр. Всё же я считаю что необходимость нативной версии назрела и мы должны её добиваться.

У меня есть предположение, что тормоза и подвисоны происходят из за некорректной синхронизации с сервером истории.
То есть к примеру настройка отображения баров в окне терминала равна 100000, из кода к примеру я запрашиваю 3000 баров
но синхронизация может глюкануть и начнёт синхронизироваться со всей имеющийся  историей на сервере, и выкачивать всю историю с сервера.
Из за этой полной выкачки истории, и виснет терминал, пока не выкачает всю доступную историю сервера.
Если дождаться этой выкачки, то терминал отвисает, и начинает работать.

 
Roman:

У меня есть предположение, что тормоза и подвисоны происходят из за некорректной синхронизации с сервером истории.
То есть к примеру настройка отображения баров в окне терминала равна 100000, из кода к примеру я запрашиваю 3000 баров
но синхронизация может глюкануть и начнёт синхронизироваться со всей имеющийся  историей на сервере, и выкачивать всю историю с сервера.
Из за этой полной выкачки истории, и виснет терминал, пока не выкачает всю доступную историю сервера.
Если дождаться этой выкачки, то терминал отвисает, и начинает работать.

Тормоза начинаются только при открытии стакана. Закрываешь стакан и всё нормально. Но без него работать нельзя.
 

МТ5 (build 2496) что-то ОЧЕНЬ плохо с кастомными чартами, которые рассчитываются по заданным пользователем формуле.
Перманентно грузит CPU - нагрузка на ядро 100%.
Перманентно грузит диск - просто так записывает туда от 3 ГБ и больше данных.
Вешает терминал, если добавить любой индикатор с буфером для отрисовки в основном окне (например, Indicators/Trend/Adaptive Moving Average).


Шаги для воспроизведения:
MetaQuotes-Demo, Hedge счет.
В настройках максимальное количество баров на чарт: 1000

Cоздаем кастомный символ: Ctrl+U ==> Create Custom Symbol:
- Symbol : NZDUSD_AUDUSD
- Formula : NZDUSD-AUDUSD
- Allow negative prices: True

Результат - система начинает отжирать до 3 ГБ на диске.
Если открыть чарт с кастомным символом - то нагрузка на ядро подскочит под 100%.
Если набросить индикатор (например, Indicators/Trend/Adaptive Moving Average) и переключить ТФ - то окно "Data Window" начнет биться в конвульсиях, а терминал через пару секунд перестанет вообще отвечать.


 
UPD. Также в журнал пишется десятки тысяч однообразных записей:
QG      0       18:18:12.209    Synthetic Symbol        NZDUSD_AUDUSD: there is data from 2020.06.19 to 2020.06.19 (4294967295 M1 bars from 1970.01.01 00:00 to 2020.06.19 23:54)
ML      0       18:18:12.209    Synthetic Symbol        NZDUSD_AUDUSD: M1 bars processing finished
LF      0       18:18:12.212    Synthetic Symbol        NZDUSD_AUDUSD: M1 bar 2020.06.19 23:54 updated
GO      0       18:18:12.212    Synthetic Symbol        NZDUSD_AUDUSD: there is data from 2020.06.19 to 2020.06.19 (4294967295 M1 bars from 1970.01.01 00:00 to 2020.06.19 23:54)
CD      0       18:18:12.212    Synthetic Symbol        NZDUSD_AUDUSD: M1 bars processing finished
QN      0       18:18:12.215    Synthetic Symbol        NZDUSD_AUDUSD: M1 bar 2020.06.19 23:54 updated
FG      0       18:18:12.215    Synthetic Symbol        NZDUSD_AUDUSD: there is data from 2020.06.19 to 2020.06.19 (4294967295 M1 bars from 1970.01.01 00:00 to 2020.06.19 23:54)
JL      0       18:18:12.215    Synthetic Symbol        NZDUSD_AUDUSD: M1 bars processing finished
FF      0       18:18:12.218    Synthetic Symbol        NZDUSD_AUDUSD: M1 bar 2020.06.19 23:54 updated
QO      0       18:18:12.218    Synthetic Symbol        NZDUSD_AUDUSD: there is data from 2020.06.19 to 2020.06.19 (4294967295 M1 bars from 1970.01.01 00:00 to 2020.06.19 23:54)
MD      0       18:18:12.218    Synthetic Symbol        NZDUSD_AUDUSD: M1 bars processing finished
LN      0       18:18:12.221    Synthetic Symbol        NZDUSD_AUDUSD: M1 bar 2020.06.19 23:54 updated
GG      0       18:18:12.221    Synthetic Symbol        NZDUSD_AUDUSD: there is data from 2020.06.19 to 2020.06.19 (4294967295 M1 bars from 1970.01.01 00:00 to 2020.06.19 23:54)
CL      0       18:18:12.221    Synthetic Symbol        NZDUSD_AUDUSD: M1 bars processing finished
NF      0       18:18:12.223    Synthetic Symbol        NZDUSD_AUDUSD: M1 bar 2020.06.19 23:54 updated
IO      0       18:18:12.223    Synthetic Symbol        NZDUSD_AUDUSD: there is data from 2020.06.19 to 2020.06.19 (4294967295 M1 bars from 1970.01.01 00:00 to 2020.06.19 23:54)
ED      0       18:18:12.223    Synthetic Symbol        NZDUSD_AUDUSD: M1 bars processing finished
RN      0       18:18:12.227    Synthetic Symbol        NZDUSD_AUDUSD: M1 bar 2020.06.19 23:54 updated

Общий размер лога подбирается к 1 ГБ.


UPD.. Если после всех расчетов закрыть терминал и открыть заново - то все 3-8 ГБ рассчитанных данных успешно удаляются, а расчет начинается заново, при этом используется более скромное количество места - порядка 500 МБ.
Если открыть чарт с кастомным символом после перезапуска терминала - он почему-то оказывается пустым, на М1 всего 3 бара (поведение чем-то напоминает выключенный флаг "Allow negative prices").

 

А куда слать багрепорты, чтобы на них отреагировали разработчики?

Начиная с какого-то релиза сломана компиляция шаблонных классов, вызывающих статические функции. Пример:

Класс Bar компилировался ранее и 64 битным и 32 битным MQL5. Сейчас выдает ошибку. build 2485 05 Jun 2020

class Foo {
public:
    static void Start() {
        Print("Hallo!");
    }
};

template<typename T>
class Bar {
public:
    Bar() {
        T::Start();
    }
};

class Foz {
public:
    Foz() {
    }

    void Start() {
        Print("Hallo!");
    }
};

template<typename T>
class Baz {
public:
    Baz() {
        T t;
        t.Start();                                                                                                                                                                                          
    }
};

void OnStart() {
    Bar<Foo> var;
    Baz<Foz> vaz;
}

template_static_bug.mq5 : information: compiling 'template_static_bug.mq5'
template_static_bug.mq5(12,12) : error 256: 'Start' - undeclared identifier
Result: 1 errors, 0 warning
 
YanGillan:

А куда слать багрепорты, чтобы на них отреагировали разработчики?
Начиная с какого-то релиза сломана компиляция шаблонных классов, вызывающих статические функции. Пример:
Класс Bar компилировался ранее и 64 битным и 32 битным MQL5. Сейчас выдает ошибку. build 2485 05 Jun 2020

Вы будете где-то 5-м пользователем, который жалуется на данный баг в том или ином виде...

 
Sergey Dzyublik:

Вы будете где-то 5-м пользователем, который жалуется на данный баг в том или ином виде...

Да, ну а что делать-то? Я знаю про обходной путь через базовый класс, но это ппц костыль. И патчить весь код сейчас не в тему как-то.

А где можно скачать предыдущие билды? У брокера не нашел, на сайте mt5 тоже нет.

 
YanGillan:

Да, ну а что делать-то? Я знаю про обходной путь через базовый класс, но это ппц костыль. И патчить весь код сейчас не в тему как-то.

А где можно скачать предыдущие билды? У брокера не нашел, на сайте mt5 тоже нет.

 
YanGillan:

Я знаю про обходной путь через базовый класс, но это ппц костыль. И патчить весь код сейчас не в тему как-то.

Вы об этом способе или о каком-то другом?

template<typename T>
class GetClassType{
public:
   class type : public T{}; 
};


class Foo {
public:
    static void Start() {
        Print("Hallo!");
    }
};

template<typename T>
class Bar {
public:
    Bar() {
        GetClassType<T>::type::Start();
    }
};

void OnStart() {
    Bar<Foo> var;
}
Причина обращения: