Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Узнай, как растет твой рейтинг
dzhini
160
dzhini 2015.05.16 18:11 

При сортировке массива ArraySort заполняет его 0-ми.

Вначале заполняю массив данными, проверку на заполнение проходит. Потом сортирую массив по методичке:

 ArraySort(DataArray,WHOLE_ARRAY,0,MODE_ASCEND);

 Делаю проверку и весь массив оказывается заполнен 0-ми.

Проверял возвращаемое значение функции, оно всегда было true.

Что делать? 

Dmitry Fedoseev
41255
Dmitry Fedoseev 2015.05.18 14:46  
Проверьте, есть ли что-нибудь в DataArray до сортировки. Возможно массиву размер не задан. Функция  ArraySort  работает нормально.
dzhini
160
dzhini 2015.05.18 18:42  
Integer:
Проверьте, есть ли что-нибудь в DataArray до сортировки. Возможно массиву размер не задан. Функция  ArraySort  работает нормально.

в initе задаю   ArrayResize(Buffer,Period)

если при инициализации буфера ему задавать размерность, то всё равно при сортировке выдаёт 0  

Ihor Herasko
8467
Ihor Herasko 2015.05.18 19:23  
dzhini:

в initе задаю   ArrayResize(Buffer,Period)

если при инициализации буфера ему задавать размерность, то всё равно при сортировке выдаёт 0  

А результат изменения размера проверили?

Чтобы другим не гадать и, возможно, сразу указать на ошибку, приведите весь код, касающийся описанной проблемы. 

dzhini
160
dzhini 2015.05.19 06:17  
//+------------------------------------------------------------------+
//|                                                    Indicator.mq4 |
//|                      Copyright © 2015, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#property indicator_separate_window
#property indicator_buffers 2

#property indicator_color1 Violet
#property indicator_width1 2
#property indicator_color2 Red
#property indicator_width2 2


extern int Period=60;
double Buffer[];
double Buffer2[];

double Count[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,Buffer);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexBuffer(1,Buffer2);
 
   SetIndexBuffer(2, Count);
   SetIndexEmptyValue(2,0); 
  
   ArrayResize(Count,Period);   


//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   
   int   counted_bars=IndicatorCounted();
   int limit, i;
//---- indicator calculation

   if(counted_bars<0) return(-1);
//---- last counted bar will be recounted
   limit=(Bars-counted_bars)-1;

//----   
     for(i = 1; i >= 0; i--) {   // заполнение массива
     
     for(int j = Period; j >= 0; j--) {
      double HL = MathAbs(High[i+j+1]-Low[i+j+1]);
      Count[j] = HL;
      }

      bool Sort=ArraySort(Count,WHOLE_ARRAY,0,MODE_ASCEND);  //сортировка

      for(j = 0; j < Period; j++) {  //проверка
         Print(Count[j]);
      } 
    
      .................
      .................      
    
      } 
           
//----
   return(0);
  }
Alexey Viktorov
5195
Alexey Viktorov 2015.05.19 06:32  
И какой-же результат ты хочешь получить.? Заполняешь массив Count[] а сортируешь и печатаешь значения массива StdDv[]
dzhini
160
dzhini 2015.05.19 13:13  
AlexeyVik:
И какой-же результат ты хочешь получить.? Заполняешь массив Count[] а сортируешь и печатаешь значения массива StdDv[]
Ошибка вышла, но не та, которую вы обозначили. При копировании кода забыл поменять в тексте сообщения StdDv[] на Count[] . Сейчас всё правильно.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий