Danke für deinen Code-Post. Es hat mir Zeit gespart. Ich habe versucht, die MQL-Arrays zu verwenden und sie waren verwirrend. Ich war dann sehr deprimiert, dass ich wieder brauchen, um grundlegende Strukturen zu schreiben, die dort sein sollte, aber dann fand ich Ihren Code, der mir einige Zeit der Forschung auf Arrays gespeichert und wie man sie wachsen\increase dynamisch zu machen. Großartiger Dank.
Ich hoffe, ich kann mich revanchieren! Der folgende Code funktioniert für alle Datentypen. Er funktioniert auch bei Objekten, aber die Methode Contains (search) funktioniert möglicherweise nicht. Ich habe es nur mit den Typen double, int und bool getestet. Bei String könnte es ebenfalls Probleme geben und der Code muss eventuell erweitert werden.
Dann können Sie es für alle Typen deklarieren, die Sie wie folgt benötigen:
Ich hoffe, das hilft jedem
Bitte ignorieren Sie meinen obigen Vorschlag, das dynamische Array für jeden Datentyp zu verwenden. Es ist bereits eine generische CArrayList deklariert. bitte verwenden Sie diese. Ich bin auf ein Problem bei der Verwendung von Objekten gestoßen, das in diesem Thread behoben wurde: https: //www.mql5.com/en/forum/358432
Es scheint ein Fehler in der Funktion arrayResize(), in dem Beispiel der Inhalt des Arrays ist 1, 1, 3 in normalen Indizierung nicht 1, 2, 3. Siehe dieses Beispiel:
//+------------------------------------------------------------------+//|false.mq5 |//|Urheberrecht 2024, MetaQuotes Ltd. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2024, MetaQuotes Ltd."#property link"https://www.mql5.com"#property version"1.00"#property indicator_chart_window//+------------------------------------------------------------------+//| Benutzerdefinierte Initialisierungsfunktion für Indikatoren |//+------------------------------------------------------------------+intOnInit()
{
//--- Zuordnung von Indikatorpuffern//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Benutzerdefinierte Indikator-Iterationsfunktion|//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---double ar[]; // ArrayArrayResize(ar,2); // Bereiten Sie das Array vor
ar[0]=1; // Einstellen der Werte
ar[1]=2;
ArraySetAsSeries(ar,true); // Ändern Sie die IndizierungsreihenfolgeArrayResize(ar,3); // Vergrößerung des Arrays
ar[0]=3; // Den Wert für das neue Array-Element festlegenAlert(ar[0]," ",ar[1]," ",ar[2]); // Array-Werte druckenArraySetAsSeries(ar,false);
Alert("Normal indexing: ", ar[0]," ",ar[1]," ",ar[2]); // Array-Werte drucken//--- Rückgabe des Wertes von prev_calculated für den nächsten Aufrufreturn(rates_total);
}
//+------------------------------------------------------------------+
In der hinzugefügten Funktion arraySetAsSeries() scheint es von der Funktion arrayresieze betroffen zu sein, siehe dieses Beispiel:
//+------------------------------------------------------------------+//|Fehlerindex.mq5 |//|Urheberrecht 2024, MetaQuotes Ltd. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2024, MetaQuotes Ltd."#property link"https://www.mql5.com"#property version"1.00"#property indicator_chart_window//+------------------------------------------------------------------+//| Benutzerdefinierte Initialisierungsfunktion für Indikatoren |//+------------------------------------------------------------------+intOnInit()
{
//--- Zuordnung von Indikatorpuffern//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Benutzerdefinierte Indikator-Iterationsfunktion|//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---double ar[]; // ArrayArrayResize(ar,2); // Bereiten Sie das Array vor
ar[0]=9; // Einstellen der Werte
ar[1]=8;
ArrayResize(ar,6); // Vergrößerung des ArraysAlert("Normal resize: ", ar[0]," ",ar[1]," ",ar[2]," ", ar[3], " ", ar[4], " ", ar[5]);
ArraySetAsSeries(ar,true); // Ändern Sie die IndizierungsreihenfolgeArrayResize(ar,4); // Vergrößerung des ArraysArraySetAsSeries(ar, false);
Alert("See the random element added: ", ar[0]," ",ar[1]," ",ar[2]," ", ar[3]);
ArraySetAsSeries(ar,true); // Ändern Sie die Indizierungsreihenfolge 0
ar[0]=8; // Den Wert für das neue Array-Element festlegenAlert("Modify the first as serlies: ", ar[0]," ",ar[1]," ",ar[2]," ", ar[3]); // Array-Werte drucken//--- Rückgabe des Wertes von prev_calculated für den nächsten Aufrufreturn(rates_total);
}
//+------------------------------------------------------------------+
Schritte:
1. ar = {} 2. ar = {9, 8}
3. ar = {9, 8, 0, 8, 0, 0}
4. Als Serie true einstellen:
ar = {0, 0, 8, 0, 8, 9}
5. Größe auf 4 ändern
ar = {0, 0, 8, 0}
6. Als Serie false einstellen:
ar = {0, 8, 0, 0}
7. Als Serie true einstellen:
ar = {0, 0, 8, 0}
8. Ändern Sie das erste Element a[0]
ar = {8, 0, 8, 0}
Ich weiß nicht, was array resize (3 -5) nimmt die Werte und kopiert sie in die neuen Positionen, 6 in forward nimmt zufällige Werte, denke ich. Ich bevorzuge resize() zuerst und dann setasseries() wie diese:
//+------------------------------------------------------------------+//|indexingarraytest.mq5 |//|Urheberrecht 2024, MetaQuotes Ltd. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2024, MetaQuotes Ltd."#property link"https://www.mql5.com"#property version"1.00"#property indicator_chart_window//+------------------------------------------------------------------+//| Benutzerdefinierte Initialisierungsfunktion für Indikatoren |//+------------------------------------------------------------------+intOnInit()
{
//--- Zuordnung von Indikatorpuffern//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Benutzerdefinierte Indikator-Iterationsfunktion|//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---double ar[]; // ArrayArrayResize(ar,2); // Bereiten Sie das Array vor
ar[0]=1; // Einstellen der Werte
ar[1]=2;
ArrayResize(ar,3); // Vergrößerung des ArraysAlert("Redimension to 3 normal: ", ar[0], " ", ar[1], " ", ar[2]);
ArraySetAsSeries(ar,true); // Ändern Sie die IndizierungsreihenfolgeAlert("Redimension to 3 series: ", ar[0], " ", ar[1], " ", ar[2]);
ar[0]=8; // Den Wert für das neue Array-Element festlegenAlert("Change the first element: ", ar[0]," ",ar[1]," ",ar[2]); // Array-Werte druckenArraySetAsSeries(ar, false);
Alert("Normal renew: ", ar[0]," ",ar[1]," ",ar[2]); // Array-Werte drucken//--- Rückgabe des Wertes von prev_calculated für den nächsten Aufrufreturn(rates_total);
}
//+------------------------------------------------------------------+
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Ok, versuchen wir die englische Version von MQL.
Danke für deinen Code-Post. Es hat mir Zeit gespart. Ich habe versucht, die MQL-Arrays zu verwenden und sie waren verwirrend. Ich war dann sehr deprimiert, dass ich wieder brauchen, um grundlegende Strukturen zu schreiben, die dort sein sollte, aber dann fand ich Ihren Code, der mir einige Zeit der Forschung auf Arrays gespeichert und wie man sie wachsen\increase dynamisch zu machen. Großartiger Dank.
Ich hoffe, ich kann mich revanchieren! Der folgende Code funktioniert für alle Datentypen. Er funktioniert auch bei Objekten, aber die Methode Contains (search) funktioniert möglicherweise nicht. Ich habe es nur mit den Typen double, int und bool getestet. Bei String könnte es ebenfalls Probleme geben und der Code muss eventuell erweitert werden.
Dann können Sie es für alle Typen deklarieren, die Sie wie folgt benötigen:
Ich hoffe, das hilft jedem
Bitte ignorieren Sie meinen obigen Vorschlag, das dynamische Array für jeden Datentyp zu verwenden. Es ist bereits eine generische CArrayList deklariert. bitte verwenden Sie diese. Ich bin auf ein Problem bei der Verwendung von Objekten gestoßen, das in diesem Thread behoben wurde: https: //www.mql5.com/en/forum/358432
Es scheint ein Fehler in der Funktion arrayResize(), in dem Beispiel der Inhalt des Arrays ist 1, 1, 3 in normalen Indizierung nicht 1, 2, 3. Siehe dieses Beispiel:
In der hinzugefügten Funktion arraySetAsSeries() scheint es von der Funktion arrayresieze betroffen zu sein, siehe dieses Beispiel:Schritte:
1. ar = {}
2. ar = {9, 8}
3. ar = {9, 8, 0, 8, 0, 0}
4. Als Serie true einstellen:
ar = {0, 0, 8, 0, 8, 9}
5. Größe auf 4 ändern
ar = {0, 0, 8, 0}
6. Als Serie false einstellen:
ar = {0, 8, 0, 0}
7. Als Serie true einstellen:
ar = {0, 0, 8, 0}
8. Ändern Sie das erste Element a[0]
ar = {8, 0, 8, 0}
Ich weiß nicht, was array resize (3 -5) nimmt die Werte und kopiert sie in die neuen Positionen, 6 in forward nimmt zufällige Werte, denke ich. Ich bevorzuge resize() zuerst und dann setasseries() wie diese: