Выпущена бета-версия MetaTrader 4 Build 529 с новым компилятором - страница 37

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

Я несколько раз прочитал ваши вопросы и никак их не понял. Мы тут обсуждаем конкретику.

С компилированием проблем нет. С работоспособностью есть, и как я понимаю, это связано с примесью логики MQL5 к MQL4. Но, обсуждаемые здесь проблемы на все случаи жизни не напасешься. Все это - частный случай. Правила нужны. Если бы вы опубликовали предварительное руководство или хотя бы анонс перенесенных возможностей и правил MQL5 в MQL4, то это помогло бы в понимании возникающих проблем не только нам, но и вам. Да и представьте, накопиться здесь страниц 500 или по более. Как это перечитывать?

 
ForexMoneyMaker:

С компилированием проблем нет. С работоспособностью есть, и как я понимаю, это связано с примесью логики MQL5 к MQL4. Но, обсуждаемые здесь проблемы на все случаи жизни не напасешься. Все это - частный случай. Правила нужны. Если бы вы опубликовали предварительное руководство или хотя бы анонс перенесенных возможностей и правил MQL5 в MQL4, то это помогло бы в понимании возникающих проблем не только нам, но и вам. Да и представьте, накопиться здесь страниц 500 или по более. Как это перечитывать?

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

МТ4 билд 536, МЕ билд 872.

В индикаторе для отдельного окна используется входной параметр: extern string Currency_Name = "EURUSD";

Если индикатор запускается без изменения входного параметра, то индикатор отрисовывается и работает без ошибок. Но стоит после первого запуска заменить фин.инструмент на любой другой, например поставить "GBPUSD", индикатор не воспринимает нового имени фин.инструмента. В Short_Name индикатора остается прежнее наименование, но при этом индикатор не отрисовывается вовсе (пустое поле). Если поменять имя фин.инструмента при первой загрузке, то индикатор отрисуется по исходному имени, прописанному программой.

Что касается изменения числовых значений исходных данных индикатора, то они меняются в любых случаях и индикатор отрисовывается без ошибок.

 
Renat:

Иметь сотни глобальных переменных в программе - это никуда не годится.

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

Возможно и не годится. Но я там же написал, почему это. Реализовать задуманное по другому было невозможно в МТ4. С графикой по другому не получалось. Только через внешние переменные можно задать стиль графических элементов. И если различных графических элементов много, то и внешних переменных получается много. Кроме стиля есть еще огромное количество свойств графических элементов, которые также можно менять ТОЛЬКО ЧЕРЕЗ ВНЕШНИЕ ПЕРЕМЕННЫЕ. В ensign с графикой отлично. А вот в МТ4 - сплошные сложности. Поэтому и сотни внешних переменных. Как будет с новой версией МТ4 еще не известно. Посмотрим.
 
nen:
Возможно и не годится. Но я там же написал, почему это. Реализовать задуманное по другому было невозможно в МТ4. С графикой по другому не получалось. Только через внешние переменные можно задать стиль графических элементов. И если различных графических элементов много, то и внешних переменных получается много. Кроме стиля есть еще огромное количество свойств графических элементов, которые также можно менять ТОЛЬКО ЧЕРЕЗ ВНЕШНИЕ ПЕРЕМЕННЫЕ. В ensign с графикой отлично. А вот в МТ4 - сплошные сложности. Поэтому и сотни внешних переменных. Как будет с новой версией МТ4 еще не известно. Посмотрим.

Так разговор об переменных, а не о графике. Кроме того, с графикой отлично в МТ5 - можно сделать все что угодно вплоть до компьютерных игр. Мт4 тоже сейчас подтянется.

Как вы в какой-либо программе можете передать сотню параметров, которые пользователь должен сам в любой момент поменять? Только таблицей входных параметров. Вне зависимости от типа программы.

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

 
nen:

Если в индикаторе несколько сотен внешних переменных, а при установке необходимо изменить несколько десятков, то...

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

Не вдаваясь в невозможность избавиться от 100 параметров...

Чтоб не вспоминать, что уже менялось, есть кнопка "Сброс".

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

 

Ренат, Стринго, Юникод останется насовсем?

 
input datetime  Date_From = D'08.10.2013';      // Начало периода
input datetime  Date_To = D'08.11.2013';        // Окончание периода
input bool      Column_Headers = true;          // Создавать заголовки колонок?

Это скрипт, при запуске в поле Date_From всегда стоит текущее локальное дата/время, в поле Date_To - всё нормально. Поменял порядок настроек - если переменная типа datetime не первая в списке, этого дефекта нет

---

В справке PRICE_CLOSE имеет тип ENUM_APPLIED_PRICE, но компилятор не в курсе - 'ENUM_APPLIED_PRICE' - declaration without type. Будет исправляться справка или компилятор?

---

А вообще за этот редактор/компилятор - спасибо!

 

Вношу изменения в уже скомпилированный индикатор, который находится на графике валютной пары. Компилирую его заново. Для того, чтобы изменения вступили в силу необходимо перезапустить полностью терминал. Удаление индикатора с графика и новый его запуск не помогают, смена таймфрейма не помогает. Помогает увидеть внесённые изменения только перезапуск самого терминала.

Исправьте пожалуйста.

 
ObjectSetInteger(0,"Name",OBJPROP_CORNER,CORNER_RIGHT_LOWER);
ObjectSetInteger(0,"Name",OBJPROP_ANCHOR,ANCHOR_RIGHT_LOWER);

Не определяются CORNER_RIGHT_LOWER и ANCHOR_RIGHT_LOWER

Mqh-файл, в логах ошибка "undeclared identifier"


StringConcatenate как-то странно работает

Так работает

StringConcatenate("Text 1 ","Text 2");
StringConcatenate("Text 1 ",10);
StringConcatenate(10," Text 2");
StringConcatenate(10,11);
StringConcatenate("Copyright ",CharToString(169));

А так нет (отображается только "©")

StringConcatenate(CharToString(169)," Copyright");




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