А почему бы не поместить входные параметры в структуру? - страница 4

 

Alexey Volchanskiy

 Кстати, в MQL5 есть предел на количество параметров функции?

Вроде бы 64 параметра на функцию.

 
Alexey Volchanskiy:

А как делаете оптимизацию? Уже не первый раз это спрашиваю и все молчат.


В том то и дело, что никак. То есть любое свое окно (DLL, GUI на MQL) на корню рубит штатную оптимизацию. В крайнем случае приходится дописывать свою оптимизацию внутри советника, что еще тот велосипед.

То же самое ini-файл. В чем тут удобство вообще неясно. По крайней мере, я не видел простых пользователей, которые редактируют ini-файл ради изменения значений настроечных параметров.

 
Alexey Volchanskiy:

Вроде я достаточно четко написал, но повторюсь на примере. Есть советник, у него 100 параметров input, все их надо передать в экземпляр класса алгоритма, где и происходит вся работа. Есть два пути:

  1. Сделать в классе функцию(-ции) установки параметров. Теперь представляем в уме функцию со 100 параметрами. Кстати, в MQL5 есть предел на количество параметров функции?
  2. Класс определяется после входных переменных, т.о. они видны из советника. Недостаток - меньше гибкости в случае использования множества экземпляров класса. Плюс - минимум писанины.

То есть проблема в том, как передать input переменные в экземпляр класса алгоритма

Тогда правильно понял

// Begin: mqh-файл
class CLASS_EXPERT
{
public:  
  template <typename T>
  void Set( void );
};
// End: mqh-файл

input int inNum = 0;

struct INPUTS
{
  const int Num;
  
  INPUTS( void ) : Num(inNum)
  {
  }
};

CLASS_EXPERT Experts[10];

void OnInit()
{
  for (int i = ArraySize(Experts) - 1; i >= 0; i--)
    Experts[i].Set<INPUTS>();
}
 
Ihor Herasko:

Это как? Я действительно не понимаю, как это возможно. Знаю такую фишку для скриптов, но не для экспертов и индикаторов.

ExpertLoader_Example.mq5 отсюда.

Ihor Herasko:

В том то и дело, что никак. То есть любое свое окно (DLL, GUI на MQL) на корню рубит штатную оптимизацию. В крайнем случае приходится дописывать свою оптимизацию внутри советника, что еще тот велосипед.

То же самое ini-файл. В чем тут удобство вообще неясно. По крайней мере, я не видел простых пользователей, которые редактируют ini-файл ради изменения значений настроечных параметров.

https://www.mql5.com/ru/docs/optimization_frames/parametersetrange

Expert
Expert
  • голосов: 16
  • 2017.08.28
  • fxsaber
  • www.mql5.com
Все остальные файлы на данной странице описания библиотеки являются ее примерами/сценариями применения и не нужны для работы самой библиотеки. Возможности Примеры К описанию прикреплены примеры/сценарии ее использования. ExpertsRemove.mq5 ExpertsReopen.mq5 ChartsClose.mq5 ExpertLoader_Example.mq5 ExpertsChange_Example.mq5 Это...
 

Можно внешние переменные записать в файле mqh и подключать его.

 

Видимо я отстал от жизни или двигаюсь в неправильном направлении,

мне казалось, что чем меньше входных параметров у советника - тем лучше.

В идеале, по моему, у советника не должно быть входных параметров (input переменных).

Поясните плз, в чем смысл 100 параметров?

 
Sergey Chalyshev:

Видимо я отстал от жизни или двигаюсь в неправильном направлении,

мне казалось, что чем меньше входных параметров у советника - тем лучше.

В идеале, по моему, у советника не должно быть входных параметров (input переменных).

Поясните плз, в чем смысл 100 параметров?


Для экспериментов.

 
Sergey Chalyshev:

Видимо я отстал от жизни или двигаюсь в неправильном направлении,

мне казалось, что чем меньше входных параметров у советника - тем лучше.

В идеале, по моему, у советника не должно быть входных параметров (input переменных).

Поясните плз, в чем смысл 100 параметров?


Этот вопрос тут не обсуждается. Обсуждаем технические вопросы передачи параметров.

 
Dmitry Fedoseev:

Можно внешние переменные записать в файле mqh и подключать его.


Щас с ума сойду, меня упорно не слышат. Можно и в .mqh, какая разница,  как их передать в класс алгоритма?

 
Alexey Volchanskiy:

Щас с ума сойду, меня упорно не слышат. Можно и в .mqh, какая разница,  как их передать в класс алгоритма?


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

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