Обновление платформы MetaTrader 4 билд 625: Журналы в MetaTrader Market и новый MetaViewer - страница 30
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Спасибо за развернутый ответ !
Объясните следующие моменты:
test(const double rez): rez(rez) {
Это просто демонстрация, чтобы сразу понять, что есть что:
В классе test есть поле rez.
У его конструктора есть параметр rez.
По областям видимости в методах класса, если не усложнять, сначала проверяются локальные переменные и параметры, а потом только, если среди них с нужным именем не оказалось, ищутся поля данных с таким именем, затем, если и среди полей нет, то поиск происходит ещё и среди глобальных переменных. Поэтому, может показаться, что в списке инициализации конструкция "rez(rez)" пытается "проинициализировать" параметр конструктора самим же собой. Но это не так.
В списках инициализации имя перед круглыми скобками означает либо поле, либо имя базового класса. Поиск происходит среди имён полей данных этого класса и имён его базовых классов (но не их полей). И - всё. А, вот, уже внутри скобок в списках инициализации и в теле конструктора действуют обычные правила разрешения видимости. Поэтому в списках инициализации можно использовать одноимённые параметры конструктора и поля данных без специальных мер и не бояться коллизии имени поля/базового класса с именем параметра/переменной.
Для глобальных переменных, которые "скрыты" объявлением локальной переменной с таким же именем, есть способ получить к ним доступ с помощью оператора "::".
А для полей данных, которые скрыты локальными переменными метода, тоже есть такой способ, а именно обращение через this с точкой (в MQL4).
Например, если бы вместо инициализации поля rez в списке инициализации выполнялось бы присваивание ему в теле конструктора, то пришлось бы выполнять это так: "this.rez = res;", потому что иначе ("rez = rez;"), это было бы присваивания значения параметра самому себе, то есть бессмысленная, хотя и валидная операция.
Именно эти дополнительные тонкости я сразу и хотел показать в коде, никакой логической нагрузки они не несут.
Очень бы хотелось где то почитать и изучить более детально создание классов и структур. В элементарных примерах..
К сожалению у меня нет глубоких знаний в програмисровании в С++, или иных языках ... Поэтому я даже не знаю с чего начать..
Простые элементы я разобрал на статьях, а эти тонкости : rez(rez) {
и многие другие нигде не описаны... Как быть ? Что читать ??? Где учить ???
Мне очень трудно дать подобный совет. В какой-то мере можно воспользоваться советом angevoyageur, это должно немного помочь, но этого, наверняка, недостаточно.
Из того, что навскидку удалось найти "почитать", неплохо выглядит, например, <Липпман "C++ для начинающих">, эта книга легко ищется.
Обновлённый MQL4 является творческой переработкой (не слишком высокого качества) подмножества С++, поэтому есть и отличия между используемым подмножеством C++ и обновлённым MQL4.
1. Информация о тиковых объемах, получаемая во время тестирования севетника при помощи Volume[] или iVolume(), часто отличается от той, которая используется на ценовом графике и в History Center. Для демонстрации этого можно запустить в тестере стратегий советник Proba.mq4, который я прилагаю к сообщению. Он создает CSV файл с данными OHLC и V. Аналогичный файл можно получить путем экспорта данных из History Center. При сравнении файлов в некоторых строках тиковые объемы отличаются.
2. Digits - это предопределенная переменная и в редакторе MetaEditor должна подсвечиваться как переменная (красным), а подсвечивается как функция (фиолетовым).
3. Цвет фона подсвечиваемых парных скобок невозможно изменить при помощи цветовых настроек Meta Editor. При настройке темного цвета фона, при подсвечивании парных скобок они имеют светло-серый фон, что некрасиво.
4. Предупреждение "possible use of uninitialized variable" возникает в тех случаях, когда переменные хоть и не инициализируются в начале, но и исключено использование переменных, которым не были присвоены значения. Пример:
Появляется предупреждение о том, что переменная (массив) BTicket в функции OrderClose может быть не инициализирована, но так как BNum>0, значит в массив было занесено значение (неужели и в таких случаях нужно хоть чем-то инициализировать переменные, чтобы не было предупреждений?).
Исправили на предупреждение компилятора или расширили длину?
Длину расширили. Принимаем всё, что пропустил компилятор
Пожалуйста, добавьте в Проверки Состояния функцию возвращающую Режим Моделирования - Цены Открытия, Контрольные Точки или Все Тики. Заранее Благодарен!
Нет
Справка.
Функции для работы с техническими индикаторами
Второй столбец таблицы назван "Возвращает хэндл индикатора:".
Подскажите пожалуйста, залезать глубоко в историю за пределы TERMINAL_MAXBARS вообще никаким образом невозможно?
Интересуют как OHLC, так и индикаторы.