Еще раз про iCustom

 
Вопрос такого плана: индикатор имеет 15 параметров, при вызове меня интересует изменение только 2, можно ли при вызове такого индикатора параметры, которые используются по умолчанию, просто не указывать обозначив их место в стро. запятыми?
 
Я думаю что нельзя. Как-то это не укладывается в мое понимание MQL.
Попробуй, потом нам расскажешь что получилось.
 
Если тебе нужны только 2 параметра, то в индикаторе убери с остальных внешних переменных приписку extern :) Вроде только так, а может и нет:)
 
iCustom можно вызывать с числом параметров, отличных от требуемого индикатором, и вызов на самом деле состоится, но проблема в порядке аргументов.
Прототип iCustom выглядит так:
double iCustom( string symbol, int timeframe, string name, /*список параметров индикатора...*/, int mode, int shift)

Так вот, если бы список параметров индикатора был бы в конце агрументов, т.е. в начале все обязательные параметры: string symbol, int timeframe, string name, int mode, int shift, и лишь последними аргументы для индикатора, Вы получили бы верный вызов с значениями по умолчанию для пропущенных параметров.

К сожалению, для этой функции разработчики отошли от C++ стандарта (помещать переменное число параметров в конце списка аргументов функции), и это была ошибка - если Вы передадите другое число аргументов, Вы получите неверные значения для int mode, int shift :(.

А вообще попробуйте. Практика - лучшая проверка.


 
chv:

А вообще попробуйте. Практика - лучшая проверка.

Я когда-то пробовал, но точно не помню. Кажется, можно передавать неполное количество параметров, но не вразброд, а подряд. Но была какая-то тонкость, типа параметры считаются не слева, а справа. Но способ применяется в индикаторах довольно часто, встречал в кодах. 
Причина обращения: