Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 708

 
Artyom Trishkin:
DoubleToString() используйте для вывода в печать.
Спасибо! 
 
Здравствуйте а правда, что тут можно заработать на форуме? Если да то не подскажите как?спасибо 
 
elektrik777:
Здравствуйте а правда, что тут можно заработать на форуме? Если да то не подскажите как?спасибо 
Уже не актуально - такая возможность отключена, но можно программировать, продавать ресурсы компьютера и писать статьи.
 

Доброго времени, Задача: Найти H(max) или L(min) цены в заданном количестве рассматриваемых баров.

По тыркался,  не могу назначить диапазон выбора, то есть куда вставить переменную(DO), для выбора интервала поиска  

double UpperFractal(int DO)  // Фрактал UP
{
  //--- объявление переменных
   int n,UpperFractal_1;
//--- объявление массивов для записи значений буферов индикатора iFractal
   double FractalUp[];
   double UpFractal_1;
//--- сначала нужно записать в массивы значения буферов индиктора Fractal
//--- заполнение данными буфера
   CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_D1),FractalUp);
//--- индексация как в таймсериях
   ArraySetAsSeries(FractalUp,true);
  
//--- далее используем оператор цикла for для поиска первого верхнего фрактала
   for(n=0; n<Bars(Symbol(),PERIOD_CURRENT); n++)
     {
      //--- если непустое значение, прерываем цикл
      if(FractalUp[n]!=EMPTY_VALUE)
         break;
     }
//--- запишем ценовое значение первого фрактала в переменную
   UpFractal_1=FractalUp[n];
//--- запишем индекс первого фрактала в переменную
   UpperFractal_1=n;
  
   return (UpFractal_1);
}


 

 
Top2n:

Доброго времени, Задача: Найти H(max) или L(min) цены в заданном количестве рассматриваемых баров.

По тыркался,  не могу назначить диапазон выбора, то есть куда вставить переменную(DO), для выбора интервала поиска  

double UpperFractal(int)  // Фрактал UP
{
  //--- объявление переменных
   int n,UpperFractal_1;
//--- объявление массивов для записи значений буферов индикатора iFractal
   double FractalUp[];
   double UpFractal_1;
//--- сначала нужно записать в массивы значения буферов индиктора Fractal
//--- заполнение данными буфера
   CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_D1),FractalUp);
//--- индексация как в таймсериях
   ArraySetAsSeries(FractalUp,true);
  
//--- далее используем оператор цикла for для поиска первого верхнего фрактала
   for(n=0; n<Bars(Symbol(),PERIOD_CURRENT); n++)
     {
      //--- если непустое значение, прерываем цикл
      if(FractalUp[n]!=EMPTY_VALUE)
         break;
     }
//--- запишем ценовое значение первого фрактала в переменную
   UpFractal_1=FractalUp[n];
//--- запишем индекс первого фрактала в переменную
   UpperFractal_1=n;
  
   return (UpFractal_1);
}


 

Зачем через фракталы?

Сначала CopyHigh() для требуемого диапазона, а потом в массиве, в который скопирован диапазон, ищете max (ArrayMaximum()).

То же самое для min, но CopyLow() и ArrayMinimum()

 
Спасибо!!!!!
 

Не пойму что не так, задача: найти мин значение на заданном интервале (index)

//+------------------------------------------------------------------+
//| Получим Low для заданного номера бара                            |
//+------------------------------------------------------------------+
double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index)
  {
   double low=0;
   ArraySetAsSeries(Low,true);
   int copied=CopyLow(symbol,timeframe,0,index,Low);
   if(copied>0 && index<copied) low=ArrayMinimum(Low);
   return(low);
  }


 

 
Top2n:

Не пойму что не так, задача: найти мин значение на заданном интервале (index)

//+------------------------------------------------------------------+
//| Получим Low для заданного номера бара                            |
//+------------------------------------------------------------------+
double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index)
  {
   double low=0;
   ArraySetAsSeries(Low,true);
   int copied=CopyLow(symbol,timeframe,0,index,Low);
   if(copied>0 && index<copied) low=ArrayMinimum(Low);
   return(low);
  }


 

ArrayMinimum возвращает ИНДЕКС элемента, значение которого самое минимальное. Нужно по индексу low теперь получить само значение из массива Low:

Low[low] 

 
Vladimir Karputov:

ArrayMinimum возвращает ИНДЕКС элемента, значение которого самое минимальное. Нужно по индексу low теперь получить само значение из массива Low:

Low[low] 

Чет ничего...

//+------------------------------------------------------------------+
//| Получим Low для заданного номера бара                            |
//+------------------------------------------------------------------+
double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int do)
  {
   int low=0; double l=0;
   ArraySetAsSeries(Low,true);
   int copied=CopyLow(symbol,timeframe,0,do,Low);
   if(copied>0 && index<copied){ low=ArrayMinimum(Low);//ArrayMinimum(
   l = Low[low];
   }
   return(l);
  }


 

 
Top2n:

Чет ничего...

//+------------------------------------------------------------------+
//| Получим Low для заданного номера бара                            |
//+------------------------------------------------------------------+
double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index)
  {
   int low=0; double l=0;
   ArraySetAsSeries(Low,true);
   int copied=CopyLow(symbol,timeframe,0,index,Low);
   if(copied>0 && index<copied){ low=ArrayMinimum(Low);//ArrayMinimum(
   l = Low[low];
   }
   return(l);
  }


 

А кто такой в Вашем коде Low?