Новая версия платформы MetaTrader 5 build 2940: Перенос витрин MQL5-сервисов в рабочую область и обновление дизайна - страница 10

 

Дождался, b2950.

При компиляции советника получил вот это:

е1

Вот это место в коде:

е2

А вот из справки, где видно что никаких ошибок нет - что тут 0, что там 0. Тогда на что компилятор ругается?

е3

 
andre:

Дождался, b2950.

При компиляции советника получил вот это:

Вот это место в коде:

А вот из справки, где видно что никаких ошибок нет - что тут 0, что там 0. Тогда на что компилятор ругается?


Нужно теперь делать

... ={};


Первоисточник:

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

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

Ilyas, 2021.05.28 18:18

Мы расширяем инициализирующие последовательности "{ ... }", в ближайшем билде будет разрешено использовать любое выражение, а не только константное.

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

Анализ существующих кодов показал, что часто неправильно используется последовательность из одного нуля - "{0}"

Например так:

MqlTradeRequest request={0};


Такая запись означает, выставить значение ноль для первого поля структуры и обнулить остальные поля.

Для приведённой выше строки кода, по новым правилам, будет выдана ошибка, т.к. первое поле имеет тип ENUM_TRADE_REQUEST_ACTIONS, перечисление, в котором отсутствует значение "0"

cannot convert 0 to enum 'ENUM_TRADE_REQUEST_ACTIONS'


Правильно будет так:

MqlTradeRequest request={};

 
Vladimir Karputov:

Нужно теперь делать


Первоисточник:


Спасибо, а то я по привычке первым делом в справку полез.
 

b2950

При установке графика W1 или MN, которые при накидывании начинают подгружать котировки, невозможно колёсиком мышки правильно отмотать график. Он дёргается туда-сюда и не показывает подгруженные свечи.


По окну маркета, это очень крутое нововведение.


У меня претензия к тестеру! Все билды и версии терминала. Почему скорость по все тикам/OHLC такая неравномерная? Предпоследняя скорость и последняя отличаются в десятки раз!

 

Столкнулся ещё с таким моментом.

Есть индикатор уровней на МТ5. Вижу, что цена на уровне. Захожу в настройки, включаю алерт.

Конечно, после применения настроек, алерт срабатывает, но само окошко с оповещениями не закрывается мышкой. Остаётся только нажать кнопку Esc, потом всё штатно.

 

Господа разработчики!

Билд 2940. Не работает режим оптимизации "Все символы, выбранные в окне 'Обзор рынка'" для инструментов с количеством символов в названии 1 или 2. Запускаю это режим на американских CFD - все инструменты, начиная с трех букв в названии, проходят нормально. Далее терминал непонятно чем занимается, время тикает, но ничего не прогоняется. В журнале только сообщения, что история по символам загружена и Market Watch symbols history synchronized. Выделил отдельно в Обзоре Рынка CFD с 1 и 2 буквами в названии - ни одного прохода:

 

2950.

При поиске в редакторе MetaEditor ищет ТОЛЬКО в советниках:

А как провести поиск в индикаторах и в скриптах?

 
Vladimir Karputov:

2950.

При поиске в редакторе MetaEditor ищет ТОЛЬКО в советниках:

А как провести поиск в индикаторах и в скриптах?

CTRL+SHIFT+F


 

b2940

После окончания демо периода, и отключения от брокерского сервера,
перестают отображаться вновь созданные кастомные символы, через интерфейс Символы->Создать символ.
История в history для создания имеется, а новый кастомный символ не отображается. Постоянно отображается тёмное окно с Ожиданием обновления.
Почему невозможно создавать новые кастомные символы, после отключения от брокерского сервера?
Разве коннект к серверу это обязательное условие, при построении кастомного символа по имеющейся истории?
Прошу разрешить построение кастомных символов по имеющейся истории в офлайн режиме.
Это необходимо для разработок на исторических данных, без подключения к серверу.

Добавлено.
Подключился к серверу, подкачал историю, создал новый кастомный символ, разрешил отрицательные цены, перезагрузил терминал.

np1

Запрашиваю M1 историю кастома для проверки

np2

От D1 и выше, график не строится.
Но периоды ниже D1 все построились, но не на макс. разрешенных баров, а где то на 3 месяца.
Исходной истории hcc полно, до 2000 года.

Добавлено.
Кастом c описанной ошибкой выше, строится по формуле разницы "symb" - "symb"
Отношение "symb" / "symb" строит нормально, но не на всю историю hcc. 

 

Как индикатор может самоуничтожиться?

1) ErxpertRemove () в коде индикатора этого не делает, в журнале всего одна строчка :(

2) IsStopped () как условие в большом цикле по всем неизвестным барам (for (i = limit; i> = 0 || IsStopped (); iB--)) также не удаляет индикатор, хотя в документации сказано: "если mql5-программе была дана команда завершить свою работу. В этом случае вы должны немедленно завершить программу, иначе программа будет завершена принудительно извне через 3 секунды".

3) Итак, я написал искусственный сбой, который компилятор не распознает. Затем индикатор больше не отображается, но когда он перекомпилируется после удаления условия из сбоя, он снова появляется, как если бы он просто не рисовался раньше?

Так как же индикатор может убрать себя с графика?

How can an indicator remove itself?

1) ErxpertRemove() in the indicator's code doesn't do it, there is only one line in the journal :(

2) IsStopped() as condition in the big loop over all unknown bars (for(i=limit; i>=0 || IsStopped(); iB--)) doesn't delete the indicator either, although the documentation says: "if a mql5 program has been commanded to complete its operation. In this case, you must immediately terminate the program, otherwise the program will be completed forcibly from the outside after 3 seconds."

3) So I wrote an artificial crash that the compiler does not recognize. Then, the indicator is no longer visible, but when it is recompiled after the condition is removed from the crash, it reappears as if it was just not drawn before?

So how can an indicator remove itself from the chart?

My crash code: / Мой аварийный код;

#define crash(str)   { Alert("artificial crash in ",__FILE__," at Line: ",__LINE__," because: ",str," err: ",(string)_LastError);Print(1.0/(sqrt(1)-1));} // to outwit the compiler
Documentation on MQL5: Checkup / IsStopped
Documentation on MQL5: Checkup / IsStopped
  • www.mql5.com
IsStopped - Checkup - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5
Причина обращения: