Создание ex5 файла

 

Есть файл советника mql5 и есть файл индикатора mql5, следовательно, для того чтобы советник работал нужен файл индикатора !

Дело в том, что не могу понять как сделать компиляцию так, чтобы в файле ex5 был советник и индикатор в 1 файле, так как если я делаю компиляцию у меня файл ex5 для советника, ну и для индикатора он тоже отдельный.

 
Код индикатора надо встроить в код советника.
 

либо внедрить как ресурс

https://www.mql5.com/ru/docs/runtime/resources

Документация по MQL5: Программы MQL5 / Ресурсы
Документация по MQL5: Программы MQL5 / Ресурсы
  • www.mql5.com
Программы MQL5 / Ресурсы - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Или включите индикатор в советник как ресурс

например #resource "\\Indicators\\IndicatorName.ex4" 

и в коде вызывайте его через iCustom(NULL,Period(),"::Indicators\\IndicatorName.ex4",Param1,Param2, и т.д. , Номер буфера,  сдвиг);

 

P.S. Опоздал выше уже ответили. 

 
o_O:

либо внедрить как ресурс

А можно в ресурс внедрить просто бинарный файл ? Скажем, даты, сохраненные с помощью стандартной функции CArrayLong ?

Надо попробовать...

Не... Пишет "Unknown resource type"

Жаль.

 
ресурс не решает проблемы двух файлов
 
o_O:

либо внедрить как ресурс

https://www.mql5.com/ru/docs/runtime/resources

сделал вот так 

#resource "\\Indicators\\SampleIndicator.ex5"
int handle_ind;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   handle_ind=iCustom(_Symbol,_Period,"::Indicators\\SampleIndicator.ex5");
   if(handle_ind==INVALID_HANDLE)
     {
      Print("Expert: iCustom call: Error code=",GetLastError());
      return(INIT_FAILED);
     }
//---
   return(INIT_SUCCEEDED);
  }

всё получилось индикатор привязывается к советнику , но если только убрать обработчик void OnInit(), а если убираю то советник не открывает позиции.

При компилировании пишет  ошибку 'OnInit' - function already defined and has different type N A E.mq5 204 6


 
Sergey Ponomarev:

сделал вот так 


всё получилось индикатор привязывается к советнику , но если только убрать обработчик void OnInit(), а если убираю то советник не открывает позиции.

При компилировании пишет  ошибку 'OnInit' - function already defined and has different type N A E.mq5 204 6


Буфер и параметры индикатора Пушкин указывать будет?
 

Отлично) всё сделал) 

подскажите пожалуйста ещё как сделать , чтобы советник

Добавляйл проверку на достаточность средств

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

 
Документация по MQL5: Стандартная библиотека / Торговые классы / CAccountInfo / MarginCheck
Документация по MQL5: Стандартная библиотека / Торговые классы / CAccountInfo / MarginCheck
  • www.mql5.com
Стандартная библиотека / Торговые классы / CAccountInfo / MarginCheck - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vitalii Ananev:

Или включите индикатор в советник как ресурс

например #resource "\\Indicators\\IndicatorName.ex4" 

и в коде вызывайте его через iCustom(NULL,Period(),"::Indicators\\IndicatorName.ex4",Param1,Param2, и т.д. , Номер буфера,  сдвиг);

 

P.S. Опоздал выше уже ответили. 

Спасибо за полезную информацию! Интересно, если в четверке делать несколько вызовов одного индикатора но по разным графическим буферам, уменьшится ли потребление памяти по сравнению с автономным использованием индикатора, или это простое присоединение типа контейнера и на работе в целом не отражается?
Причина обращения: