MetaTrader 4 Build 529 beta mit neuem Compiler veröffentlicht - Seite 126

 
Wahoo:


Die physische Bedeutung besteht darin, zu prüfen, ob das Symbol, dessen Name als String in den Eingabeparametern des EA eingegeben wird, für den Handel verfügbar ist. Der gleiche Code funktioniert in MT5.

Der Code, den ich Ihnen gegeben habe, ist nur ein Beispiel. Es ist ein wenig anders, aber die Bedeutung ändert sich nicht.

P.S. Was ist mit dem Fehler 138 im Prüfgerät?

Code:

Ergebnis:

Prüfen:

if (OrderSend(SYMBOL,OP_BUY,0.1,NormalizeDouble(ask,digits),1000,0,0,"Test",0,0,CLR_NONE)<0) {
   Print("ask = "+DoubleToStr(ask,Digits)+", bid = "+DoubleToStr(bid,Digits)+", digits = "+digits);
   }
Was hält Sie davon ab, nach der Ursache zu suchen?
 
Renat:
Das bedeutet, dass die bestandenen Prüfungen unbrauchbar waren und verworfen wurden.


Ich danke Ihnen für die Übersetzung. Ich hatte mit der Übersetzung zu kämpfen, konnte sie nicht verstehen...

Aber der alte Build braucht etwa 3 Stunden zur Optimierung und findet etwa 2000 profitable EA-Parameter. Der neue Build optimiert normalerweise zunächst eine halbe Minute oder sogar weniger, findet profitable Parameter und bricht dann abrupt ab und beendet die Optimierung.

Ich wiederhole: Ich habe vor etwa einem Monat über dieses seltsame Optimierungsverhalten geschrieben. Das Problem scheint behoben zu sein. Jetzt habe ich das gleiche Problem.

 
artmedia70:

Prüfen:

Was hindert Sie daran, die Ursache zu sehen?


Es gibt nichts, was im Weg steht.

void OnTick()
  {
   if(OrdersTotal()==0)
     {
      string SYMBOL=Symbol();
      int digits=(int)SymbolInfoInteger(SYMBOL,SYMBOL_DIGITS);
      MqlTick lasttick={0};
      if(!SymbolInfoTick(SYMBOL,lasttick))
         return;
      double ask=lasttick.ask;
      double bid=lasttick.bid;

      if(OrderSend(SYMBOL,OP_BUY,0.1,NormalizeDouble(ask,digits),1000,0,0,"Test",0,0,CLR_NONE)<0) 
        {
         Print("ask = "+DoubleToStr(ask,Digits)+", bid = "+DoubleToStr(bid,Digits)+", digits = "+(string)digits);
        }
     }
  }

 
Frage an Metacquotes: Warum wird der iVolume-Typ von double auf ulong geändert? Warum war es notwendig, den Typ nur eines technischen Indikators zu ändern??? Warum konnte man es nicht so lassen, wie es war?
 
Wahoo:


Es gibt nichts, was im Weg ist.


Wie auch immer, es geht los. SymbolInfoTick scheint immer noch ein bisschen schief zu sein (es scheint den ECHTEN letzten Preis zu kopieren, nicht aus der Historie):

void OnTick()
  {
   if(OrdersTotal()==0)
     {
      string SYMBOL=Symbol();
      int digits=(int)SymbolInfoInteger(SYMBOL,SYMBOL_DIGITS);
      MqlTick lasttick={0};
      if(!SymbolInfoTick(SYMBOL,lasttick))
         return;
      double ask=lasttick.ask;
      double bid=lasttick.bid;

      if(OrderSend(SYMBOL,OP_BUY,0.1,NormalizeDouble(ask,digits),1000,0,0,"Test",0,0,CLR_NONE)<0)
        {
         Print(SYMBOL+" ask = "+DoubleToStr(ask,Digits)+", bid = "+DoubleToStr(bid,Digits)+", digits = "+(string)digits);
         if(OrderSend(Symbol(),OP_BUY,0.1,NormalizeDouble(Ask,Digits),100,0,0,"Test",0,0,CLR_NONE)>0)
            Print("Opened using Ask ="+DoubleToStr(Ask,Digits));
        }

      //=== Final Check
      SymbolInfoTick(SYMBOL,lasttick);
      Print("Ask: "+(string)Ask+"  lastick.ask: "+(string)lasttick.ask);

     }
  }

Ergebnis:

 
Das Volumen musste aus Gründen der Kompatibilität mit MT5 geändert werden. Die internen Balken in MT4 sind jetzt die gleichen wie in 5.
 
Renat:
Ich musste das Volumen aus Gründen der Kompatibilität mit MT5 ändern. Jetzt sind die internen Balken in MT4 die gleichen wie in 5.

Dies kann nicht der Grund für die starke Diskrepanz zwischen den Testergebnissen auf Ihrem Demokonto und z.B. auf dem Alpari-Konto sein, das mein Kunde testet.

Früher gab es selbst bei Unterschieden in den Kursen nicht so eine völlig unterschiedliche Leistung eines EA auf verschiedenen Konten. Im visuellen Modus können wir nun sehen, dass in einem Test die Position eindeutig positiv oder negativ ist, in einem anderen Test ist die Situation jedoch genau umgekehrt.

 
Sie müssen sich die Unstimmigkeiten mit allen Protokollen im Detail ansehen. Aus einem allgemeinen Überblick kann man keine Schlussfolgerungen ziehen, man braucht also Details.
 
Renat:
Sie müssen sich die Unstimmigkeiten mit allen Protokollen im Detail ansehen. Man kann nicht aus einer allgemeinen Sichtweise Schlüsse ziehen, man braucht Details.
Ich verstehe. Ich werde später ins Detail gehen. Im Moment geht es vor allem darum, den Algorithmus in Ordnung zu bringen.
 
MT 560, ME 881. Nochmals zum Wiederaufleben alter Bugs, die scheinbar schon einmal von Ihnen bei Updates geschlossen wurden, beschrieben in ServiceDesk.