Бета-тестирование MetaTrader 5 началось! - страница 132

 

Вопрос по классу памяти input. "Изменять значение переменной с модификатором input внутри mql5-программы нельзя, такие переменные доступны только для чтения."

А если очень надо. И в большом количестве. Если одна переменная определяет видимость группы объектов, которые сами каждый имеет свою собственную переменную видимости. И таких групп десяток.  Неужели придется плодить десятки клонов переменных? 

Неужели неприкасаемость input  переменных так важна и нужна? Как МТ4 жил без этого?

 
vicondi писал(а) >>

Неужели неприкасаемость input переменных так важна и нужна? Как МТ4 жил без этого?

Изменение входных параметров считается дурным тоном в программировании.

Клоны десятков переменных не нужны. Создайте массив.

 
vicondi >>:

Вопрос по классу памяти input. "Изменять значение переменной с модификатором input внутри mql5-программы нельзя, такие переменные доступны только для чтения."

А если очень надо. И в большом количестве. Если одна переменная определяет видимость группы объектов, которые сами каждый имеет свою собственную переменную видимости. И таких групп десяток. Неужели придется плодить десятки клонов переменных?

Неужели неприкасаемость input переменных так важна и нужна? Как МТ4 жил без этого?

Кто мешает сразу же в ините переприсвоить похожим клонам и делать с ними всё что вздумается?

Честно не пойму

 
vicondi >>:

Вопрос по классу памяти input. "Изменять значение переменной с модификатором input внутри mql5-программы нельзя, такие переменные доступны только для чтения."

А если очень надо. И в большом количестве. Если одна переменная определяет видимость группы объектов, которые сами каждый имеет свою собственную переменную видимости. И таких групп десяток. Неужели придется плодить десятки клонов переменных?

Неужели неприкасаемость input переменных так важна и нужна? Как МТ4 жил без этого?

lea писал(а) >>

Изменение входных параметров считается дурным тоном в программировании.

Клоны десятков переменных не нужны. Создайте массив.

Sorento писал(а) >>

Кто мешает сразу же в ините переприсвоить похожим клонам и делать с ними всё что вздумается?

Честно не пойму

Хочется вот что сказать:

1. Если речь о возможности изменения входных параметров при помощи "клонов", то на мой взгляд это вполне обоснованное решение.

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


2. С точки зрения реализации алгоритма советника или другого кода в котором много входных параметров - Вот это какраз то к чему не стоит стремится, по крайней мере количество входных параметров нужно контролировать в НЕОБХОДИМЫХ границах.

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

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


PS

По идеи наилучшим решением будет в параметрах оставить самое необходимое (то, что трейдер в состоянии проконтролировать).

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

 

Всем спасибо! Сам знаю, что не хорошо трогать входные параметры. А совет Sorento я еще вчера начал реализовывать. Ну очень много переприсваиваний . Одной из причин изменения входных переменных была необходимость скрыть\показать большую группу объектов с помощью перемещения объекта Text, ввиду отсутсвия в МТ4 управляющих  объектов типа Button или CheckBox. Для этого пришлось создать клоны и запоминать в них входные параметры, чтобы вернуть потом начальное состояние. А во входные переменные видимости записывать false. Все прекрасно работает в МТ4. А теперь, если ничего кардинально в духе МТ5 не менять в коде, то количество клонов увеличится вдвое. 

Надо было все-таки не пользоваться поблажками МТ4. 

 
nen писал(а) >>

В Опциях установлено значение, допустим, Max bars in chart: 50 000.

Такое количество баров может быть выведено на чарт. Независимо от таймфрейма.

Выбираем на месячном таймфрейме какой-то бар за 2000 год. Допустим, за февраль 2000 года.

На минутках мы не можем вывести историю за тот период на график.

Но в терминале минутная история за тот период имеется. Все периоды формируются из минуток.

Задача такая. Найти на минутках время бара, у которого максимум будет равен максимуму бара за февраль 2000 года.

Функция CopyHigh не позволяет скопировать в массив минутки за февраль 2000 года. А почему?

Почему не позволяет это сделать? Минутки за тот период в терминале имеются.

=====

Каким образом можно скопировать в массив минутки за февраль 2000 года? без изменения Max bars in chart.

Похоже ответа не будет.

Тогда продолжим.

