За красоту хвалю!
Но не первый раз замечаю, что участники номинаций перепутаны местами, хаотически, я бы даже сказал, расположены… Это от скорости изготовления наглядных материалов так происходит?
Wasiliew Wasilij, нет, такой алгоритм.
например, «топ падения» если просто отсортировать по % изменения будет так:
но мне не очень нужен шлак, поэтому после сортировки всех инструментов по % изменения, отбираю N первых, сортирую новый список по объему торгов по убыванию, и получаю
Маркин Павел, «топ-падения» — это у кого больше в процентах упало? Допустим, первый фильтр — по объёму. Тогда почему итоговый ряд такой "-11,21;-3,121;-3,836;-3,850;-5(!),629;-3,497;-3,54;-5(!),103;-5,148;-3,370;-4,606" и т.д. — ?! «Хде логика»? Именно потому, что «по объёму»? То есть, взят список объёма и выкинуты зелёные квадраты?
Wasiliew Wasilij, нет не выкинуты зеленые, так бы у меня Газпром, лукойл, мосбиржа остались)))
1. сначала сортировка всех бумаг по % изменения
2. формируется новый список из первых N позиций (в данном случае 59)
3. новый список сортируется по объёму
4. из нового списка отбирается 40 первых позиций.
если бы сначала была бы сортировка по объёму, а потом по цене, то в конечный список не попали бы бумаги с меньшими объёмами, но большим % изменения или попали бумаги с большим объёмом но маленьким % изменения.
первые мне не нужны из-за низкой ликвидности
а вторые из-за маленького изменения.
Wasiliew Wasilij, про эксель без понятия, у меня это выглядит так:
procedure calc_lider01(form_Height,form_Width:integer); var i:integer;
begin for i:=0 to DSRC^.DSindex-1 do begin TREELIST[i].id_index:=i;
TREELIST[i].SortValue:=0; if (DSRC^.DSource[i].history_loaded) and (DSRC^.DSource[i].day_volume>0) then TREELIST[i].SortValue:=((DSRC^.DSource[i].lastprice-DSRC^.DSource[i].CANDLES[DSRC^.DSource[i].size-1].Close)/DSRC^.DSource[i].CANDLES[DSRC^.DSource[i].size-1].Close); TREELIST[i].Value:=exp(4*LN((LN(DSRC^.DSource[i].day_volume+25000))));
end; qSortTreeList(TREELIST,0,DSRC^.DSindex-1);
for i:=0 to TREEMAXCOUNT*3 div 2 do begin TREELIST[i].SortValue:=TREELIST[i].Value; end; qSortTreeList(TREELIST,0,TREEMAXCOUNT*3 div 2);
Маркин Павел, человекочасы сэкономил;0 или машиночасы… Майнишь, что ли?!))))))))))) скопируй пару строчек из начала в конец, пусть корректно выглядит итог!
Wasiliew Wasilij, Итог корректен.
Упрощенные условия отбора: Выбрать N элементов с наибольшим весом и % роста(снижения) больше уровня G. Произвести сортировку по убыванию веса.
Но не первый раз замечаю, что участники номинаций перепутаны местами, хаотически, я бы даже сказал, расположены… Это от скорости изготовления наглядных материалов так происходит?
например, «топ падения» если просто отсортировать по % изменения будет так:
но мне не очень нужен шлак, поэтому после сортировки всех инструментов по % изменения, отбираю N первых, сортирую новый список по объему торгов по убыванию, и получаю
1. сначала сортировка всех бумаг по % изменения
2. формируется новый список из первых N позиций (в данном случае 59)
3. новый список сортируется по объёму
4. из нового списка отбирается 40 первых позиций.
если бы сначала была бы сортировка по объёму, а потом по цене, то в конечный список не попали бы бумаги с меньшими объёмами, но большим % изменения или попали бумаги с большим объёмом но маленьким % изменения.
первые мне не нужны из-за низкой ликвидности
а вторые из-за маленького изменения.
что сэкономил?
Упрощенные условия отбора:
Выбрать N элементов с наибольшим весом и % роста(снижения) больше уровня G. Произвести сортировку по убыванию веса.