Шайтан компиляция ex4

 

Добрый день!

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

Компилирую программы на одном  ПК - все ок, на другом - "cannot load..." Причем, например, индикатор из стандартных (MACD) запускается, потом его перекомпилирую - и он тоже перестает грузиться.

Тему с UAC исходил вдоль и поперек. Включал, выключал, в portable режиме и без. Папка данных - все ок, ex4 ложится правильно, индикатор видится, но не запускается. Т.е. выдает НЕ ошибку "cannot open file [2]" а  "cannot load". Реально откомпилированные ex4 файлы отличаются на разных ПК. На обоих Win7.

 

На одном  компе с 

0 19:18:51.064 MetaTrader 4 build 950 started (MetaQuotes Software Corp.)

0 19:18:51.064 Windows 7 Ultimate (x64 based PC), IE 11.00, UAC, 1 x Intel Core i5-2557M  @ 1.70GHz, RAM: 503 / 1423 Mb, HDD: 29418 / 29553 Mb, GMT+03:00

0 19:18:51.064 Data Folder: E:\MetaTrader 4

2 19:24:41.791 Custom indicator Standart\MACD GBPUSD,H1: loaded successfully

2 19:24:57.064 Custom indicator MACD GBPUSD,H1: removed

0 19:24:58.421 MetaTrader 4 build 950 stopped

На другом компе

0 19:32:16.829 MetaTrader 4 build 950 started (MetaQuotes Software Corp.)

0 19:32:16.829 Windows 7 Enterprise (x64 based PC), IE 11.00, 4 x Intel Core i5-2500  @ 3.30GHz, RAM: 4611 / 8103 Mb, HDD: 29418 / 29553 Mb, GMT+03:00

0 19:32:16.829 Data Folder: F:\MetaTrader 4

0 20:04:51.238 MetaTrader 4 build 950 stopped 

не запускается индикатор

3 19:32:45.177 cannot load 'F:\MetaTrader 4\MQL4\indicators\Standart\MACD.ex4'

3 20:04:42.497 cannot load 'F:\MetaTrader 4\MQL4\indicators\Standart\MACD.ex4' 

 

Или вот еще пример 

Индикатор показывает номер Бара. 

2016.01.26 20:52:11.229 BarsNumber GBPUSD,H1: Barsnumber comlete. TLB=1970.01.01 00:00

2016.01.26 20:52:11.229 BarsNumber GBPUSD,H1: initialized

компилируем на "проблемной" машине и он перестает грузиться.

2016.01.26 20:55:46.247 cannot load 'F:\MetaTrader 4\MQL4\indicators\BarsNumber.ex4'

 

Возвращаем флешку в первый ПК и там все работает. И старая компиляция индикатора и новая.

2 21:00:47.976 Custom indicator BarsNumber GBPUSD,H1: loaded successfully

2 21:00:51.875 Custom indicator BarsNumber_OLD GBPUSD,H1: loaded successfully 

Имею два ПК.

№1 Виртуальный, Parallels на MacOS.  0 19:18:51.064 Windows 7 Ultimate (x64 based PC), IE 11.00, UAC, 1 x Intel Core i5-2557M  @ 1.70GHz, RAM: 503 / 1423 Mb, HDD: 29418 / 29553 Mb, GMT+03:00

№2 Физический.  Windows 7 Enterprise (x64 based PC), IE 11.00, 4 x Intel Core i5-2500  @ 3.30GHz, RAM: 4611 / 8103 Mb, HDD: 29418 / 29553 Mb, GMT+03:00

Для наглядности берем флешку с установленным MetaTrader 4 build 950 (хотя такой же эффект наблюдается и на установленным на HDD МТ4).

Подключаем флешку к компу 1. Все работает. Программы компилируются, запускаются. Любые.

Подключаем флешку к компу 2 (физическому). Программы, которые уже были скомпилированы - работают. Но при попытке перекомпилировать, сама компиляция - ок, а программа (например, индикатор), не запускается в терминале. Т.е. сам файл ex4 видится терминалом, но не запускается. Новая версия после компиляции (которая не запускается) - отличается по размеру от предыдущей версии (которая работала).

При этом, на компе №1 запускаются обе версии: и старой компиляции и новой. 

Прикладываю, для примера, самый простой индикатор и обе версии компиляции 

