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

 

Доброго времени. Нормализую значит значения, а в отладке цифры с *е как так то?

Не могу записать значения в ексель 

Если другой параметр присвоить массиву (arrayZ[0][q][z] = 0;) то, сохраняет 

for(int z = 0; z < copied && z<=ARRAY_SIZE_X; z++) // отбор по барам
   {
    arrayIndexY[z] = srcArr[z].close; //данные колонки У

    for(int q = 1; q <= copied-1; q++) //Перебор периодов
    {
  
    {
    qer = NormalizeDouble(sm.d[q-1].m[nBar-z],Digits());
    wer = NormalizeDouble(sm.d[q].m[nBar-z],Digits());
    arrayZ[0][q][z] = NormalizeDouble(qer-wer,Digits());} // ответы с е, че заааа


    }
      
   }
   flag = false;
        
   GenerateCsv("test.csv");  
   }
Файлы:
d4rw9gqntl.jpg  157 kb
 
Top2n:

Доброго времени. Нормализую значит значения, а в отладке цифры с *е как так то?

Не могу записать значения в ексель 

Если другой параметр присвоить массиву (arrayZ[0][q][z] = 0;) то, сохраняет 

for(int z = 0; z < copied && z<=ARRAY_SIZE_X; z++) // отбор по барам
   {
    arrayIndexY[z] = srcArr[z].close; //данные колонки У

    for(int q = 1; q <= copied-1; q++) //Перебор периодов
    {
  
    {
    qer = NormalizeDouble(sm.d[q-1].m[nBar-z],Digits());
    wer = NormalizeDouble(sm.d[q].m[nBar-z],Digits());
    arrayZ[0][q][z] = NormalizeDouble(qer-wer,Digits());}
    qer;

    }
      
   }
   flag = false;
        
   GenerateCsv("test.csv");  
   }
DoubleToString() используйте для вывода в печать.
 
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] 

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