Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 731
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ist 10.000 x 10.000 nicht zweidimensional?
und so weiter...
Nun, ja, es ist zweidimensional, aber so habe ich es nicht ausgedrückt, offenbar ist es keine Matrix, sondern ein Array. Bedeutet eine Matrix Multidimensionalität?
Was in diesem Code bremst, ist nicht das Schreiben eines Arrays, sondern eine Schleife in einer Schleife.
Einverstanden. Das war nicht so gemeint und wurde missverstanden.
Was in diesem Code bremst, ist nicht das Schreiben des Arrays, sondern die Schleife in der Schleife.
Ist es notwendig, auf eine andere Programmierumgebung zu portieren, oder ist dies nicht ein allgemeines Problem für alle Arten von Sprachen? Was kann die Lösung für eine Beschleunigung sein?
Wenn eine Schleife und erhöhen den Wert der Variable aus der gelöschten Schleife
{
int arr++
if(arr=ARRAY_SIZE_X) {z++;arr=0;}
arra[q]=sm.d[q].m[nBar-z]; // M(I) SMA
}
//--- запишем данные массива в конец файла FileTell IsFileLineEnded
FileSeek(handle,0,SEEK_END);
FileWriteArray(handle,arra);
Ich hätte es überprüfen können, aber ich will den Computer nicht belasten - wenn er nicht schneller wird, wird die Festplatte wieder zusätzlich belastet)))
Ist es notwendig, auf eine andere Programmierumgebung umzusteigen, oder ist dies nicht ein allgemeines Problem für alle Arten von Sprachen? Was kann die Lösung für eine Beschleunigung sein?
Wenn eine Schleife den Wert einer Variablen aus einer gelöschten Schleife erhöht, wird sie dann schneller?
Ich könnte es überprüfen, aber ich will den Computer nicht quälen, wenn es nicht beschleunigt ist, wird es wieder zusätzlichen Stress auf der Festplatte setzen)))
Können Sie das Array nicht nach der Schleife schreiben? Ist es möglich, sie nur in jede Zeile zu schreiben? Ich beziehe mich auf die erste Variante, bei der sich die Schleife in der Schleife befindet.
Natürlich können Sie zusätzlich einen Zähler einfügen und in diesen Zähler schreiben, nicht in jede Zeile einzeln, aber es ist unwahrscheinlich, dass dies den Prozess so sehr beschleunigt, dass es ohne Messung auffällt.
Ein Array dieser Größe würde nicht in das zugewiesene RAM passen.
Natürlich können Sie einen Zähler hinzufügen und in diesen Zähler schreiben, nicht in jede Zeile einzeln, aber es ist unwahrscheinlich, dass dies den Prozess so sehr beschleunigt, dass es ohne Messung auffällt.
Bitte beachten Sie, dass die Dokumentation (und auch der Compiler) sagt, dass: "DasAS_SERIES-Flag kann nicht für mehrdimensionale Arrays gesetzt werden.
Frage: Wie kann ich ein Array in mql5 sortieren?
void Func()
{
double m[][3];
if(условия)
{
// много кода
c++;
ArrayResize(m, c);
m[c-1][0]= Lots();
m[c-1][1]= Ticket();
m[c-1][2]= Profit();
}
BySort(m); // передаём в функцию "BySort"
}
void BySort(double &mas[][3])
{
// Сортируем по размеру лота от большего к меньшему
ArraySort(mas);
ArraySetAsSeries(mas,true); // при такой записи mql5 ругается, в mql4 работает
... здесь работа с массивом и основной код
}Bitte beachten Sie, dass die Dokumentation (und auch der Compiler) sagt, dass: "DasAS_SERIES-Flag kann nicht für mehrdimensionale Arrays gesetzt werden".
Frage: Wie kann man das Array sortieren?
if(условия)
{
// много кода
c++;
ArrayResize(m, c);
m[c-1][0]= Lots();
m[c-1][1]= Ticket();
m[c-1][2]= Profit();
}
void BySort(double &mas[][3])// выделенное лишнее
{
// Сортируем по размеру от большего к меньшему
ArraySort(mas, WHOLE_ARRAY, 0, MODE_DESCEND); // вот это не работает в mql5
ArraySort(mas);
ArraySetAsSeries(mas,true); // а при такой записи ругается // это тоже лишнее
}
1 - er ändert die Richtung der Indizierung der Array-Zellen, ohne deren Inhalt zu ändern und 2 - er ändert den Inhalt der Zellen, ohne deren Indizierung zu ändern, so dass sie in aufsteigender oder absteigender Reihenfolge sortiert werden.
Außerdem sagt die Dokumentation, dass das Array nur nach der ersten Dimension sortiert werden kann.
AS_SERIES und Sortierung sind völlig unterschiedliche Konzepte.
1 - ändert die Richtung der Indizierung der Array-Zellen, ohne deren Inhalt zu ändern, und 2 - ändert den Inhalt der Zellen, ohne die Indizierung zu ändern, so dass sie in aufsteigender oder absteigender Reihenfolge sortiert werden.
Außerdem sagt die Dokumentation, dass das Array nur nach der ersten Dimension sortiert werden kann.
Hier wird in aufsteigender Reihenfolge sortiert
Wie kann ich es jetzt rückgängig machen? Es muss in absteigender Reihenfolge sein, es ist eine Sortierung von Losen.
Hier wird in aufsteigender Reihenfolge sortiert
Wie kann ich es jetzt rückgängig machen? Sie brauchen sie in absteigender Reihenfolge, sie sortiert die Lose.
Und die dümmste Option ist, das gesamte Feld in umgekehrter Reihenfolge neu zu schreiben. Ist es das wert?
Hier wird in aufsteigender Reihenfolge sortiert
Wie kann ich es jetzt rückgängig machen? Sie brauchen sie in absteigender Reihenfolge, sie sortiert die Lose.
Was passiert, wenn Sie nach der Sortierung die Indizierungsreihenfolge mit ArraySetAsSeries ändern?
Dann geht es so: