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

 

Уважаемые форумчане!!! Я только постигаю азы языка, поэтому сильно не пинайте...

есть индикатор TMA рисующий, как Рафаэль... Я в советнике через буферы индикатора пытаюсь получить значение как в окне данных, при установленном индюке... Но! в окне данных получаю одни значения - правильные, а через буферы получаю значения не верные. Точнее верные, но если без перерисовки... Помогите получить через буферы тоже самое что и в окне данных

Файлы:
 
serdon:

Уважаемые форумчане!!! Я только постигаю азы языка, поэтому сильно не пинайте...

есть индикатор TMA рисующий, как Рафаэль... Я в советнике через буферы индикатора пытаюсь получить значение как в окне данных, при установленном индюке... Но! в окне данных получаю одни значения - правильные, а через буферы получаю значения не верные. Точнее верные, но если без перерисовки... Помогите получить через буферы тоже самое что и в окне данных


Что значит "значения верные, но без перерисовки" ?
 
artmedia70:

Что значит "значения верные, но без перерисовки" ?

если посмотреть код индикатора, о там по-моему сначала идет расчет индикатора, а потом по рассчитанным точкам делается еще один проход этим-же индикатором (т.е. он вызывает самого себя)... похоже что в советнике через буферы передается именно первый проход. А если проще, то выкладываю этот-же индикатор, но без перерисовки, так вот именно его значения получаю через буферы, в а окне данных рисующего индюка другие значения, как-раз нужные мне...
Файлы:
 
serdon:

если посмотреть код индикатора, о там по-моему сначала идет расчет индикатора, а потом по рассчитанным точкам делается еще один проход этим-же индикатором (т.е. он вызывает самого себя)... похоже что в советнике через буферы передается именно первый проход. А если проще, то выкладываю этот-же индикатор, но без перерисовки, так вот именно его значения получаю через буферы, в а окне данных рисующего индюка другие значения, как-раз нужные мне...

Честное слово, чёт так всё у вас запутано... Ну так ... а откуда вы получаете значения в окне данных, с какого индикатора?
 
artmedia70:

Честное слово, чёт так всё у вас запутано... Ну так ... а откуда вы получаете значения в окне данных, с какого индикатора?

Вот часть советника где идет вызов индикатора... Затем отражается информация по индикатору по закрытому бару. Если установить индикатор на при прогоне советника, то видно что в окне данных значения совершенно отличаются от того что получает советник через буферы
Файлы:
sov.mq4  7 kb
 
extern string     c0           = "=======================================================";
extern string     c1           = "|                          ---ПАРАМЕТРЫ ИНДИКАТОРОВ---                         |";
extern string     c2           = "=======================================================";
extern double     GlubInd      = 5,       // Глубина анализа баров - для индикаторов (но не <3 и не >10)


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[11], TMA2[11], TMA3[11];



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

return(0);
}
//+------------------------------------------------------------------+
вот убрал все не нужное... если установить индюк на экран и открыть ОкноДанных "ctrl+d", то значения по алертам в сове не соответствуют данным из окна данных
 
serdon:
вот убрал все не нужное... если установить индюк на экран и открыть ОкноДанных "ctrl+d", то значения по алертам в сове не соответствуют данным из окна данных

А зачем в цикле считываете данные с буферов? Берите с конкретного бара. Вот если алертом выводите значение первого бара, то и в iCustom() вместо i подставьте 1
 

в цикле считываю, чтобы иметь определенное количество значений по конкретному числу баров... но это не имеет значения, даже если убрать цикл и оставить 1, т.е. последний закрытый бар все равно значения индикатора будут не верны!!

 
serdon:

в цикле считываю, чтобы иметь определенное количество значений по конкретному числу баров... но это не имеет значения, даже если убрать цикл и оставить 1, т.е. последний закрытый бар все равно значения индикатора будут не верны!!


Не верны насколько?
 
совершенно не соответствуют положению индикаторных линий... на 5-знаке пипсов на 20 бывает
 
serdon:
совершенно не соответствуют положению индикаторных линий... на 5-знаке пипсов на 20 бывает

А вы его в тестере погоняйте. Он перерисовывает мама-не-горюй: Отсюда и до конца темы ознакомьтесь.