Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 660

 
Igor Makanu:

dieser Code funktioniert, machen Sie es analog:

Minimale Änderungen vorgenommen - OrderMagicNumber()-Analyse entfernt und drei Protokolle hinzugefügt.
Das Ergebnis ist leider das gleiche - siehe pr. - Auf dem ersten Screenshot gibt es einen Anfang (es ist unklar, warum er nicht mit 0 beginnt), und auf dem zweiten, wo er mit 124 bis 99 beginnt.

int NumberOfOrders()
{
int i,res=0,k=OrdersTotal(); string sy=Symbol();

for(i=0; i<k; i++)
{
log("k = " + k +"; ");
log("i = " + i +"; ");
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderSymbol()==sy)) res++; //if((OrderMagicNumber()==magic_) && (OrderSymbol()==sy)) res++;
log("res = " + res +"; ");

}
}
return(res);
}

Dateien:
test_1.png  6 kb
test_2.png  6 kb
 
Alexey Viktorov:
Lässt sich dieser Code wirklich ohne Fehler kompilieren? Ich kann es nicht glauben...
Was lässt Sie daran zweifeln? In jedem Fall produziert MQL4 keine Fehler.
 
Algotrader18:

(es ist unklar, warum sie nicht mit 0 beginnt), und an der zweiten Stelle, wo sie von 124 auf 99 kommt.

da das Terminal einen Teil von Print() "gefressen" hat, hat die Ausgabe in MQL die niedrigste Priorität, fügen Sie Slepp(123) vor Print() ein und es gibt keine Auslassungen

obwohl Sie dem Protokoll zufolge nur den Schleifenzähler ausgeben

 
Igor Makanu:

da der Terminal "ate" Teil von Print(), in MQL Ausgabe die niedrigste Priorität hat, fügen Sie Slepp(123) vor Print() ein und es wird keine Auslassungen geben

obwohl Sie dem Protokoll zufolge nur den Schleifenzähler ausgeben

Das ist sehr interessant - können Sie etwas genauer werden? Wie funktioniert dieser Prozess des "Essens"?

Ihre Antwort vermittelt mir den Eindruck, dass ich "gegessen" habe - er hat es einfach nicht ins Protokoll geschrieben, weil es wichtigere Dinge gab, aber meine eigentliche Aufgabe war es, alle Aufträge durchzugehen und bestimmte zu löschen, und ich habe bemerkt, dass der EA einige von ihnen übersprungen hat (dies war keine Ausgabe von Informationen mit der niedrigsten Priorität). Ich habe die Aufgabe vereinfacht, um den Grund zu verstehen, und als Ergebnis haben wir nur die Ausgabe im Protokoll, aber ich sehe immer noch ausgelassene Aufträge, d.h. der Expert Advisor springt über mehrere Aufträge. Die niedrigste Auftragspriorität erklärt gut die Startausgabe nicht von 0, aber wie kann es inkonsistente Ausgabe erklären, wenn es springt, zum Beispiel, von 124 bis 99.

Wenn wir mit "gegessen" etwas anderes meinen, würde ich gerne verstehen, was?
Dateien:
test_2.png  6 kb
 
neverness:

Das ist großartig!

Roman!

Ich zum Beispiel bin ein erfolgreicher Händler mit 20 Jahren Erfahrung.

Ich verstehe nicht, warum Sie "die Differenz zwischen den Schlusskursen der von Ihnen eingegebenen Paare undeinem gleitenden Durchschnitt dieser Paare" benötigen.

Und wissen Sie, wie man einen gleitenden Durchschnitt aus diesen Differenzen bildet? - Fantastisch!

Können Sie einfach den gleitenden Durchschnitt der Notierungen zeichnen? - Auch nicht?

Wo liegt also das Problem?

die Differenz der Schlussdurchschnitte ist nicht gleich der Differenz der Schlussdurchschnitte, ach und weh

 
Algotrader18:
Was sind die Zweifel? Jedenfalls keine Fehler in MQL4.

1. Lernen Sie, wie man Code einfügt.

Algotrader18:

Ich habe nur minimale Änderungen vorgenommen - die OrderMagicNumber()-Analyse entfernt und drei Protokolle hinzugefügt.
Das Ergebnis ist leider das gleiche - siehe oben. - Auf dem ersten Screenshot der Anfang (ich weiß nicht, warum es nicht mit 0 beginnt), und auf dem zweiten - die Stelle, wo es mit 124 bis 99 beginnt.

int NumberOfOrders()
  {
   int i,res=0,k=OrdersTotal(); string sy=Symbol();
  
   for(i=0; i<k; i++)
     {
      log("k = " + k +"; ");
      log("i = " + i +"; ");
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if((OrderSymbol()==sy)) res++;  //if((OrderMagicNumber()==magic_) && (OrderSymbol()==sy)) res++;
         log("res = " + res +"; ");
        
        }
     }
   return(res);
  }

2. log ist ein Logarithmus.

Hinweis

Sie können log()anstelle von MathLog() verwenden.

MathLog - Математические функции - Справочник MQL4
MathLog - Математические функции - Справочник MQL4
  • docs.mql4.com
MathLog - Математические функции - Справочник MQL4
 
Roman Sharanov:

Ich habe auch einen schwerwiegenden Nachteil gefunden, es gibt zu viele CopyClose()-Aufrufe

Können Sie mir sagen, wie ich Kurse aus einem Array von Währungspaaren in eine Schleife kopieren kann?

Das scheint ein Doppel-Array zu sein, aber MQL unterstützt es nicht, wie %.

Was meinen Sie mit "Doppelanordnung"?

 
Alexey Viktorov:

Was meinen Sie mit "Doppelanordnung"?

Nun, zweidimensional.

 
Roman Sharanov:

Gut zweidimensional.

Wo steht geschrieben, dass CopyClose Daten in ein 2D-Array kopiert? Warum wurde das 2D-Array überhaupt erwähnt?

 
Alexey Viktorov:

Wo steht geschrieben, dass CopyClose Daten in ein 2D-Array kopiert? Warum wurde die zweidimensionale Anordnung erwähnt?

Weil ich Arrays von Anführungszeichen in einem Array speichern muss

Um es einmal in einer Schleife zu kopieren und dann Berechnungen mit ArrayCopy, aber nicht CloseCopy durchzuführen

Grund der Beschwerde: