[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 644

 
Myth63:


Die Sache ist, dass ich nicht wirklich gut in MQL-Programmierung und meine EA basiert auf der BASIC-Prinzipien =) Einem offenen Auftrag wird eine Variable zugewiesen. Das Terminal sagt, dass ich neu eingeloggt wurde und der Wert dieser Variable verschwindet, wenn der Auftrag geöffnet wird. Wenn dies geschieht, sollte das Terminal die offenen Positionen überprüfen und diese Werte den Variablen zuweisen, die vom Roboter zugewiesen wurden. Und der Expert Advisor zeigt im Test gute Werte an.

Je nachdem, was Sie speichern wollen (welche Informationen), können verschiedene Optionen verwendet werden:

  • können die Informationen über die Bestellung in ihrem Kommentar gespeichert und dann aus dem Kommentar gelesen werden;
  • die gewünschten Informationen in eine Datei geschrieben werden können - ein langsamer Prozess;
  • Die am häufigsten verwendete Variante ist, sie in globale Variablen des Terminals zu schreiben.
 
FelixFX:

Wenn Sie nichts dagegen haben, hier ist ein Beispiel. Soweit ich das verstanden habe, werden die Daten nicht aktualisiert, bis die Schleife ausgeführt wird?
int start()
{
//----
    while (!IsStopped() && IsExpertEnabled())
    {fMineFunction();}
//----
    return (0);
}
 
TarasBY:

Werden in diesem endlosen Zyklus nur dieselben Daten verwendet? Werden die Daten mit einem neuen Häkchen aktualisiert oder nicht?
 
Myth63:


Die Sache ist, dass ich nicht sehr gut in MQL-Programmierung und meine EA basiert auf Bacyca Prinzipien =) Einem offenen Auftrag wird eine Variable zugewiesen. Das Terminal sagt, dass ich neu eingeloggt wurde und der Wert dieser Variable verschwindet, wenn der Auftrag geöffnet wird. Ich frage mich, wie man die Prüfung auf offene Positionen durchführen kann, wenn es ein Overlog gibt, und wie man diese Werte den Variablen zuweist, die von einem Roboter gesetzt wurden.

Meinen Sie die magische Zahl? Nicht genug Informationen, um Ihnen zu helfen... was ist die Variable und wie ist sie zugeordnet - das ist, wo Sie anfangen müssen.

Aber mein Expert Advisor zeigt im Test gute Ergebnisse.

100 Berufe sind keine Lektüre, sondern ein gutes Stück Geschichte. Ein paar tausend Transaktionen über 2-3 Jahre sind etwas, dem man vertrauen kann.
 
FelixFX:

Werden in diesem endlosen Zyklus nur dieselben Daten verwendet? Werden die Daten mit einem neuen Häkchen aktualisiert oder nicht?
Nein. Damit es aktualisiert wird, muss es das sein. Die Frage nach der Schleifenbildung wird von der Suchmaschine der Website beantwortet, die angibt, wie viele Seiten sie zurückgibt. Lesen Sie es.
 
FelixFX:

Werden in diesem endlosen Zyklus nur dieselben Daten verwendet? Werden die Daten mit dem neuen Häkchen aktualisiert oder nicht?
Die Schleife ermöglicht es Ihnen, Ihre Funktion in einer "Schleife" auszuführen, ohne auf den nächsten Tick zu warten. Nach welchen Daten fragen Sie?
 
Bitte teilen Sie mir mit, ob es eine eingebaute Funktion gibt, mit der ich eine Funktion ausführen kann, die ich nur bei der Eröffnung eines jeden Balkens und nicht bei jedem Tick geschrieben habe. Es scheint einfach zu sein, den Code von Hand zu schreiben, aber wenn ein Teil des Codes nach Ticks und ein Teil nach Balken ausgeführt wird, wird das Programm sehr verwirrend.)
 
Qwertee:
Bitte teilen Sie mir mit, ob es eine eingebaute Funktion gibt, mit der ich eine von mir geschriebene Funktion nur bei der Eröffnung jedes Balkens und nicht bei jedem Tick ausführen kann. Es ist nicht schwer, von Hand zu schreiben, aber wenn ich einen Code nach Ticks und einen anderen nach Balken ausführe, wird es sehr verwirrend. Vielen Dank.

Sie stellen also einfach fest, wann ein neuer Balken geöffnet wird, und führen Ihre Funktion aus.

Sie können das Erscheinen eines neuen Taktes bestimmen, indem Sie sich die Eröffnungszeit des Taktes merken und sie mit der aktuellen Zeit des Taktes 0 vergleichen. Wenn die neue Zeit länger ist als die vorherige, dann haben wir einen neuen Balken.

 

sergeev danke für den Rat, es scheint zu funktionieren)

Ok, noch eine Sache.

In meinem EA habe ich diese Verzweigung:

if(period=="M15")
{
//Prüfung auf Eröffnung des Kaufs
Alert(buysell);

if(kauftverkauf=="kaufen")

Warnung(1);

.............

}

Im Grunde genommen ein verschachteltes Wenn. ABER. die Bedingung if(period=="M15") ist erfüllt und Alert liefert ein Ergebnis und kauft, aber die Bedingung if(buysell=="buy") ist nicht erfüllt und der Befehl Alert(1) wird nicht einmal gestartet. verdammt, beide Bedingungen sind sogar syntaktisch gleich, aber warum ist eine erfüllt und die andere nicht?

 
sergeev:

Sie stellen also einfach fest, wann ein neuer Balken geöffnet wird, und führen Ihre Funktion aus.

Sie können das Erscheinen eines neuen Taktes bestimmen, indem Sie sich die Eröffnungszeit des Taktes merken und sie mit der aktuellen Zeit des Taktes 0 vergleichen. Wenn die neue Zeit länger ist als die vorherige, dann haben Sie einen neuen Balken.

Ich werde es aufschreiben:

int time.marker;

void start() {
   if(time.marker!=Time[0]) {
      time.marker=Time[0];
      // тут то что буде исполнятся только на открытии бара
      }
   // тут то что буде исполнятся на каждом тике
   }