Page 1 of 1

Werte in einer Serie sortieren

Posted: 28 Jun 2017 17:55
by ThomasL
Hallo zusammen,

ich hab ein Array/Serie mit 100 Werten. Unterschiedliche Zahlenwerte.
Nun würde ich diese Zahlen im Aaray gerne nach ihrem Wert sortieren lassen - aufsteigend oder absteigend.
Eine fertige EXPRESS Funktion für so etwas hab ich leider nicht gefunden. Haben Sie eventuell aber einen "fertigen Codeausschnitt" der mir hier weiterhelfen könnte?

Gruss
Thomas

Re: Werte in einer Serie sortieren

Posted: 29 Jun 2017 11:21
by ThomasL
Muss mich kurz korrigieren. Konkret geht es mir um die Sortierung der Werte in einem Array! (nicht in einer Serie)

Re: Werte in einer Serie sortieren

Posted: 30 Jun 2017 14:50
by WHS Support
Hallo Thomas,

eine fertige Express-Funktion gibt es leider nicht, aber man kann es (relativ) einfach über zwei Schleifen erreichen. Z.B. nach der sog. "bubblesort" Methode:
https://de.wikipedia.org/wiki/Bubblesort

Anbei ein Beispielcode in Express mit dem Close Preis:

Code: Select all

express bubblesort;

vars
series closeSortedSeries;
array closeSorted[1];
numeric i, j, swap, swapped;

calculation
if IsFirstBar() then
begin
  SetArraySize(closeSorted, FinalBarIndex()+1);
end
closeSorted[CurrentBarIndex()] = close;

// Sort
if IsFinalBar() then
begin
  for i = CurrentBarIndex() - 1 downto 0
  begin
    swapped = 0;
    for j = 0 to i
    begin
      if (closeSorted[j] > closeSorted[j+1]) then
      begin
        swap = closeSorted[j];
        closeSorted[j] = closeSorted[j+1];
        closeSorted[j+1] = swap;
        swapped = 1;
      end
    end
    if (swapped = 0) then
      i = -1;
  end
end

// Array -> Series
for i = 0 to GetArraySize(closeSorted) - 1
begin
  closeSortedSeries[CurrentBarIndex()-i] = closeSorted[i];
end

interpretation
begin
end

plot(close,lightblue,1);
plot(closeSortedSeries,lightred,1);
Vielleicht hilft Ihnen dies ja schon weiter.

Beachten Sie jedoch, dass diese Operation sehr rechenintensiv ist.

Mit freundlichen Grüßen,
Timo
WH SELFINVEST

Re: Werte in einer Serie sortieren

Posted: 21 Jul 2017 12:55
by ThomasL
Danke, hat funktioniert.