Помогите начинающему пожалуйста
 
 Разбираюсь с написанием своего индикатора. Не могу понять, почему перестает отрабатывать вывод серии 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;
}
Заранее спасибо!

 !
 !