Помогите начинающему пожалуйста

Разбираюсь с написанием своего индикатора. Не могу понять, почему перестает отрабатывать вывод серии MACD_Sign на график, когда выбираю MA_fast_type и MA_slow_type 1. Вызоа же MY._my_MA_MA_diff отрабатывает, MACD_Line выводится.
На всякий случай убрал уже все условия, оставил просто две строки кода. Думал может что-то с типами, в явном виде привожу передачу аргументов к (int), хотя опять же, это не причем, MY._my_MA_MA_diff то возвращает серию..
Код: Выделить всё
function Initialize()
{
IndicatorName = "_my_MA_MA_MACD"; // Задайте название индикатора и сохраните с данным именем
PriceStudy = false; // Рисовать в области цены (true – да, false – нет)
AddInput("Input", Inputs.Price); // Input - входной ряд (Inputs.Price) или свечи (Inputs.Candle)
AddParameter("MA_fast_type", 2, "тип быстр: 1-SMA/2-EMA/3-WMA");
AddParameter("MA_fast_period", 12, "период быстрой MA");
AddParameter("MA_slow_type", 2, "тип медл: 1-SMA/2-EMA/3-WMA");
AddParameter("MA_slow_period", 26, "период медленной MA");
AddParameter("MACD_sign_type", 2, "тип сигн MACD: 1-SMA/2-EMA/3-WMA");
AddParameter("MACD_sign_period", 9, "период сигн MACD");
AddSeries("MACD_Line", DrawAs.Line, Color.Blue); // Задаем вид линии индикатора
AddSeries("MACD_Sign", DrawAs.Line, Color.Orange); // Задаем вид линии индикатора
}
function Evaluate()
{
//var sInd = SMA(Input, 10);
//var A = EMA(sInd, 5);
var MA_diff = MY._my_MA_MA_diff(Input,(int)MA_fast_type,(int)MA_fast_period,(int)MA_slow_type,(int)MA_slow_period);
var sign_line = SMA(MA_diff, MACD_sign_period);
/* if (MACD_sign_type == 1)
{
sign_line = SMA(MA_diff, MACD_sign_period);
//MACD_Sign = sign_line[0];
}
else if (MACD_sign_type == 2)
{
sign_line = EMA(MA_diff, MACD_sign_period);
//MACD_Sign = sign_line[0];
}
else if (MACD_sign_type == 3)
{
sign_line = WMA(MA_diff, MACD_sign_period);
//MACD_Sign = sign_line[0];
}
else
{
sign_line = SMA(MA_diff, MACD_sign_period);
//MACD_Sign = sign_line[0];
}*/
MACD_Line = MA_diff[0];
MACD_Sign = sign_line[0];
}
вот мой пользовательский индикатор MY._my_MA_MA_diff
Код: Выделить всё
function Initialize()
{
IndicatorName = "_my_MA_MA_diff"; // Задайте название индикатора и сохраните с данным именем
PriceStudy = false; // Рисовать в области цены (true – да, false – нет)
AddInput("Input", Inputs.Price); // Input - входной ряд (Inputs.Price) или свечи (Inputs.Candle)
AddParameter("MA_fast_type", 2, "тип быстр: 1-SMA/2-EMA/3-WMA");
AddParameter("MA_fast_period", 12, "период быстрой MA");
AddParameter("MA_slow_type", 2, "тип медл: 1-SMA/2-EMA/3-WMA");
AddParameter("MA_slow_period", 26, "период медленной MA");
AddSeries("MA_diff", DrawAs.Line, Color.Blue); // Задаем вид линии индикатора
}
function Evaluate()
{
var MA_fast = 0.0;
var MA_slow = 0.0;
if (MA_fast_type == 1)
{
MA_fast = SMA(Input, MA_fast_period)[0];
}
else if (MA_fast_type == 2)
{
MA_fast = EMA(Input, MA_fast_period)[0];
}
else if (MA_fast_type == 3)
{
MA_fast = WMA(Input, MA_fast_period)[0];
}
else
{
MA_fast = SMA(Input, MA_fast_period)[0];
}
if (MA_slow_type == 1)
{
MA_slow = SMA(Input, MA_slow_period)[0];
}
else if (MA_slow_type == 2)
{
MA_slow = EMA(Input, MA_slow_period)[0];
}
else if (MA_slow_type == 3)
{
MA_slow = WMA(Input, MA_slow_period)[0];
}
else
{
MA_slow = SMA(Input, MA_slow_period)[0];
}
MA_diff = MA_fast - MA_slow;
}
Заранее спасибо!