Как из структуры MqlParam получить значение, хранящееся в нём?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Viktar Dzemikhau
3386
Viktar Dzemikhau  

Упражнялся в работе с хэндлами индикаторов. С некоторыми всё получается, а с некоторыми нет. Принтую, что приходит в параметрах в функцию IndicatorCreate примерно так, если работаю с зиг-загом обычным:

//==================================================================================================================================================================================
// Заполнение массива параметров Зиг-зага (MqlParam). ==============================================================================================================================
void ZigZag :: fillingParameters(void) {
  ArrayResize(m_parameters, m_parametersCount);
  m_parameters[0].type = TYPE_STRING;
  m_parameters[0].string_value = "ZigzagColorR";
  m_parameters[1].type = TYPE_INT;
  m_parameters[1].integer_value = m_extDepth;
  m_parameters[2].type = TYPE_INT;
  m_parameters[2].integer_value = m_extDeviation;
  m_parameters[3].type = TYPE_INT;
  m_parameters[3].integer_value = m_extBackstep;
}
//==================================================================================================================================================================================
// Создание экземпляра Zig-Zag'а. ==================================================================================================================================================
bool ZigZag :: createInstance(void) {
  Print("m_parametersCount = ", m_parametersCount);
  Print("m_parameters[0].type = ", m_parameters[0].type);
  Print("m_parameters[0].string_value = ", m_parameters[0].string_value);
  Print("m_parameters[1].type = ", m_parameters[1].type);
  Print("m_parameters[1].integer_value = ", m_parameters[1].integer_value);
  Print("m_parameters[2].type = ", m_parameters[2].type);
  Print("m_parameters[2].integer_value = ", m_parameters[2].integer_value);
  Print("m_parameters[3].type = ", m_parameters[3].type);
  Print("m_parameters[3].integer_value = ", m_parameters[3].integer_value);
  m_handle = IndicatorCreate(m_symb, m_TF, m_indicatorType, m_parametersCount, m_parameters);
  return ((m_handle != INVALID_HANDLE) ? true : false);
}

Принтуется такое:

2018.04.30 02:10:28.750 2018.03.01 00:00:00   m_parametersCount = 5

2018.04.30 02:10:28.750 2018.03.01 00:00:00   m_parameters[0].type = 14

2018.04.30 02:10:28.750 2018.03.01 00:00:00   m_parameters[0].string_value = ZigzagColorR

2018.04.30 02:10:28.750 2018.03.01 00:00:00   m_parameters[1].type = 7

2018.04.30 02:10:28.750 2018.03.01 00:00:00   m_parameters[1].integer_value = 0

2018.04.30 02:10:28.750 2018.03.01 00:00:00   m_parameters[2].type = 7

2018.04.30 02:10:28.750 2018.03.01 00:00:00   m_parameters[2].integer_value = 0

2018.04.30 02:10:28.750 2018.03.01 00:00:00   m_parameters[3].type = 7

2018.04.30 02:10:28.750 2018.03.01 00:00:00   m_parameters[3].integer_value = 0

Возник вопрос, а как мне получить вообще тип и значение, передаваемые в индикатор?


Например, на 1-ый индекс я передаю m_extDepth, значение которого 12 и тип - int. Как мне это распечатать? Проверить то нужно как-то, что я верно передал параметры. Хэндл не создался, и нужно узнать причину..

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий