Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Дак все уже придумали. Используйте константу NULL.
Открою Вам секрет, это уже реализовано. Нужно нажать на колесико мыши и будет перекрестие.
И это давно уже можно делать. Из навигатора перетаскиваете индикатор в окно с уже прикрепленным индикатором.
ИМХО, не самая нужная вещь.
Есть навигатор, есть избранное, есть шаблоны, есть профили. Все можно настроить. Читайте справку по терминалу, откроете для себя много нового!
Перечисления используются для того, чтобы сделать код более читаемым, чтобы убрать из него константы, а вместо них поставить знакомые человеку сущности.
Например, значения перечисления ENUM_DAY_OF_WEEK можно использовать для сравнения со значением day_of_week структуры MqlDateTime. Т.е. можно написать так:
А можно написать иначе:
SUNDAY - это именованная константа типа int со значением 0.
Прикольно! Спасибо за навигатор! Не уделял ему должного внимания. Обычно выключаю его, что б место не занимал. Справку, пусть мельком, но читал. И о перетаскивании индюков в окно графиков и друг на друга там нет ничего. Хотя, можно было бы и догадаться, сделать попытку....)))
Спасибо за объяснение сути перечислений! Но с ними я разобрался быстро, благо MQL это в основном калька с C++, и доков на него масса. А вот куча опечаток в справке и неполные статьи - это не хорошо.
Итог. При грамотно написанной справке, кучу дурацких вопросов от чайников на форуме можно избежать!
По части NULL это ноль - он используется часто. А вот максимальные значения переменных крайне редко, практически никогда. Например переменная хранит три состояния после анализа индикаторов: КУПИТЬ, ПРОДАТЬ или НИЧЕГО. Если использовать готовые константы POSITION_TYPE_BUY, POSITION_TYPE_SELL, то одна из них ноль. Уверен, что EMPTY_VALUE будет популярнее NULL, если ее обобщить на все типы.))
Есть ещё одно бескрайне полезное применение. Напр:
И пользователь получает выпадающий список с выбором из 4х пунктов того, что вы там прописали в комментах - "только Buy", "только Sell" итд. Оч удобно для перечисления набора индикаторов, таймфреймов, набора условий и др. в окне пользовательских настроек
По части NULL это ноль, а он используется часто. Например переменная хранит три состояния после анализа индикаторов: КУПИТЬ, ПРОДАТЬ или НИЧЕГО. Если использовать готовые константы POSITION_TYPE_BUY, POSITION_TYPE_SELL, то одна из них ноль.
Да не вопрос, можно сделать так:
И подставляйте куда хотите.
Да не вопрос, можно сделать так:
И подставляйте куда хотите.
Все это понятно. Я не об этом.
Тогда поясните о чем Вы? О единой константе под все предопределенные типы данных? Вряд ли такое реализуют.
К сожалению, полезность и важность такого предупреждения понимают только умудренные опытом программисты.
Ну а всем остальным рекомендую радоваться такому уровню помощи компилятора и исправлять свои ошибки. Это реальные места потенциальных ошибок и именно начинающим разработчикам это критически важно для обучения.
Несколько лет назад на форуме уже поднимали тему "чисто виртуальных методов".
Т.е. в концепции с++, виртуальных методов без тела, которые должны быть ОБЯЗАТЕЛЬНО переопределены в потомках:
К тому же, класс содержащий такие методы автоматически становится абстрактным. Компилятор это тоже сам отслеживает. (Ну это чтобы совсем придерживаться стандартов, хотя можно спрятать конструктор в защищенную область видимости)
Сейчас поведения "чисто виртуальных методов" сильно не хватает. Без такого функционала нельзя нормально подготовить библиотеку или фреймворк чтобы отдать его на сторону: создаешь свой класс-потомок (который не просто так, а встраивается как шестеренка в другие классы) и будь добр выполнить весь интерфейс. Сейчас же, унаследовал, не вписал реализацию метода, компилятор проглотил, нифига не работает. Копайся в исходниках родительского класса?
Понятие интерфейса одно из основополагающих в ООП. Поэтому очень бы хотелось реализации такой штуки не в MQL6, а в 5-ке
Кстати, в документации по виртуальным функциям, ошибка -
Пример:
Виртуальная функция Func1 не имеет исполняемого тела (и даже значение не возвращает), но компилируется без ошибок.
Несколько лет назад на форуме уже поднимали тему "чисто виртуальных методов".
Т.е. в концепции с++, виртуальных методов без тела, которые должны быть ОБЯЗАТЕЛЬНО переопределены в потомках:
К тому же, класс содержащий такие методы автоматически становится абстрактным. Компилятор это тоже сам отслеживает. (Ну это чтобы совсем придерживаться стандартов, хотя можно спрятать конструктор в защищенную область видимости)
Сейчас поведения "чисто виртуальных методов" сильно не хватает. Без такого функционала нельзя нормально подготовить библиотеку или фреймворк чтобы отдать его на сторону: создаешь свой класс-потомок (который не просто так, а встраивается как шестеренка в другие классы) и будь добр выполнить весь интерфейс. Сейчас же, унаследовал, не вписал реализацию метода, компилятор проглотил, нифига не работает. Копайся в исходниках родительского класса?
Понятие интерфейса одно из основополагающих в ООП. Поэтому очень бы хотелось реализации такой штуки не в MQL6, а в 5-ке
Кстати, в документации по виртуальным функциям, ошибка -
Пример:
Виртуальная функция Func1 не имеет исполняемого тела (и даже значение не возвращает), но компилируется без ошибок.
1. Чисто виртуальные (pure virtual) функции будут добавлены в ближайшее время
2. А где в Вашем примере вызов Func1? Нет вызова - нет и контроля наличия тела.
1. Чисто виртуальные (pure virtual) функции будут добавлены в ближайшее время
2. А где в Вашем примере вызов Func1? Нет вызова - нет и контроля наличия тела.
VS 2015 сказала следующее
Severity Code Description Project File Line Suppression State
Error LNK2001 unresolved external symbol "public: virtual int __thiscall Base::Func1(void)" (?Func1@Base@@UAEHXZ) TestCPPCode C:\MyP\AvForex\trunk\TestCPPCode\TestCPPCode.obj 1
Error LNK1120 1 unresolved externals TestCPPCode C:\MyP\AvForex\trunk\MQL4FilesForFormatting2015\Debug\TestCPPCode.exe 1
VS 2015 сказала следующее
Severity Code Description Project File Line Suppression State
Error LNK2001 unresolved external symbol "public: virtual int __thiscall Base::Func1(void)" (?Func1@Base@@UAEHXZ) TestCPPCode C:\MyP\AvForex\trunk\TestCPPCode\TestCPPCode.obj 1
Error LNK1120 1 unresolved externals TestCPPCode C:\MyP\AvForex\trunk\MQL4FilesForFormatting2015\Debug\TestCPPCode.exe 1