BarsNumber_OLD.ex4 - то, что запускается на обоих компах. Старая компиляция.

BarsNumber.ex4 - новая компиляция, работает только на компе №1.

 

Прикрепленные файлы:
BarsNumber.ex4 (5.82 KB)
BarsNumber.mq4 (2.28 KB)
BarsNumber_OLD.ex4 (5.16 KB)
 
Попробуйте флешку отформатировать под NTFS. А потом уже копировать на неё файлы.
 

Дело не во флешке. При копировании на хард та же история. Хоть Program Files, хоть на диске D.

Впечатление, что компилятору чего-то не хватает в OS  и как следствие ex4 получается "битый". Но установка Win вполне стандартная.

Я пытался в сервис-деск обратиться с этой проблемой. Больше месяца ожидания - полная тишина. :о( 

 
На "четвёртом" форуме проверить не могу - не даёт качать файлы.
 
//#property  indicator_color2  Blue
double     ind_buffer1[];
//double     ind_buffer2[];
datetime TLB;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
//---- drawing settings
   SetIndexStyle(0,DRAW_NONE);
   IndicatorDigits(0);
//  SetIndexStyle(1,0,STYLE_SOLID,2,Green);
 
//   SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,3);
//   SetIndexDrawBegin(0,0);
//   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
//---- indicator buffers mapping
  if(!SetIndexBuffer(0,ind_buffer1))
      Print("cannot set indicator buffers!");
  TLB=0;
//---- initialization done
   return(0);
//----

  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
  // Print(TimeToStr(Time[0])," 1111 ",TimeToStr(TLB));
   if (Time[0]==TLB) return(0);
   
   Print("Barsnumber comlete. TLB=",TimeToStr(TLB));

   TLB=Time[0];
   
   for (int i=Bars; i>=0; i--)
   ind_buffer1[i]=i;

   return(0);
  }
//+------------------------------------------------------------------+

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

Файлы:
 
Причем еще раз подчеркну, что такой же "фокус" могу произвести с любым индикатором из стандартной поставки. Т.е. он работает до тех пор, пока не перекомпилирован.
 

Не поверите, это уже делал.

Одна и та же копия, различий нет.

Копирую из "плохого" компа через сеть на другой, "хороший": терминал, метаедитор - все работает.

Может наоборот, после перекомпиляции именно терминалу чего-то не хватает в ОС? Потому что "проблемные" ex4 так же запускаются на другом компе. На "хорошем" компе - так же перекомпилируются нормально. "Хороший" комп теперь другой - виртуалка на vShere, но операционка такая же как на "проблемном" компе.

 

P.S. еще раз проделал на "плохом" компе ту же процедуру: скопировал на другой диск только екзешники, DLL и откомпилированные ex4. Результат тот же, не работает. Их же переношу на другой комп - работает.

P.P.S. на просторах инета видел тему что народ компилирует в старом компиляторе mq4 файлы, т.к. в новом они не компилируются. Может проблема одного поля ягоды? Потому что я взял старый метаедитор (до 600 билда) и в нем откомпилировал на "плохом" компе - заработало. Но не понятно почему новый компилятор один и тот же код на одном компе компилирует и запускает, а на другом компе - нет.

 
Выполните вот эту строку в обоих терминалах и сравните результат:
Alert(MQLInfoString(MQL_PROGRAM_PATH));
 

Хм.. интересно.

На "хорошем" компе:

Создал скрипт, запустил, выдало окно с отображением пути каталога данных.

По сети скопировал исходник скрипта и  ex4 на "плохой" комп.

На "плохом" компе: 

Не запустился с той же ошибкой.

Попробовал перекомпилировать - тот же эффект.

Пробовал создать с нуля скрипт с той же строкой - тот же эффект, не запускается с той же ошибкой.

Но если вы про папку данных, то она корректна, указывает на папку MQL внутри папки запускаемого терминала.

 
Еще раз хочу обратить внимание, что ошибка не поиска файла  "cannot open file [2]" (это если не находит файл в папке) а  "cannot load". 
 
LRA:
Запускали оба терминала с индикаторами с флэшки на каждом компьютере?

И с флешки, и по сети копировал в новые папки. И флешку новую из упаковки брал. И по колесам стучал, и в выхлопную трубу дул. :о)

Короче, с папками и флешками как только не экспериментировал.