Сортирует многомерный числовой массив по возрастанию значений в первом измерении.
bool ArraySort( void&array[]// массив для сортировки );
Параметры
array[]
[in][out] Числовой массив для сортировки.
Возвращаемое значение
Возвращает true в случае успеха, иначе false.
Примечание
Массив всегда сортируется по возрастанию, независимо от значения флагаAS_SERIES.
Функции ArraySort и ArrayBSearch принимают в качестве параметра массив любой размерности, при этом сортировка и поиск происходят только по первому (нулевому) измерению.
Вопрос конечно ни мне, но у меня в справочнике написано следующее
Сортировка числовых массивов по
первому измерению. Сортировка производится с учетом флага AS_SERIES.
bool ArraySort( void&array[]// массив для сортировки int count=WHOLE_ARRAY, // количество элементов int start=0, // начальный индекс int direction=MODE_ASCEND// направление сортировки );
Параметры
array[]
[in][out]
Числовой массив для сортировки.
count
[in]
Количество элементов.
start
[in]
Начальный индекс.
direction
[in]
Направление сортировки массива. Возможные значения:
MODE_ASCEND -
сортировка в порядке возрастания
MODE_DESCEND
- сортировка в порядке убывания.
Возвращаемое значение
Возвращает true в случае
успеха, иначе false.
Пример:
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//--- пример сортировки одномерного массиваdouble num_array[5]={4,1,6,3,9};
//--- массив содержит величины 4,1,6,3,9ArraySort(num_array);
//--- теперь массив отсортирован 1,3,4,6,9ArraySort(num_array,WHOLE_ARRAY,0,MODE_DESCEND);
//--- теперь массив отсортирован 9,6,4,3,1//--- пример сортировки двумерного массива по первому измерению //--- заполнение массива 5x2int DataArray[5][2]={{7,3},{3,1},{57,14},{12,4},{11,1}};
//--- сортировка массива DataArray[][] по первому измерению (по возрастанию значений)ArraySort(DataArray,WHOLE_ARRAY,0,MODE_ASCEND);
//--- вывод результатовfor(int i=0; i<5; i++)
{
string str="index "+IntegerToString(i)+": ";
for(int j=0; j<2; j++)
{
if(j==0) str+="{"; else str+=",";
str+=IntegerToString(DataArray[i,j]);
if(j==1) str+="}";
}
Print(str);
}
//--- результат //index 0: {3,1}//index 1: {7,3}//index 2: {11,1}//index 0: {12,4}//index 4: {57,14}
}
Vladimir Deryagin: Спасибо, огромное! Будем дальше пытаться бороздить ваш не простой мир mql. )))
Ну если только осваиваете, то покажу пример работы передачи параметров по ссылке, преимущество в том, что не нужно гонять несколько раз циклы, ну а через return более одного параметра передать нельзя:
voidOnStart() {
// инициализируем переменныеint Index=1; // какую позицию читать (0-самая новая)double Profit1=0; // получим её профитdouble Lot1=0; // лотdouble OpenPrice1=0; // цену открытияdatetime OpenTime1=0; // время открытия// 1 ----------------------------------------------------------------+Comment("\nНомер позиции от последней: ",GetOpenPosInfo(Profit1, Lot1, OpenPrice1, OpenTime1, Index, Symbol(), OP_BUY/*только бай*/, 10/*Magic: 10*/),
"\n Профит: ",Profit1,
"\n Лот ",Lot1,
"\n Время открытия: ",OpenTime1,
"\n Цена открытия: ",OpenPrice1
);
// 2 ----------------------------------------------------------------+
Comment("\nНомер позиции от последней: ",GetOpenPosInfo(Profit1, Lot1, OpenPrice1, OpenTime1, Index, Symbol(), OP_SELL/*только селл*/, 0/*Magic: 0*/),
"\n Профит: ",Profit1,
"\n Лот ",Lot1,
"\n Время открытия: ",OpenTime1,
"\n Цена открытия: ",OpenPrice1
);
// 3 ----------------------------------------------------------------+
Comment("\nНомер позиции от последней: ",GetOpenPosInfo(Profit1, Lot1, OpenPrice1, OpenTime1, Index), // все по текущему символу с любым Magic"\n Профит: ",Profit1,
"\n Лот ",Lot1,
"\n Время открытия: ",OpenTime1,
"\n Цена открытия: ",OpenPrice1
);
// 4 ----------------------------------------------------------------+
GetOpenPosInfo(Profit1, Lot1, OpenPrice1, OpenTime1, Index, Symbol(), OP_BUY/*только бай*/, -1/*Magic: все*/);
Comment("\n Профит: ",Profit1,
"\n Лот ",Lot1,
"\n Время открытия: ",OpenTime1,
"\n Цена открытия: ",OpenPrice1
);
}
//===============================================================================================//------------------ Возвращает информацию об открытой позиции по индексу ----------------------+//===============================================================================================int GetOpenPosInfo(double &ProfPos, double &LotPos, double &OpPrice, datetime &OpTime, int index=0, string symb="0", int type=-1, int mg=-1) {
double p[];
int c=-1, pr=0;
if(symb=="0") { symb=Symbol();}
for (int i=OrdersTotal()-1; i>=0; i--) {
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if(OrderType()==OP_BUY || OrderType()==OP_SELL) {
if((OrderSymbol()==symb||symb=="")&&(type<0||OrderType()==type)&&(mg<0||OrderMagicNumber()==mg)) {
c++;
ArrayResize(p, c+1);
p[c]=OrderTicket();
}}}}
// если есть позицииif(c>0) {
ArraySort(p, WHOLE_ARRAY, 0, MODE_DESCEND);
pr=c>=index?index:c;
if(OrderSelect((int)p[pr], SELECT_BY_TICKET)) {
LotPos=OrderLots();
OpTime=OrderOpenTime();
OpPrice=OrderOpenPrice();
ProfPos=OrderProfit()+OrderSwap()+OrderCommission();
}
}
return(index);
}
Блоки комментариев подставляйте по порядку, не все сразу. Всё, с темы ушёл.
Ну если только осваиваете, то покажу пример работы передачи параметров по ссылке, преимущество в том, что не нужно гонять несколько раз циклы, ну а через return более одного параметра передать нельзя:
Блоки комментариев подставляйте по порядку, не все сразу.
Интересно, но как то не привычно :) на досуге будем посмотреть! Комментарии мне пока ни к чему но в будущем всё сгодится. Спасибо!
Ну если только осваиваете, то покажу пример работы передачи параметров по ссылке, преимущество в том, что не нужно гонять несколько раз циклы, ну а через return более одного параметра передать нельзя:
Блоки комментариев подставляйте по порядку, не все сразу. Всё, с темы ушёл.
Опять... Сортировка по тикету. Тикеты не всегда идут с увеличением.
успехов
ArraySort
Сортирует многомерный числовой массив по возрастанию значений в первом измерении.
bool ArraySort(
void& array[] // массив для сортировки
);
Параметры
array[]
[in][out] Числовой массив для сортировки.
Возвращаемое значение
Возвращает true в случае успеха, иначе false.
Примечание
Массив всегда сортируется по возрастанию, независимо от значения флага AS_SERIES.
Функции ArraySort и ArrayBSearch принимают в качестве параметра массив любой размерности, при этом сортировка и поиск происходят только по первому (нулевому) измерению.
Вопрос конечно ни мне, но у меня в справочнике написано следующее
Справочник MQL4 / Операции с массивами / ArraySort
ArraySort
Сортировка числовых массивов по первому измерению. Сортировка производится с учетом флага AS_SERIES.
bool ArraySort(
void& array[] // массив для сортировки
int count=WHOLE_ARRAY, // количество элементов
int start=0, // начальный индекс
int direction=MODE_ASCEND // направление сортировки
);
Параметры
array[]
[in][out] Числовой массив для сортировки.
count
[in] Количество элементов.
start
[in] Начальный индекс.
direction
[in] Направление сортировки массива. Возможные значения:
MODE_ASCEND - сортировка в порядке возрастания
MODE_DESCEND - сортировка в порядке убывания.
Возвращаемое значение
Возвращает true в случае успеха, иначе false.
Пример:
Вопрос конечно ни мне, но у меня в справочнике написано следующее
Да это у всех написано, просто некоторые не хотят читать и понять, а ещё проще взять и проверить уже готовое.
Vladimir Deryagin, будут вопросы - задавайте.
Удачи!
P.S. Советую сразу писать программы с учётом Magic, так будет проще эксплуатировать в дальнейшем
Да это у всех написано, просто некоторые не хотят читать и понять, а ещё проще взять и проверить уже готовое.
Vladimir Deryagin, будут вопросы - задавайте.
Удачи!
P.S. Советую сразу писать программы с учётом Magic, так будет проще эксплуатировать в дальнейшем
Спасибо, огромное! Будем дальше пытаться бороздить ваш не простой мир mql. )))
Ну если только осваиваете, то покажу пример работы передачи параметров по ссылке, преимущество в том, что не нужно гонять несколько раз циклы, ну а через return более одного параметра передать нельзя:
Блоки комментариев подставляйте по порядку, не все сразу. Всё, с темы ушёл.
Ну если только осваиваете, то покажу пример работы передачи параметров по ссылке, преимущество в том, что не нужно гонять несколько раз циклы, ну а через return более одного параметра передать нельзя:
Блоки комментариев подставляйте по порядку, не все сразу.
Интересно, но как то не привычно :) на досуге будем посмотреть! Комментарии мне пока ни к чему но в будущем всё сгодится. Спасибо!
Ну если только осваиваете, то покажу пример работы передачи параметров по ссылке, преимущество в том, что не нужно гонять несколько раз циклы, ну а через return более одного параметра передать нельзя:
Блоки комментариев подставляйте по порядку, не все сразу. Всё, с темы ушёл.
Опять... Сортировка по тикету. Тикеты не всегда идут с увеличением.
Ладно, сниму временный игнор на ваши сообщения в свой адрес.
Покажите мне ДЦ, где тикеты открываются в разнобой, а не по порядку в сторону увеличения.
Ладно, сниму временный игнор на ваши сообщения в свой адрес.
Покажите мне ДЦ, где тикеты открываются в разнобой, а не по порядку в сторону увеличения.
Спросите у Решетова он наступал на эти грабли.
Тикеты от отмененных отложек снова идут в ход.