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

 

Так все равно нужны реальные input переменные!

Параметры

name

[in]  Идентификатор переменной input или sinput. Такие переменные являются внешними параметрами программы, значения которых можно задавать при запуске.

 
Alexey Volchanskiy:

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


Вот пример. 

Файлы:
test.zip  8 kb
 
Alexey Volchanskiy:

Так все равно нужны реальные input переменные!

Никто не мешает их прописать в исходнике.

 
fxsaber:

Никто не мешает их прописать в исходнике.


Сказка про белого бычка )) Как в обычной торговле передать их в класс алгоритма?

 
Alexey Volchanskiy:

Сказка про белого бычка )) Как в обычной торговле передать их в класс алгоритма?

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

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

fxsaber, 2017.10.02 20:15

// 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>();
}
 
fxsaber:

Пример удобства можете показать? Никак не могу понять, о чем речь.


вот пример, с первой страницы

struct VolumeParams                              
{
    double lot;         //Лоты
    double LotRatio;    //Множитель
    int tp;             //ТП
    int sl;             //СЛ
    int orders;         //Количество ордеров
};
VolumeParams ParamBuf[5];

input ParamBuf[0];         // Шаг 1
input ParamBuf[1];         // Шаг 2
input ParamBuf[2];         // Шаг 3
input ParamBuf[3];         // Шаг 4
input ParamBuf[4];         // Шаг 5

плюс мои цитаты

...вот заказчик хочет 10 входов, и у каждого шага свои тп/сл/лот/тралл/сигнал на вход

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

При таком оформлении, программисту легко инициализировать массив структур-входных параметров и потом с ним работать.

Разверните все эти параметры в отдельные переменные, и попробуйте с ними работать.

 
Taras Slobodyanik:

вот пример, с первой страницы

При запуске ТС часто бывает, что не знаешь, какие входные параметры лучше выбрать. Поэтому запускаешь советник, в котором, например, десяток наборов различных входных параметров. И каждый набор для каждой копии ТС. Так делали и делают многие и очень давно, когда еще MQL4 был очень далек от MQL5.

И делали это через extern string - сейчас это называется input string

input string Parameters = "1, 2, 3.5, 8, 9l";

Парсили input-строки, смотрели, сколько там входных, и по этому числу создавали столько же (через ArrayResize) торговых логик с соответствующими входными параметрами. И все это на древнем MQL4! Там же по количеству ТС распределялся ММ на каждую и другие нюансы. Где-то в древних кодобазах должны быть примеры.

 

да, но так невозможна оптимизация

1

 
Taras Slobodyanik:
да, но так невозможна оптимизация

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

Есть куча практических приемов решить ту или иную нужду. Но они далеки от гипотетических проблем.

 
fxsaber:

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

Есть куча практических приемов решить ту или иную нужду. Но они далеки от гипотетических проблем.

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