Как получить из индикатора цену на определенном таймфрейме? - страница 2

 
Taras Slobodyanik:

проще будет копировать одно, нужное значение:

Я тоже так подумал, но может быть ему нужно три?

Судя по коду, читать/писать он умеет

 
Renat Akhtyamov:

Это как угодно.

Тормозить будет - соптимизируете код.

время компиляции на сервере около 2000 мс - это очень много для мультивалютки+мультитайминга  (4 пары, 4 таймфрейма)?
 
Эдуард Климуш:
время компиляции на сервере около 2000 мс - это очень много для мультивалютки+мультитайминга  (4 пары, 4 таймфрейма)?

норм, на деньги не повлияет

)

 
Renat Akhtyamov:

Я тоже так подумал, но может быть ему нужно три?

Судя по коду, читать/писать он умеет

мне прям приятно слышать слова, т.к. я не программист, а проджект менеджер, который за счет своих мозгов пытается сэкономить плюс минус 50 долларов)

Я реализовал таким образом:

для каждой пары тф/символ есть свой  массив, в который мы через copyhigh/copylow, а также с помощью циклов и switch условия заносим данные. Получилось очень громоздкое решение, но рабочее, главное - с одного графика, квадратики в итоге горят так, как надо)

 

 
Renat Akhtyamov:

норм, на деньги не повлияет

)

я к тому, что если мы добавим 30 пар и все таймфреймы, там около 30 секунд будет компилироваться, не положит ли терминал этим?
 
Эдуард Климуш:
я к тому, что если мы добавим 30 пар и все таймфреймы, там около 30 секунд будет компилироваться, не положит ли терминал этим?
нет
 
Taras Slobodyanik:

проще будет копировать одно, нужное значение:

if (((iHigh(_Symbol,_Period, 1)+iLow(_Symbol,_Period, 1))/2)> iHigh(_Symbol,_Period, 2))
  {

 


  }

double iHigh (string symbol,ENUM_TIMEFRAMES timeframe,int index)
{
   if(index < 0) return(-1);
   double Arr[];
   if(CopyHigh(symbol,timeframe, index, 1, Arr)>0)
      return(Arr[0]);
   else return(-1);
}

double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index)
   {
   if(index < 0) return(-1);
   double Arr[];
   if(CopyLow(symbol, timeframe, index, 1, Arr)>0)
      return(Arr[0]);
   else return(-1);
   }

Спасибо огромное, время компиляции снизилось до 300 мс, а код стал намного более расширяемым (вместо _Symbol и _Period подставлял значения функций, определяющих по индексу таймфрейм и символ - все получилось аккуратно и, главное, работает:

for (int x=0; x<4; x++)
{    
for (int y=0; y<4; y++)
            {
            if (((iHigh(aSymbol(y),tf(x), 1)+iLow(aSymbol(y),tf(x), 1))/2)> iHigh(aSymbol(y),tf(x), 2))
               ObjectSetInteger (0,"signal"+IntegerToString(x)+IntegerToString(y), OBJPROP_COLOR, Green);
            else
                {
               if (((iHigh(aSymbol(y),tf(x), 1)+iLow(aSymbol(y),tf(x), 1))/2)< iLow(aSymbol(y),tf(x), 2))
               ObjectSetInteger (0,"signal"+IntegerToString(x)+IntegerToString(y), OBJPROP_COLOR, Red);
               else ObjectSetInteger (0,"signal"+IntegerToString(x)+IntegerToString(y), OBJPROP_COLOR, Gray);
}
  }
}

 

    

 
Эдуард Климуш:

Спасибо огромное, время компиляции снизилось до 300 мс, а код стал намного более расширяемым (вместо _Symbol и _Period подставлял значения функций, определяющих по индексу таймфрейм и символ - все получилось аккуратно и, главное, работает:

for (int x=0; x<4; x++)
{    
for (int y=0; y<4; y++)
            {
            if (((iHigh(aSymbol(y),tf(x), 1)+iLow(aSymbol(y),tf(x), 1))/2)> iHigh(aSymbol(y),tf(x), 2))
               ObjectSetInteger (0,"signal"+IntegerToString(x)+IntegerToString(y), OBJPROP_COLOR, Green);
            else
                {
               if (((iHigh(aSymbol(y),tf(x), 1)+iLow(aSymbol(y),tf(x), 1))/2)< iLow(aSymbol(y),tf(x), 2))
               ObjectSetInteger (0,"signal"+IntegerToString(x)+IntegerToString(y), OBJPROP_COLOR, Red);
               else ObjectSetInteger (0,"signal"+IntegerToString(x)+IntegerToString(y), OBJPROP_COLOR, Gray);
}
  }
}

   

у Вас MQL4?
 
Renat Akhtyamov:
у Вас MQL4?
Насколько я знаю, в mql4 нет функций типа ObjectSetInteger() и ObjectSetString(), а у меня есть>>mql5
 
Renat Akhtyamov:
у Вас MQL4?
Хах, вопрос понятен, прошу прощения, что не туда написал - увидел "новая тема" - и щелкнул, не посмотрев на раздел