Выпущена бета-версия MetaTrader 4 Build 555 с обновленным языком MQL4 и Маркетом приложений - страница 2

 
Patrol:

Но теперь другой вопрос (для меня гораздо более важный): Можно ли как-то программно определить путь к папке данных, если известна папка установки терминала?


Да, пока ориентируйтесь на этот пример из документации MQL5 https://www.mql5.com/ru/docs/files

Из соображений безопасности в языке MQL5 строго контролируется работа с файлами. Файлы, с которыми проводятся файловые операции средствами языка MQL5, не могут находиться за пределами файловой "песочницы".

Существует два каталога (с подкаталогами), в которых могут располагаться рабочие файлы:

папка_данных_терминала\MQL5\FILES\ (выберите для просмотра в терминале пункт меню "Файл"-"Открыть каталог данных");

общая папка всех установленных на компьютере терминалов – обычно расположена в каталоге C:\Documents and Settings\All Users\Application Data\MetaQuotes\Terminal\Common\ .

Программным путем можно получить наименования этих каталогов с помощью функции TerminalInfoString(), используя перечисление ENUM_TERMINAL_INFO_STRING:

//--- Папка, в которой хранятся данные терминала
string terminal_data_path=TerminalInfoString(TERMINAL_DATA_PATH);
//--- Общая папка всех клиентских терминалов
string common_data_path=TerminalInfoString(TERMINAL_COMMONDATA_PATH);

Работа с файлами из других каталогов пресекается.

 
Rosh:

Да, пока ориентируйтесь на этот пример из документации MQL5 https://www.mql5.com/ru/docs/files


Исходя из этого можно утверждать, что помимо каталога данных для каждого терминала в отдельности (если их несколько), теперь для всех терминалов существует одна, общая для них папка, в которой можно хранить/использовать советниками общие для всех программ файлы? Если так, то удобненько.
 
artmedia70:
Исходя из этого можно утверждать, что помимо каталога данных для каждого терминала в отдельности (если их несколько), теперь для всех терминалов существует одна, общая для них папка, в которой можно хранить/использовать советниками общие для всех программ файлы? Если так, то удобненько.


Именно так


 
Rosh:

Да, пока ориентируйтесь на этот пример из документации MQL5 https://www.mql5.com/ru/docs/files

Благодарю за пример. Как это сделать из советника - ясно.

А можно ли получить эти пути вне терминала? Поясню, зачем это нужно. Для некоторых клиентов я делаю для советника инсталлятор. Он получает путь к папке установки терминала, а затем раскладывает всё по нужным папкам внутри неё. Сейчас это всё прекрасно работает.

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

В корне каждого каталога данных терминала также находится файл origin.txt, который содержит путь к папке установки терминала, к которой относятся эти данные. Это позволяет обратно сопоставить каждый каталог данных терминала с конкретным каталогом установки терминала, например, если у пользователя установлено несколько копий терминала MetaTrader 4.

Это замечательно. А есть ли столь же элегантный способ прямо сопоставить конкретный каталог установки терминала с его каталогом данных?

 

Win XP SP3 32-bit 3,5 Гб памяти, файл подкачки - по выбору системы (3,5 Гб сейчас)

При тесте стандартного советника Moving Average, со стандартными параметрами на 509 билде(альпари), по всем тикам, на М1 с даты 01.01.2000г до сегодняшней, создаётся файл EURUSD1_0.fxt размером 4,18 Гб

и тестирование проходит нормально до 2013.12.10 16:31:47 2001.08.08 09:50 Moving Average: stopped because of Stop Out, как и должно быть.


Если тот-же тест включить на на 556 билде(MetaQuotes) то

на М1 с даты 01.01.2000г до сегодняшней

2013.12.10 16:46:35.555 HistoryBase: not enough memory 'EURUSD1' [4998917 bars]
2013.12.10 16:46:35.555 TestGenerator: no history data 'EURUSD1'
2013.12.10 16:46:35.555 Memory handler: cannot allocate 299950380 bytes of memory


на М1 с даты 01.01.2005г до сегодняшней (с даты 01.01.2006 этот тест работает)

2013.12.10 17:13:40.273 HistoryBase: not enough memory 'EURUSD1' [3197766 bars]
2013.12.10 17:13:40.273 TestGenerator: no history data 'EURUSD1'

2013.12.10 17:13:40.273 Memory handler: cannot allocate 191881320 bytes of memory

Проверил тот-же тест на на 556 билде(MetaQuotes) с даты 01.01.2000г до сегодняшней в Windows 7 SP1 64-bit 8 Гб памяти, создаётся файл EURUSD1_0.fxt размером 4,49 Гб и тестирование проходит нормально до

18:05:44 2000.10.30 01:51 Tester: not enough money for sell 0.10 EURUSD at 0.84040 sl: 0.00000 tp: 0.00000 [2000.10.30 01:51]
18:05:44 2000.10.30 01:51 Tester: PrevBalance: 82.02, PrevPL: 0.00, PrevEquity 82.02, PrevMargin: 0.00, NewMargin: 84, FreeMargin: -2.03
18:05:44 2000.10.30 01:51 Moving Average EURUSD,M1: OrderSend error 134

 
В старой версии МКЛ были шаблоны для программ (.mqt, лежали в папке experts\temlates), которые можно было отредактировать под себя. В новой версии не могу их найти. Теперь в МетаЕдиторе нет возможности использовать шаблоны?
 
Spy:
В старой версии МКЛ были шаблоны для программ (.mqt, лежали в папке experts\temlates), которые можно было отредактировать под себя. В новой версии не могу их найти. Теперь в МетаЕдиторе нет возможности использовать шаблоны?
нет
 
serferrer:

Win XP SP3 32-bit 3,5 Гб памяти, файл подкачки - по выбору системы (3,5 Гб сейчас)

При тесте стандартного советника Moving Average, со стандартными параметрами на 509 билде(альпари), по всем тикам, на М1 с даты 01.01.2000г до сегодняшней, создаётся файл EURUSD1_0.fxt размером 4,18 Гб

и тестирование проходит нормально до 2013.12.10 16:31:47 2001.08.08 09:50 Moving Average: stopped because of Stop Out, как и должно быть.


Если тот-же тест включить на на 556 билде(MetaQuotes) то

на М1 с даты 01.01.2000г до сегодняшней


на М1 с даты 01.01.2005г до сегодняшней (с даты 01.01.2006 этот тест работает)

Проверил тот-же тест на на 556 билде(MetaQuotes) с даты 01.01.2000г до сегодняшней в Windows 7 SP1 64-bit 8 Гб памяти, создаётся файл EURUSD1_0.fxt размером 4,49 Гб и тестирование проходит нормально до

1. Лог тестирования приложите пожалуйста - сюда или в отдельнном инциденте в Сервисдеске.

2. Пожалуйста, точное название сервера укажите (Tools->Options->Server->Server)

 
Renat:
нет

А зачем тогда сделали возможность использования Стилизатора под один стандарт? Ведь многие оформляют код не так как встроенный Стилизатор это делает. Многие оформляют так:

тип_данных myfunc(...) {
   некий код
   }

при чем это не просто многие, а большинство. Где можно исправить стилистику оформления кода Стилизатора?

 
Barbarian:

при чем это не просто многие, а большинство.


Это неправда. Но шаблоны все равно зря убрали, они были удобны.
Причина обращения: