Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 935

 
Diese Frage: ist es möglich, die Indizierung von Array-Elementen um 1 Einheit zu verschieben, ohne ein weiteres ähnliches Array zu erstellen und Element für Element Informationen aus dem ersten Array in dieses zu kopieren (und dann wieder zurück)? In der Tat, in MT4 ist es irgendwie in Arrays von Zeitreihen getan (wenn ein neuer Balken gebildet wird, ist der Index 0 zugewiesen, und die Indizes aller vorherigen Elemente des Arrays sind um 1 Einheit verschoben).
 
FxRoller:
Guten Morgen, alle! Diese Frage: ist es möglich, die Indizierung von Array-Elementen um 1 Einheit zu verschieben, ohne ein weiteres Array wie dieses und Element für Element Kopieren von Informationen aus dem ersten Array (und dann zurück) in es erstellen? In der Tat, in MT4 ist es irgendwie in Arrays von Zeitreihen getan (wenn ein neuer Balken gebildet wird, ist der Index 0 zugewiesen, und die Indizes aller vorherigen Elemente des Arrays sind um 1 Einheit verschoben).

Ich schließe mich der Frage an: Es wäre praktisch, die eingebaute Funktion zu verwenden, um die N-Dimension des Arrays um M Elemente nach rechts oder nach links zu verschieben.

Soweit ich weiß, müssen Sie jetzt durch eine Schleife, die die Größe des Arrays definiert, verschieben. Es ist schwieriger, dynamisch zu arbeiten (+Daten gehen nicht verloren).

 
kosmos0975:

Ich schließe mich der Frage an: Es wäre praktisch, die eingebaute Funktion zu verwenden, um die N-Dimension des Arrays um M Elemente nach rechts oder nach links zu verschieben.

Soweit ich weiß, müssen Sie jetzt durch eine Schleife, die die Größe des Arrays definiert, verschieben. Schwierigere dynamische Nutzung (+Daten gehen nicht verloren).

Hilft die Funktion SetIndexShift() nicht?

Legt die Verschiebung der Indikatorlinie relativ zum Anfang des Diagramms fest.

voidSetIndexShift(
intindex,// Zahl
int shift// shift
);

Parameter

Index

[in] Laufende Nummer der Zeile. Muss zwischen 0 und 7 liegen.

Schicht

[in] Verschiebungswert in Takten.

Zurückgegebener Wert

Nein.

Hinweis

Ein positiver Wert verschiebt das Linienbild nach rechts, ein negativer Wert verschiebt es nach links. Der für den aktuellen Balken berechnete Wert wird mit dem angegebenen Offset relativ zum aktuellen Balken gezeichnet.

Beispiel:

 

Sie können ein Array auch mit einem Offset in sich selbst kopieren.

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

Das Array wird also mit einem Versatz von 1 Element in sich selbst kopiert. Die Null wird verworfen, und der letzte Eintrag ist leer. Ich habe es zwar nicht ausprobiert, aber ich denke, dass man die letzten drei Parameter der Funktion korrekt einstellen kann.

 
AlexeyVik:

Sie können ein Array auch mit einem Offset in sich selbst kopieren.

Das Array wird also mit einem Versatz von 1 Element in sich selbst kopiert. Die Null wird verworfen, und der letzte Eintrag ist leer. Den umgekehrten Weg, also das Wegwerfen des letzten Elements, habe ich nicht ausprobiert, aber ich denke, dass die letzten drei Parameter der Funktion richtig gesetzt werden können.


Ich habe es nicht ausprobiert, aber es könnte nützlich sein, die Indizierungsrichtung zu ändern.

P.S. Ich habe einige Fragen zum Strategietester. Können Sie helfen?

 
kosmos0975:

Ich habe es noch nicht ausprobiert, aber eine Änderung der Indizierungsrichtung könnte sich als nützlich erweisen.

P.S. Es gibt Fragen zum Strategie-Tester. Können Sie helfen?

Meinen Sie, dass Sie die Indizierungsrichtung ändern müssen, nachdem Sie ein Array in sich selbst kopiert haben? Ist das notwendig? Ich denke, es wird kein Problem sein, vom Null-Index ohne den letzten zu kopieren und vom ersten einzufügen, während der Null-Index entweder leer oder der alte Wert bleibt, egal, denn dieses Verfahren wird nicht nur zum Kopieren benötigt, sondern speziell, um einen der Array-Werte (Null oder letzter) durch einen neuen zu ersetzen. Dementsprechend wird nach dem Kopieren das "leere" Element mit dem neuen Wert gefüllt. Und es spielt keine Rolle, was noch darin war.

Auf Tester, wenn ich kann - ich werde helfen. Aber hier gibt es noch mehr Würdige, die vorschlagen können.

 

Die Steuersignale und die Kontrolle der offenen Positionen werden durch den Indikator ausgeführt. Befehle zum Öffnen und Schließen von Positionen werden über die globalen Variablen des Terminals an den Expert Advisor gesendet.

Die Verwendung von Indikatoren ist praktisch, denn es gibt viele Indikatoren, und man kann die Arbeit mehrerer logischer Blöcke gleichzeitig sehen.

Frage. Im Strategietester kann der Indikator mit der Funktion OrderSelect(),OrdersTotal(), etc. arbeiten.

 
AlexeyVik:

Meinen Sie, dass Sie die Richtung der Indizierung umkehren müssen, nachdem Sie das Array in sich selbst kopiert haben? Ist das wirklich notwendig? Ich denke, dass es kein Problem sein wird, vom Null-Index ohne den letzten zu kopieren und vom ersten einzufügen, während der Null-Index entweder leer oder der alte Wert bleiben wird, egal, weil dieses Verfahren nicht nur für das Kopieren benötigt wird, sondern speziell, um einen der Array-Werte (Null oder letzter) durch einen neuen zu ersetzen. Dementsprechend wird nach dem Kopieren das "leere" Element mit dem neuen Wert gefüllt. Und es spielt keine Rolle, was noch darin war.

Auf Tester, wenn ich kann - ich werde helfen. Aber hier gibt es noch mehr Würdige, die vorschlagen können.

Vor dem Kopieren und danach.
 
Nicht überprüft, aber was hindert Sie daran, es selbst zu überprüfen? Sie müssen nur die Vorlage mit allen Indikatoren unter dem EA-Namen speichern. Wenn Sie den EA dann im Tester starten, werden alle Indikatoren geladen und funktionieren wahrscheinlich korrekt. Es ist jedoch möglich, dass sie Werte aus den Registerkarten "Handel" und "Kontoverlauf" übernehmen.
 
kosmos0975:
Vor dem Kopieren und danach.
Warum kratzen Sie sich mit dem Finger der linken Hand am rechten Ohr? Oder Fuß... Ich habe nur gesagt, dass die zweite Option mangels Notwendigkeit nicht getestet wurde. Aber logischerweise würde es ohne Probleme funktionieren.