|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Verwendung dynamischer Arrays in mql4
Ich beschäftige mich gerade mit effektiveren Möglichkeiten Arrays zu befüllen und bin auf diesen Artikel gestoßen: https://www.mql5.com/de/articles/567
Es geht mir um den Punkt: "Verwendung dynamischer Arrays" im Artikel. Der Author beschreibt dort leider nur die Variante für mql5, doch das Ergebnis ist beachtlich. Ich hab mich dran versucht und stehe gedanklich auf dem Schlauch wie ich das Problem in mql4 lösen kann. Hier der Code: Code:
#property strict #property indicator_chart_window int size1=0,size2=0; double Element[]; class CDynamicArray2 { private: int m_ChunkSize, m_ReservedSize, m_Size; public: void CDynamicArray2(int ChunkSize=1024) {m_Size=0; // Number of active elements m_ChunkSize=ChunkSize; // Chunk size m_ReservedSize=ChunkSize; // Actual size of the array ArrayResize(Element,m_ReservedSize); // Prepare the array } void AddValue(double Value) {m_Size++; // Increase the number of active elements if(m_Size>m_ReservedSize) { // The required number is bigger than the actual array size m_ReservedSize+=m_ChunkSize; // Calculate the new array size ArrayResize(Element,m_ReservedSize); // Increase the actual array size } Element[m_Size-1]=Value; // Add the value } int Size() { return(m_Size); } }; int OnCalculate(const int rates_total,const int prev_calculated, const datetime &time[],const double &open[], const double &high[],const double &low[], const double &close[],const long &tick_volume[], const long &volume[],const int &spread[]) { int n=200000; CDynamicArray2 da; for(int k=0;k<n;k++) { da.AddValue(k); } size2=ArraySize(Element); PrintFormat("Chunk Array: "+(string)size2); // Message regarding the amount of time required to perform the second option PrintFormat("Durchläufe: "+(string)n); // Message regarding the amount of time required to perform the second option return(rates_total); } Mein Ziel ist natürlich eine korrekte Arbeitsweise mit dem Vorteil der Zeitersparnis bei der Berechnung. Kann man das überhaupt so umschreiben, dass die Funktion für mt4 Sinn macht? Und lässt sich diese Funktion auch variabel einsetzen, so das ich den Code nicht für jedes Array anpassen muss? |
|
|||
Ich mach das nicht so umständlich.
Bei jedem zusätzlichen Wert, der in das Array geschrieben wird, kommt automatisch ein Resize hinzu. Damit ist immer nur soviel genutzt wie gebraucht. PHP-Code:
Gruss |
Lesezeichen |
Stichworte |
array, arrays, arrays befüllen, dynamisch, dynamische arrays, mql4, programmierung, programmierung metatrader, programmierung mql4 |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|