Ставлю Max bars in chart: Unlimited.

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

-------

2009.12.01 12:44:38 ATL (GBPUSD,M1) SERIES_SYNCRONIZED = 1
2009.12.01 12:44:38 ATL (GBPUSD,M1) SERIES_TERMINAL_FIRSTDATE = 1993.05.12 00:00
2009.12.01 12:44:38 ATL (GBPUSD,M1) SERIES_SERVER_FIRSTDATE = 1993.05.12 00:00
2009.12.01 12:44:38 ATL (GBPUSD,M1) SERIES_FIRSTDATE = 2006.06.28 08:17
2009.12.01 12:44:38 ATL (GBPUSD,M1) SERIES_BARS_COUNT = 1000019
--------

Какая-то недоработка. Если есть минутная история, то к этой миниутной истории должен быть программный доступ. Ко всей истории.

Сейчас мы не имеем доступ к этой истории.

 
nen >>:

Похоже ответа не будет.

Тогда продолжим.

Ставлю Max bars in chart: Unlimited.

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

-------

2009.12.01 12:44:38 ATL (GBPUSD,M1) SERIES_SYNCRONIZED = 1
2009.12.01 12:44:38 ATL (GBPUSD,M1) SERIES_TERMINAL_FIRSTDATE = 1993.05.12 00:00
2009.12.01 12:44:38 ATL (GBPUSD,M1) SERIES_SERVER_FIRSTDATE = 1993.05.12 00:00
2009.12.01 12:44:38 ATL (GBPUSD,M1) SERIES_FIRSTDATE = 2006.06.28 08:17
2009.12.01 12:44:38 ATL (GBPUSD,M1) SERIES_BARS_COUNT = 1000019
--------

Какая-то недоработка. Если есть минутная история, то к этой миниутной истории должен быть программный доступ. Ко всей истории.

Сейчас мы не имеем доступ к этой истории.

1. Параметр "Max bars in charts" фактически указывает какое количество баров по каждому из периодов будет доступно для чартов и экспертов. Эти данные будут кэшироваться в памяти и находиться в "боеготовом" состоянии для последующих обращений. Держать постоянно все доступные минутные данные по всем символам в готовом для обращения виде нельзя - у терминала просто кончится память.
Для регулирования потребляемой памяти и используется параметр "Max bars in charts"
Если необходимо обращаться к миллиону минуток из эксперта нужно выставить значение "Max bars in charts" в 1000000.


2. Изменение параметра "Max bars in charts" с 1M до Unlimited не означает, что терминал автоматически подкачает все доступные данные с сервера. На терминале уже был закачан 1М минуток
то так и останется 1М минуток. Для того чтобы получить остальные данные их нужно подкачать прокручивая чарт (если нужны большие объёмы минуток то проще это сделать на месяцовках).

 
Alexander писал(а) >>

1. Параметр "Max bars in charts" фактически указывает какое количество баров по каждому из периодов будет доступно для чартов и экспертов. Эти данные будут кэшироваться в памяти и находиться в "боеготовом" состоянии для последующих обращений. Держать постоянно все доступные минутные данные по всем символам в готовом для обращения виде нельзя - у терминала просто кончится память.
Для регулирования потребляемой памяти и используется параметр "Max bars in charts"
Если необходимо обращаться к миллиону минуток из эксперта нужно выставить значение "Max bars in charts" в 1000000.

2. Изменение параметра "Max bars in charts" с 1M до Unlimited не означает, что терминал автоматически подкачает все доступные данные с сервера. На терминале уже был закачан 1М минуток
то так и останется 1М минуток. Для того чтобы получить остальные данные их нужно подкачать прокручивая чарт (если нужны большие объёмы минуток то проще это сделать на месяцовках).

Обратите внимание на строчку:

2009.12.01 12:44:38 ATL (GBPUSD,M1) SERIES_TERMINAL_FIRSTDATE = 1993.05.12 00:00
==========

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

Минутки, если они закачаны, вторично будут закачиваться?

Нестыковка какая-то получается.

 

Каким образом получать доступ к минуткам в 1993 году?

Для эксперта это необходимо.

 
nen >>:

Каким образом получать доступ к минуткам в 1993 году?

Для эксперта это необходимо.

Уточню :

Правила работы с M1 аналогично работе с другими периодами.

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

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