Fragen von Anfängern MQL4 MT4 MetaTrader 4 - Seite 22

 
A1exPit:
Ich meinte, dass, wenn Daten in ein Array übergeben wird, wird es in sequentieller Reihenfolge, d.h. array1[] = x; in welcher Zelle wird Wert x geschrieben werden, wenn die Zellennummer nicht direkt angegeben wird?

Nein. Wenn Sie alle Zellen mit demselben Wert füllen wollen , verwenden Sie ArrayInitialize().

Wenn Sie verschiedene Werte schreiben wollen, verwenden Sie die Schleife sequentiell. Wenn Sie in eine bestimmte Zelle schreiben müssen, geben Sie deren Adresse an.

 
Vitalie Postolache:

Nein. Wenn Sie alle Zellen mit demselben Wert füllen wollen , verwenden Sie ArrayInitialize().

Wenn Sie verschiedene Werte schreiben wollen, verwenden Sie die Schleife sequentiell. Wenn Sie in eine bestimmte Zelle schreiben müssen, geben Sie deren Adresse an.

Ich danke Ihnen,

Hier ist eine weitere Frage: durch ArrayCopy, werde ich in der Lage sein, ein neues Array mit Größe gleich der Anzahl der gefüllten Zellen in der vorherigen erstellen? Oder sollte ich zuerst ein zweites Array erstellen und erst dann kopieren?

int  ArrayCopy(
   void&        dst_array[],         // куда копируем
   const void&  src_array[],         // откуда копируем
   int          dst_start=0,         // с какого индекса пишем в приемник
   int          src_start=0,         // с какого индекса копируем из источника
   int          count=WHOLE_ARRAY    // сколько элементов
   );
 
A1exPit:

Ich danke Ihnen,

Hier ist eine weitere Frage: mit ArrayCopy, kann ich ein neues Array mit der gleichen Größe wie die Anzahl der gefüllten Zellen in der vorherigen erstellen? Oder muss ich erst ein zweites Array erstellen und dann kopieren?

int  ArrayCopy(
   void&        dst_array[],         // куда копируем
   const void&  src_array[],         // откуда копируем
   int          dst_start=0,         // с какого индекса пишем в приемник
   int          src_start=0,         // с какого индекса копируем из источника
   int          count=WHOLE_ARRAY    // сколько элементов
   );
Natürlich zuerst schaffen.
 
Vitalie Postolache:
Natürlich zuerst schaffen.
Ich danke Ihnen nochmals.
 
Spread = MarketInfo(Symbol(),MODE_SPREAD);
if ( Spread >= 0 ) ExtSpread [x] = Spread;
if ( TimeCurrent() - iTime( NULL, 0, 0) >= 60 ){
int Spread2[x];
ArrayCopy( Spread2[],ExtSpread[],0,0, WHOLE_ARRAY);}
x=x+1;
if (x > 1000) x = 0;

So schreibe ich den Spread-Wert in ExtSpread[], und wenn der einminütige Balken vorbei ist, verschiebe ich ihn in ein anderes Array - das theoretisch bis zum nächsten Balken überleben sollte.

Größe ExtSpread[1000]

Eine weitere Frage: Wenn das Array von Null an nummeriert ist, ist die letzte Zelle bei einer Größe von 1000 dann 999?

Dann ist es richtig: x++ und wenn ( x > 999 ) x=0;

 
A1exPit:
Spread = MarketInfo(Symbol(),MODE_SPREAD);
if ( Spread >= 0 ) ExtSpread [x] = Spread;
if ( TimeCurrent() - iTime( NULL, 0, 0) >= 60 ){
int Spread2[x];
ArrayCopy( Spread2[],ExtSpread[],0,0, WHOLE_ARRAY);}
x=x+1;
if (x > 1000) x = 0;

So schreibe ich den Spread-Wert in ExtSpread[], und wenn der einminütige Balken vorbei ist, verschiebe ich ihn in ein anderes Array - das theoretisch bis zum nächsten Balken überleben sollte.

Größe ExtSpread[1000]

Eine weitere Frage: Wenn das Array von Null an nummeriert ist, ist die letzte Zelle bei einer Größe von 1000 dann 999?

Dann ist es richtig: x++ und wenn ( x > 999 ) x=0;

Spread = (int)MarketInfo(Symbol(),MODE_SPREAD);
if ( Spread >= 0 ) ExtSpread [x] = Spread;
if ( TimeCurrent() - iTime( NULL, 0, 0) >= 60 ){
int Spread2[];ArrayInitialize (Spread2,EMPTY_VALUE); ArrayResize( Spread2,x,0);
ArrayCopy( Spread2,ExtSpread,0,0, WHOLE_ARRAY);}
x=x+1;
if (x > 999) x = 0;
 
Guten Tag! Könnten Sie mir bitte sagen, ich habe die mt4 636 Version auf Android heruntergeladen, aber es sieht nicht die Liste der Makler. Wird die Terminalversion nicht mehr unterstützt?(( Wenn ja, wo kann ich eine funktionierende Version herunterladen?
 

Aufgeschoben:

scomoroh, 2016.12.04 18:58

Bei der Kompilierung tritt ein Fehler auf. Was ist das Problem? Helfen Sie mit, es zu lösen!
Dateien:
 
Vladimir Karputov:

Aufgeschoben:

scomoroh, 2016.12.04 18:58

Während der Kompilierung wird ein Fehler angezeigt. Was ist das Problem? Helfen Sie mir, es zu lösen!

ArrayInitialize(max,0) =>ArrayInitialize(arr,0);

for(int a=1;a<=pr;a++) =>for(int a=1;a<pr;a++)

Dies ist ein sehr nicht-optimaler Code, das Terminal hängt für ein paar Minuten, wenn es gestartet wird, und dann wird es sehr langsam sein, und wenn Sie es mit mehreren Charts laufen lassen, dann wird es überhaupt nicht funktionieren

 
Vitalie Postolache:

ArrayInitialize(max,0) =>ArrayInitialize(arr,0);

for(int a=1;a<=pr;a++) =>for(int a=1;a<pr;a++)

Dies ist ein sehr nicht optimaler Code, das Terminal hängt beim Starten für ein paar Minuten, und dann wird es sehr langsam, und wenn Sie es mit mehreren Charts laufen lassen, dann wird es überhaupt nicht funktionieren

Ja, danke, alles repariert, keine Fehler. Verzögerungen, ja, sehr. Können Sie mir sagen, in welche Richtung ich optimieren muss, oder muss ich alles neu schreiben?