"initialized" & "deinitialized"

 
Разработчики подскажите должно так быть или нет.

Написал эксперт. в эксперте есть одна внешняю функция. в эксперт прикрутил её так.
#include <files.mqh>

Если в файле "files.mqh" изменить что-то и сохранить, эксперт изменения не увидет. Если просто кнопкой отключить работу эксперта и сново включить в логах пишется:
2006.05.22 14:45:14 TRUBA_H1 EURUSD,H1: initialized
2006.05.22 14:45:14 TRUBA_H1 EURUSD,H1: deinitialized
и опять эксперт не видет измененные параметры.
Так же не видет если терминал закрыть и сново загрузить. конект произошел, все подключилось в логах
2006.05.22 14:53:40 Expert TRUBA_H1 EURUSD,H1: loaded successfully
но изменения в файле "files.mqh" эксперт не видет.

Помогает только полная компиляция эксперта. А если исходного кода у меня нету, есть только "files.mqh" в катором я меняю что нужно, а все остальное заложено в скомпелированном эксперте. Как тогда пользоваться экспертом?
 
#include - это просто вставка текста файла в текст эксперта.
Поэтому после любых изменений нужна компиляция.

Если необходима возможность менять только включаемый файл, его надо оформить в виде библиотеки. Тогда для внесения изменений в экспета достаточно будет скомпилировать библиотеку и перезапустить эксперта.
;)
 
#include - это просто вставка текста файла в текст эксперта.
Поэтому после любых изменений нужна компиляция.

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


Всмысле, в виде DLL или просто подключать .ex4, каторый можно изменить, перекомпилить и все работать будет? Как правельно?
 
попробывал засунуть все в библиотеку и подключить её к эксперту пишет
'temp.ex4' - cannot open program file D:\Program Files\MetaTrader 4\experts\TRUBA_H1.mq4 (316, 1)
В папке "D:\Program Files\MetaTrader 4\experts\libraries\" библиотека создана, но компилется не хочет, требует кое какие параметры из эксперта, впринципе можно их туда перенести, но если честно я пока плохо представляю чего нужно и главнок как правельно все сделать.
Кomposter, если тебя не затруднит объясни на пальцах. код желательно посмотреть, как подключается и все такое. ниразу не сталкивался с подобной штукой. В хелпе написано. но пока не догнал что нужно.
 
библиотеку надо пометить #property library, сохранить в "D:\Program Files\MetaTrader 4\experts\libraries\" и скомпилировать.
В эксперте вместо #include вставить #import и описать все функции, которые будут использоваться.

В хелпе об этом достаточно подробно написано. С примерами ;)
 
библиотеку надо пометить #property library, сохранить в "D:\Program Files\MetaTrader 4\experts\libraries\" и скомпилировать.
В эксперте вместо #include вставить #import и описать все функции, которые будут использоваться.
В хелпе об этом достаточно подробно написано. С примерами ;)


Как прикрутить библиотеку я разобрался.
код библиотеки:
#property library
//+------------------------------------------------------------------+
//| Условие для BUY                                                  |
//+------------------------------------------------------------------+
int BUY(bool lFlagBuyOpen){
   lFlagBuyOpen = (.....условие для покупки.....);
   return(lFlagBuyOpen);
   }
//+------------------------------------------------------------------+
//| Условие для SELL                                                 |
//+------------------------------------------------------------------+   
int SELL(bool lFlagSellOpen){
   lFlagSellOpen = (.....условие для продажи.....);
   return(lFlagSellOpen);
   }



В основном коде эксперта, куда прикреплена данная библиотека, используются индикаторы

   double MacdCurrent;
   MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);


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

#property library
double MacdCurrent;
//+------------------------------------------------------------------+
//| Условие для BUY                                                  |
//+------------------------------------------------------------------+
int BUY(bool lFlagBuyOpen){
   lFlagBuyOpen = (MacdCurrent<0);
   return(lFlagBuyOpen);
   }
//+------------------------------------------------------------------+
//| Условие для SELL                                                 |
//+------------------------------------------------------------------+   
int SELL(bool lFlagSellOpen){
   lFlagSellOpen = (MacdCurrent>0);
   return(lFlagSellOpen);
   }


Теперь код компилится, но не открывается ни одной сделки при данных условиях.
Объясните что я не так сделал?!

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