[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 262

 
dzhini:
Подскажите, как определить ценовую координату графического объекта типа OBJ_LABEL?

Воспользуйтесь ObjectGet с параметрами OBJPROP_XDISTANCE, OBJPROP_YDISTANCE
 

1 вопрос.Если в в скобках за название массива указано число 10, то значит в том массиве 11 элементов

2 вопрос. Надо чтоб небыло после  конец_набора   в массиве нулей, были бы все цлозе цены от  Разрешить_набор до  конец_набора . Правильно ли делаю  ArrayResize?

//глобальные 
цена[10];
int i = -1;
//-------------------
int start()
{
    if(!TF_F_NewBar())return(0);
    if(Разрешить_набор == true)
    {
        i++;
        ArrayResize(цена, i);     //я так понимаю, что массив цена[10] останется цена[0] (разрешается ли так ?), 
                                           //т.е. одно место в массиве в котором записан ноль
. Так с каждым шагом (баром) будем

                                           //увеличивать размер массива
        цена[i] = Close[1];       // в этот одноместный массив я вместо нуля записываю Close[1]. Если так разрешается, 
                                           // то тогда в глобальных переных можно указать минимальный массив цена[0];

   }
   if(конец_набора== true)
   {
       Обработка данных массива ;

      i = -1;  //после обработки возвращаемся в исходное положение
   }
}

 Извеняюсь, что не так вставил код как положено. 

 
gince:

1 вопрос.Если в в скобках за название массива указано число 10, то значит в том массиве 11 элементов


Такой массив содержит 10 ячеек с индексами элементов от 0 до 9. Т.е. первый элемент будет находится в ячейке 1 с индексом 0, именно поэтому в операторе for перебор элементом массива начинается с 0.

2 вопрос. Надо чтоб небыло после  конец_набора   в массиве нулей, были бы все цлозе цены от  Разрешить_набор до  конец_набора . Правильно ли делаю  ArrayResize?

Вы хотите в массив занести 10 цен close последних 10 баров?

  Извеняюсь, что не так вставил код как положено. 

Всегда можно подправить то, что написали, Просто нажмите на "Правка".


 
paladin80:

Вы хотите в массив занести 10 цен close последних 10 баров?

Всегда можно подправить то, что написали, Просто нажмите на "Правка".


Нет не 10, а Разрешить_набор до конец_набора. Это может быть и  40, и 65.Надо чтоб небыло после конец_набора в массиве нулей
 
gince:
Нет не 10, а Разрешить_набор до конец_набора. Это может быть и  40, и 65.Надо чтоб небыло после конец_набора в массиве нулей


Все норм, только в начале задавайте массив сразу как динамический:

double цена[];

...

int init ()

{

…

ArrayResize (цена,0);

…

}

int start ()

{

…

}

 
gince:
Нет не 10, а Разрешить_набор до конец_набора. Это может быть и  40, и 65.Надо чтоб небыло после конец_набора в массиве нулей

double цена[]; // динамический массив
int    начало=2; // 0 (ноль) это текущий, ещё не закрытый бар
int    конец=45;
int    количество;
//---
int init()
  {
   количество=конец-начало; // =43
   ArrayResize(цена, количество); // устанавливается размер массива - 43 ячейки
   return(0);
  }

//---
int start()
  {
    if(!TF_F_NewBar()) return(0);    
    if(Разрешить_набор == true)
    {
      for (int i=0; i<=количество-1; i++) // заполнить 43 ячейки с индексом от 0 до 42.
                                          // в ячейке 0 будет цена close для бара 2 и т.д.
      цена[i]=Close[i+начало];   
    }
   return(0);
  }
//---
 
paladin80:

Я незнаю сколько в массиве должно быть элементов.  Это может быть и 40, и 65. Одним словом нужен динамический массив

double цена[]; // динамический массив

int i = -1;
//---
int init()
  {
   ArrayResize(цена, 0); // устанавливается размер массива минимальным - 1 ячейка
   return(0);
  }

//---
int start()
  {
    if(!TF_F_NewBar()) return(0);    
    if(Разрешить_набор == true)                // это сигнал по индюку
    {
      //Пришел новый бар и резрешение есть 
      i++.                                     //увеличиваем индех            
      ArrayResize(цена, i)
      цена[i]=Close[i];   
   }
   if(конец_набора== true)   // это сигнал по индюку
   {
      //----
      //работа с массивом
      //----
      Pазрешить_набор == false; 
      i= -1;
//А тут
надо что нибуть делать с бывшим массивом (уменшить, очистить или еще что то)      
   }
   return(0);
 }
//---
 
gince:

Я незнаю сколько в массиве должно быть элементов.  Это может быть и 40, и 65. Одним словом нужен динамический массив

Спрошу с другой стороны. Для чего вам надо в массив заполнять цены close? double close[] сам по себе уже есть массивом цен close.
 
paladin80:
Спрошу с другой стороны. Для чего вам надо в массив заполнять цены close? double close[] сам по себе уже есть массивом цен close.
Мне без разницы это клосе и опен. Самое главное , чтоб они были от сих до сих.   Потом фильтрую.  Фильтрация должна проводится имено в этом периоде от сих до сих. После того как отфильтровался массив, по нему каким он получился переделываю другой массив с другими данными. А уже по последнему массиву черчу. Так что этот массив, про который спросили, только промежуточный.
 
Сейчас на каждом баре он заносит один клозе в массив. А если так несобирать, потом мне придется подщитывать с какого бара собирать данные, крутить цикл, фильтроват. А так остается только последнее.