Интересный вопрос для гуру. Определение ближайшего значения из массива.

 

Все добрый день!

Вот тут такой еще вопросик появился в работе над советником.

Есть массив из 6 значений (уровни дневные). Вот сижу ломаю голову как бы сделать определение ближайшего уровня.

Например хочу купить по цене 166.30, есть уровень в 166.25 и 166.48, 166. 85

Как объяснить ему, что ближайший уровень 166.48?

Спасибо, Ред. :)

 
Ну есть функция возвращающая меньшее число из двух.
Разницу от цены и уровней сравнивайте. Меньшее - ближнее. Надеюсь понятно.
 
Если сможете объяснить  всем почему 166.48 ближе к 166.30, чем 166. 25, то вам непременно помогут объяснить это советнику.
 

Yurixx: Ну я имел в виду, что когда покупаешь - ближайшее по направлению сделки будет 166.48.

meta-trader2007: Спасибо, понял. Как просортировать я понял - ArraySort, а, что бы выделить элемент из массива использовать ArrayInitialize или можно как-то проще? Вроде $Array[0], $Array[1]. Если по аналогии с пхп.

 
int start()
{
 double Array[6]={166.85,165.98,166.48,166.25,165.65,167.37};
 double price=166.30;
 ArraySort(Array);
 for (int x=0;x<6;x++)
 {
  if (Array[x]-price>0) break;
 }
 Print("Level = ",Array[x]);
}
Можно так, если я всё правильно понял.
 
Red.Line писал (а):

Yurixx: Ну я имел в виду, что когда покупаешь - ближайшее по направлению сделки будет 166.48.


meta-trader2007: Спасибо, понял.  Как просортировать я понял - ArraySort, а, что бы выделить элемент из массива использовать ArrayInitialize или можно как-то проще?  Вроде $Array[0], $Array[1]. Если по аналогии с пхп.


 


Как в PHP не знаю - не знаком с этим языком, знаю только ХТМЛ :-)
Думаю через $Array[х]
 

Вот! Огромное всем спасибо! То, что надо! :)

 
Xupypr:
int start()
{
 double Array[6]={166.85,165.98,166.48,166.25,165.65,167.37};
 double price=166.30;
 ArraySort(Array);
 for (int x=0;x<6;x++)
 {
  if (Array[x]-price>0) break;
 }
 Print("Level = ",Array[x]);
}
Можно так, если я всё правильно понял.


Никак не получается задать эррэй с переменными. Вот, помогите, пож. разобраться! А то, что-то не могу найти в описании про это.

   double pvtlvl1=iCustom(NULL,1440, "Pivot",0,0);
   double pvtlvl2=iCustom(NULL,1440, "Pivot",1,0);
   double pvtlvl3=iCustom(NULL,1440, "Pivot",2,0);
   double pvtlvl4=iCustom(NULL,1440, "Pivot",3,0);
   double pvtlvl5=iCustom(NULL,1440, "Pivot",4,0);
   double pvtlvl6=iCustom(NULL,1440, "Pivot",5,0);
   double pvtlvl7=iCustom(NULL,1440, "Pivot",6,0);
 
   double Pivot[7]={pvtlvl1,pvtlvl2,pvtlvl3,pvtlvl4,pvtlvl5,pvtlvl6,pvtlvl7};

Выдает:

'}' - comma or semicolon expected
'pvtlvl2' - variable already defined

'pvtlvl3' - variable already defined
'pvtlvl4' - variable already defined
'pvtlvl5' - variable already defined
'pvtlvl6' - variable already defined

Воспринимает только 1ый и последний. :(

 
   double pvtlvl1=iCustom(NULL,1440, "Pivot",0,0);
   double pvtlvl2=iCustom(NULL,1440, "Pivot",1,0);
   double pvtlvl3=iCustom(NULL,1440, "Pivot",2,0);
   double pvtlvl4=iCustom(NULL,1440, "Pivot",3,0);
   double pvtlvl5=iCustom(NULL,1440, "Pivot",4,0);
   double pvtlvl6=iCustom(NULL,1440, "Pivot",5,0);
   double pvtlvl7=iCustom(NULL,1440, "Pivot",6,0);
 
        double Pivot;
        int array Pivot[7]={pvtlvl1,pvtlvl2,pvtlvl3,pvtlvl4,pvtlvl5,pvtlvl6,pvtlvl7};

'Pivot' - comma or semicolon expected (1198, 19)

:(

 
int start()
{
 double Array[7];
 double price=166.30;
 
 Array[0]=iCustom(NULL,1440, "Pivot",0,0);
 Array[1]=iCustom(NULL,1440, "Pivot",1,0);
 Array[2]=iCustom(NULL,1440, "Pivot",2,0);
 Array[3]=iCustom(NULL,1440, "Pivot",3,0);
 Array[4]=iCustom(NULL,1440, "Pivot",4,0);
 Array[5]=iCustom(NULL,1440, "Pivot",5,0);
 Array[6]=iCustom(NULL,1440, "Pivot",6,0);
 
 ArraySort(Array);
 for (int x=0;x<6;x++)
 {
  if (Array[x]-price>0) break;
 }
 Print("Level = ",Array[x]);
}
тогда так
 

Спасибо! :)

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