Da sich das Resultat eines unzutreffenden Algorithmus mit der Implementationssprache bei äquivalenter Implementation nicht ändern kann, ist das Resultat natürlich auch mit MT4 FALSCH.
Da muss nicht nur 1-2-fix auf irgendein Datum gesehen werden, sondern ein Test-Szenario existieren, welches die gewünschten Daten den real erhaltenen gegenüber stellt. Das Herausholen der Originaldaten mittels einfachem FileWrite und die externe Sortierung mit einem x-beliebigem Sortierprogramm sollten kein Problem sein.
Mit einem zusätzlichem ArrayInitialize(Result, 0.0); in Zeile 11 sieht es noch viel schlechter aus, da bleiben von 256 Input-Monaten nur 40 übrig.
Aber die Aufgabe ist dank der fertigen Sortierfunktionen ohnehin obsolet.
Da muss nicht nur 1-2-fix auf irgendein Datum gesehen werden, sondern ein Test-Szenario existieren, welches die gewünschten Daten den real erhaltenen gegenüber stellt. Das Herausholen der Originaldaten mittels einfachem FileWrite und die externe Sortierung mit einem x-beliebigem Sortierprogramm sollten kein Problem sein.
Mit einem zusätzlichem ArrayInitialize(Result, 0.0); in Zeile 11 sieht es noch viel schlechter aus, da bleiben von 256 Input-Monaten nur 40 übrig.
Aber die Aufgabe ist dank der fertigen Sortierfunktionen ohnehin obsolet.
Quellcode
- #define FILE_NAME_BEFORE "Test_Vikke_sort.original.dat"
- #define FILE_NAME_AFTER "Test_Vikke_sort.processed.dat"
- int start()
- { double CloseCopy[];
- double Result[];
- ArrayCopy(CloseCopy, Close);
- ArrayCopy(Result , Close);
- writeArray(FILE_NAME_BEFORE, CloseCopy);
- sort_arr(CloseCopy, Result);
- writeArray(FILE_NAME_AFTER, Result);
- return(0);
- }
- void sort_arr(double & input[], double & output[])
- { for ( int k = 0; k < ArraySize(input); k ++ )
- { if ( input[k] > output[0] )
- output[0] = input[k];
- for ( int j = 1; j < ArraySize(output); j ++ )
- if ( input[k] >= output[j] && input[k] < output[j - 1] )
- output[j] = input[k];
- } }
- void writeArray(string fileName, double & series[])
- { int output = FileOpen(fileName, FILE_WRITE | FILE_CSV);
- for ( int seriesIndex = 0; seriesIndex < ArraySize(series); seriesIndex ++ )
- FileWrite(output, series[seriesIndex]);
- FileClose(output);
- }