VDV писал(а):> var sEMA = MY.MYEMA(Input, 10);
Input - это копия ряда данных, который получен в текущей длине ТФ и это базовый функционал?
Если параметр Input не указан, то какой ряд и в каком ТФ индикатор получит или может загрузить самостоятельно?
Если это тот ряд который будет загружен по ссылке Inputs.Candle или Inputs.Price в индикаторе, то как отреагирует движок АД, если тип переданного ряда, не совпадет с типом ожидаемого?
Передаваемый параметр
Input должен быть того типа, что задан в запрашиваемом индикаторе. Это логично.
Передавайте туда Price или Candle вашего скрипта.
Допустип, Ваш индикатор (или скрипт стратегии) имеет на входе Inputs.Candle, а запрашиваемый индикатор ждёт от вас Inputs.Price.
Достаточно вызвать его так: MY.MYIND(Input.Close, 10)
т.е. из типа Candle мы передаем только ряд цены закрытия в индикатор. (пример есть в ответе на следующий вопрос, ниже)
А вот обратного не получится (если не ошибаюсь). Если индикатор просит Candle на вход, а Ваш индикатор работает с рядом Price, передать Candle на вход не получится, т.к. у Вас нет этой структуры.
Реакцию движка АД4 не пробовал проверять, думаю никак не среагирует. Либо будет ошибка, либо результат пустой. Попробуйте экспериментально.
VDV писал(а):10 - это что за параметр и как его получить, для обработки, в вызываемом индикаторе из функции Initialize() или Evaluate()?
Или это тоже обязательный и базовый параметр который только для движка АД? Тогда, что он подразумевает?
Это значение для параметра вызываемого индикатора, который Вы желаете передать ему на вход.
Например, для EMA Вы передаете в первом параметре ряд, вторым параметром идёт период EMA, т.к. в этом индикаторе 1 параметр на входе то на этом всё. В Вашем случае 10 это вызов EMA с периодом 10.
10 - может быть не константой, а переменной.
Ничего не мешает передать туда значение настраиваемого параметра заданного в Initialize() для вашего скрипта, или глобальной переменной, или любой другой переменной рассчитанной в Evaluate().
Код: Выделить всё
function Initialize()
{
AddInput("Input", Inputs.Candle);
AddParameter("Period", 30, 1);
}
function Evaluate()
{
/* ... */
MA = EMA(Input.Close, Period); //передаем из Candle только ряд цен закрытия на вход индикатору, и период заданный в секции Initialize()
/* ... */
// пример обращения к значению EMA. 15 свечей назад,
// MA[15]
}
и вообще параметров может быть более чем 1 в индикаторе
поэтому вызов типа
передает последовательно параметры на вход вызываемого индикатора.