Помогите с рисовалкой-индикатором TMA - страница 3

 
extern string     c0           = "=======================================================";
extern string     c1           = "|                          ---ПАРАМЕТРЫ ИНДИКАТОРОВ---                         |";
extern string     c2           = "=======================================================";
extern double     GlubInd      = 5,       // Глубина анализа баров - для индикаторов (но не <3 и не >10)
                  GlubSredn    = 5;       // Глубина анализа баров - для расчета средней величины бара (но не более 15)

extern string     c5           = "---Параметры TMA---";
extern string     TMA_TF           = "5";
extern int        TMA_HalfLength   = 56;
extern int        TMA_Price        = PRICE_CLOSE;
extern double     TMA_ATRMult      = 2.0;
extern int        TMA_ATRPer       = 100;
extern bool       TMA_Interpolate  = true;

double            TMA1, TMA2, TMA3;

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
//----
//+==================================================================+
// 1. ИНИЦИАЛИЗАЦИЯ ИНДИКАТОРОВ
    TMA1    = iCustom(Symbol(),Period(),"m_TMA_speed",TMA_TF,TMA_HalfLength,TMA_Price,TMA_ATRMult,TMA_ATRPer,TMA_Interpolate,2,1);
    TMA2    = iCustom(Symbol(),Period(),"m_TMA_speed",TMA_TF,TMA_HalfLength,TMA_Price,TMA_ATRMult,TMA_ATRPer,TMA_Interpolate,0,1);
    TMA3    = iCustom(Symbol(),Period(),"m_TMA_speed",TMA_TF,TMA_HalfLength,TMA_Price,TMA_ATRMult,TMA_ATRPer,TMA_Interpolate,1,1);
//+==================================================================+

   if (NewBar()){
      Alert("TMA1=",TMA1);
      Alert("TMA2=",TMA2);
      Alert("TMA3=",TMA3);
   }   
return(0);
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
// Функция обнаружения нового бара
//+------------------------------------------------------------------+
bool NewBar()
{
   static datetime New_Time=0;                  // Время текущего бара
   bool New_Bar=false;                          // Нового бара нет
   if(New_Time!=Time[0]){                       // Сравниваем время
      New_Time=Time[0];                         // Теперь время такое
      New_Bar=true;                             // Поймался новый бар
//    Alert ("новый бар ", New_Time,", ", F_New_Bar());
   }
  return (New_Bar);
}
Да, в таком виде все правильно выдает....
 
Но задача в следующем... Необходимо при рабочем ТФ М1 получить достоверные данные с ТМА на М5... Есть варианты решения?
 
serdon:
Но задача в следующем... Необходимо при рабочем ТФ М1 получить достоверные данные с ТМА на М5... Есть варианты решения?

Замените в

    TMA1    = iCustom(Symbol(),Period(),"m_TMA_speed",TMA_TF,TMA_HalfLength,TMA_Price,TMA_ATRMult,TMA_ATRPer,TMA_Interpolate,2,1);
    TMA2    = iCustom(Symbol(),Period(),"m_TMA_speed",TMA_TF,TMA_HalfLength,TMA_Price,TMA_ATRMult,TMA_ATRPer,TMA_Interpolate,0,1);
    TMA3    = iCustom(Symbol(),Period(),"m_TMA_speed",TMA_TF,TMA_HalfLength,TMA_Price,TMA_ATRMult,TMA_ATRPer,TMA_Interpolate,1,1);

Period() на PERIOD_M5

 
Если установить вместо Period() значение любого ТФ, отличного от того на котором производится торговля значения буферов не соответствуют действительности!!! Для помощи в решении этой проблемы тема и создана
 
serdon:
Если установить вместо Period() значение любого ТФ, отличного от того на котором производится торговля значения буферов не соответствуют действительности!!! Для помощи в решении этой проблемы тема и создана

Что-то мне подсказывает, что всё совсем не так. Когда-то делал по нему советника. Давно. Вообще никаких проблем с ним не было.

Куда-то не туда смотрите и не то вводите/передаёте/считываете...

Блин, ну выведите в комментарий все данные, получаемые с индикатора, чтоб вас Алерт не задолбал. Не забудьте, что если работаете на М1, а данные берёте с М5, так и читайте данные на М5 в окне данных, а не на М1. А на М1 смотрите что вам советник в комментариях пишет.

 
попробуйте сами если не сложно...
 
serdon:
попробуйте сами если не сложно...
Ничё, что люди заняты ещё своими делами?... Мне вот пока совсем некогда за вас искать ошибки. Чем могу уж ... Звиняйте...
 
artmedia70:
Ничё, что люди заняты ещё своими делами?... Мне вот пока совсем некогда за вас искать ошибки. Чем могу уж ... Звиняйте...


Ну что же и на том спасибо, дали направление где искать.... буду пробовать....
 
serdon:
тогда вопрос, как комментарии сделать?
   TMA1    = iCustom(Symbol(),Period(),"m_TMA_speed",TMA_TF,TMA_HalfLength,TMA_Price,TMA_ATRMult,TMA_ATRPer,TMA_Interpolate,2,1);
   TMA2    = iCustom(Symbol(),Period(),"m_TMA_speed",TMA_TF,TMA_HalfLength,TMA_Price,TMA_ATRMult,TMA_ATRPer,TMA_Interpolate,0,1);
   TMA3    = iCustom(Symbol(),Period(),"m_TMA_speed",TMA_TF,TMA_HalfLength,TMA_Price,TMA_ATRMult,TMA_ATRPer,TMA_Interpolate,1,1);
   
   Comment ("\nTMA1 = "+DoubleToStr(TMA1,Digits)+
            "\nTMA2 = "+DoubleToStr(TMA2,Digits)+
            "\nTMA3 = "+DoubleToStr(TMA3,Digits)
            );
 

На реале все четко показывает!!! УРА!!!!! ОГРОМНОЕ СПАСИБО ЗА НАСТАВЛЕНИЯ!!!

а при пригоне в тестере нет... наверное там уже перерисованные данные?

Причина обращения: