Будущее MQL5 - MQL5+ или даже MQL6 - страница 10

 
хочется увидеть goto,можно значительно упростить код не говоря о читабельности  . ведь по сути цикл с условием тоже преждевременный выход из цикла .
 
dimka8:
хочется увидеть goto,можно значительно упростить код не говоря о читабельности  . ведь по сути цикл с условием тоже преждевременный выход из цикла .
Не, не хочется :)
 
dimka8:
хочется увидеть goto,можно значительно упростить код не говоря о читабельности  . ведь по сути цикл с условием тоже преждевременный выход из цикла .

 

Откуда вы такие беретесь... 

 

Пара слов:

Обязательная кросплатфоменность ....

 
Vasiliy Sokolov:

 

Откуда вы такие беретесь... 

из бейсика
 
Alexander Bereznyak:
из бейсика

еще проще Hiasm.

как тогда на счет классики

for(...) {
for (...) {
while (...) {
if (...) goto stop;
...
}
}
}
printf("error in program\n");
 

Было бы здорово ввести понятие - проект. С освоением ООП все проги стали состоять из нескольких файлов. Неудобно постоянно перед компилированием переходить во вкладку с главным файлом, если правишь подключаемый. Ну или костыль: ввести программируемую кнопочку Компилировать, к которой можно привязывать заглавный файл проекта, с которым работаешь.

EMPTY_VALUE распространить на все типы, которые позволяют это (int, double, string и тд). Мелочь - но ей много где можно пользоваться, и не выдумывать свое.

В тестере сделать инструмент перекрестие, как в МТ.

Наверняка можно придумать вариант с наложением нескольких индикаторов в одном индикаторном окне под графиком цен.


Комфорт строится из мелочей. Разрабы не очень хотят принимать эту мысль, и постоянно чего-то глобалят. Может стоит иногда останавливаться, и уделять время мелким доработкам - комфорту пользователя?))))))

Примеры: Что бы три раза что нибудь померить на графике, нужно три раза ткнуть в кнопочку перекрестие (или нажать комбинацию клавиш). Индикаторные окна в ME под графиком нельзая поменять местами: все индикаторы удалять, потом выставить в нужном порядке. Опять же, что бы выставить несколько индикаторов, нужно несколько раз лезть в меню-подменю-выбрать индикатор. При том, что есть зачем-то инструмент Список индикаторов, который в этом деле ничего не упрощает и нового ничего не дает....  Думаю, каждый не думая выдаст таких примеров в MQL, в ME, в МТ, в тестере.... Ад! Куча мелкой суеты! При всей понятности и просторе пакета, он очень некомфортный, недоработанный.

https://www.mql5.com/ru/docs/basis/types/integer/enumeration - статья в справке о перечислениях. Понятно, что они есть и как выглядят... А как пользоваться и в чем переимущество? Дайте простенький пример, если писать лень словами.

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

Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Перечисления - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

По отладчику:

к примеру есть выражение вида

(int)(MathFloor((ticks_stored-1)/ticks_in_candle)-MathFloor(i/ticks_in_candle));

в текущей реализации отладки результат от вычисления выражения в отладчике будет доступен, если сделать так:

CandleNumber=(int)(MathFloor((ticks_stored-1)/ticks_in_candle)-MathFloor(i/ticks_in_candle));

и добавить переменную  CandleNumber в список наблюдения через Shift+F9

Если я захочу получить результат от вычисления части выражения, к примеру MathFloor(i/ticks_in_candle), то добавляя в наблюдение это выражение

получаю Expression could not be evaluated.

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

Далее хотелось бы видеть в отладке информацию по массивам, к примеру имеется массив UpTick[] и в данный момент доступно наблюдение только за одним элементом массива.

Почему бы не реализовать возможность добавить массив в наблюдение с открытием отдельного, как вариант, модального окна, где доступны все элементы с их индексами:

индекс   тип     значение

0  int   1

1  int   2  и т.д.

Если массив большой и требуется много памяти - ограничивать выборку.

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

 
agvozdezkiy:
EMPTY_VALUE распространить на все типы, которые позволяют это (int, double, string и тд). Мелочь - но ей много где можно пользоваться, и не выдумывать свое.

Дак все уже придумали. Используйте константу NULL.

В тестере сделать инструмент перекрестие, как в МТ.

Примеры: Что бы три раза что нибудь померить на графике, нужно три раза ткнуть в кнопочку перекрестие (или нажать комбинацию клавиш). 

Открою Вам секрет, это уже реализовано. Нужно нажать на колесико мыши и будет перекрестие.

Наверняка можно придумать вариант с наложением нескольких индикаторов в одном индикаторном окне под графиком цен. 

И это давно уже можно делать. Из навигатора перетаскиваете индикатор в окно с уже прикрепленным индикатором.

Индикаторные окна в ME под графиком нельзая поменять местами: все индикаторы удалять, потом выставить в нужном порядке.

ИМХО, не самая нужная вещь.

Опять же, что бы выставить несколько индикаторов, нужно несколько раз лезть в меню-подменю-выбрать индикатор. При том, что есть зачем-то инструмент Список индикаторов, который в этом деле ничего не упрощает и нового ничего не дает....

Есть навигатор, есть избранное, есть шаблоны, есть профили. Все можно настроить. Читайте справку по терминалу, откроете для себя много нового!

https://www.mql5.com/ru/docs/basis/types/integer/enumeration - статья в справке о перечислениях. Понятно, что они есть и как выглядят... А как пользоваться и в чем преимущество? Дайте простенький пример, если писать лень словами.

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

Например, значения перечисления ENUM_DAY_OF_WEEK можно использовать для сравнения со значением day_of_week структуры MqlDateTime. Т.е. можно написать так:

 

        MqlDateTime dt;
        TimeCurrent( dt );
        if( dt.day_of_week == 0 )
           {
            // Что-то делаем в воскресенье
           }

А можно написать иначе: 

        MqlDateTime dt;
        TimeCurrent( dt );
        if( dt.day_of_week == SUNDAY )
           {
            // Что-то делаем в воскресенье
           }

SUNDAY - это именованная константа типа int со значением 0.

Как Вы думаете, как будет понятнее человеку, читающему код?
Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Перечисления - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Kozitsyn:

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

Есть ещё одно бескрайне полезное применение. Напр:

enum ENUM_OPEN_DIRECTION {
     OPEN_BUY,       // только Buy
     OPEN_SELL,      // только Sell
     OPEN_BOTH,      // Buy + Sell
     OPEN_NONE       // не торговать
};
input ENUM_OPEN_DIRECTION  Trade_Direction = OPEN_BOTH;    // Направление торговли:

И пользователь получает выпадающий список с выбором из 4х пунктов того, что вы там прописали в комментах - "только Buy", "только Sell" итд. Оч удобно для перечисления набора индикаторов, таймфреймов, набора условий и др. в окне пользовательских настроек

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