Fehler, Irrtümer, Fragen - Seite 320

 
stringo:
Der Code ist grundlegend anders.

Wow... Ich bin schockiert...

Können Sie ein einfaches x32- und x64-Codefragment zum Vergleich veröffentlichen? Nur um Ihre Neugierde zu befriedigen...

 
KffAlex:


Sehr geehrte Damen und Herren! Dies ist das 3. Mal, dass ich dieses Problem habe. Das Erstellen einer externen Bibliothek unter Windows7 x64 führt zu gewissen Wundern:


Entschuldigung für die Verzögerung. Ich habe Ihnen unter vier Augen geantwortet.

Bitte fügen Sie den Quellcode bei. Wenn möglich, machen Sie es bitte über Servicedesk. Dadurch wird die Wahrscheinlichkeit solcher Verzögerungen minimiert.

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
AlexSTAL:

Wow... Ich bin schockiert...

Können Sie ein einfaches Codefragment für den Vergleich von x32 und x64 entwerfen? Um Ihre Neugierde zu stillen, sozusagen...

Ich kann Ihnen den Code nicht aus dem Stegreif nennen - ich habe das Merkmal nicht zur Hand.

Die Unterschiede sind wie folgt.

  • Die Register sind 64-bit - 32-bit. Dementsprechend passt 64-Bit-Arithmetik in eine Anweisung (in 32 Bit wird die Division von zwei 64-Bit-Ganzzahlen in 40 Assembler-Anweisungen durchgeführt)
  • Es gibt weitere 64-Bit-Register. Dementsprechend ist auch die Adressierung der Register unterschiedlich.
  • Die Anrufkonvention ist anders. Zum Beispiel werden bei 64 Bit die ersten 4 Parameter einer Funktion in Registern übergeben
 
Wir sollten die Optimierungszeit zu MT5 hinzufügen. Es war in MT4 und wäre hier die richtige Lösung)
 
Renat:

Lokale Agenten bleiben nach Beendigung des Tests noch 5 Minuten lang im Speicher und warten auf die Ausführung neuer Aufgaben. Wenn sie innerhalb von 5 Minuten nicht geladen werden, werden sie automatisch entladen und alle Ressourcen freigegeben.

Dieser Wartemechanismus ermöglichte es den Agenten, die Reaktionsgeschwindigkeit bei sich wiederholenden Aufgaben zu erhöhen, was auf Kosten der bereitstehenden/erhöhten Infrastrukturen ging.

ps: hier geht es um lokale Agenten. Remote-Agenten, die als Dienste laufen, werden nicht entlastet, sondern geben nach einer gewissen Ausfallzeit ebenfalls Ressourcen frei.

Mit dem 404er Build. Ich spreche von Problemen bei entfernten Agenten. Selbst nach 10 Stunden Ausfallzeit wird der Speicher nicht freigegeben.

Ein paar weitere Probleme:

1. Fast immer, wenn ein Strategietest durchgeführt wird, endet der erste Durchlauf auf jedem Prozessor schnell und liefert null Ergebnisse.

Und wenn Sie anhalten und wieder anfangen, werden diese Nullen nicht neu berechnet. Ich führe den Test mit einer großen Anzahl von Prozessoren durch und erhalte 40-50 Ergebnisse mit Nullen und keine Möglichkeit, diese Daten neu zu berechnen.

Manchmal schaltet einer der Prozessoren auf fehlerhaft um und liefert ein paar Mal pro Sekunde null Ergebnisse. Aber wenn ich es stoppe, werden diese Daten wieder neu berechnet (orangefarbenes Feld in der Tabelle).

3. Bei der Ausführung von Remote-Agenten auf 16 Prozessoren, Internet 1 Megaplayer nicht zulassen, eine solche schnelle Download-Geschichte, und es ist offensichtlich, weil der Timeout alle Prozessoren sind fehlgeschlagen. Wenn Sie jeweils nur einen Prozessor aktivieren, funktioniert das normalerweise. Ist es möglich, ein System mit 16 Prozessoren zu verwenden, um den Verlauf auf den ersten Prozessor herunterzuladen und ihn dann auf die anderen Prozessoren zu kopieren? Oder erhöhen Sie einfach den Timeout beim Laden der Historie.

 
a483483:

Mit dem 404er Build. Ich spreche von Problemen bei entfernten Agenten. Selbst nach 10 Stunden Leerlaufzeit wird der Speicher nicht freigegeben.

Ein paar weitere Probleme:

1. Bei Strategietests endet der erste Durchlauf auf jedem Prozessor fast immer schnell und liefert null Ergebnisse.

Und wenn Sie anhalten und neu starten, werden diese Nullen nicht neu berechnet. Ich führe den Test mit einer großen Anzahl von Prozessoren durch und erhalte 40-50 Ergebnisse mit Nullen und keine Möglichkeit, diese Daten neu zu berechnen.

Manchmal schaltet einer der Prozessoren auf fehlerhaft um und liefert ein paar Mal pro Sekunde null Ergebnisse. Aber wenn ich es stoppe, werden diese Daten wieder neu berechnet (orangefarbenes Feld in der Tabelle).

3. Bei der Ausführung von Remote-Agenten auf 16 Prozessoren, Internet 1 Megaplayer nicht zulassen, eine solche schnelle Download-Geschichte, und es ist offensichtlich, weil der Timeout alle Prozessoren sind fehlgeschlagen. Wenn Sie jeweils nur einen Prozessor aktivieren, funktioniert das normalerweise. Ist es möglich, ein System mit 16 Prozessoren zu verwenden, um den Verlauf auf den ersten Prozessor herunterzuladen und ihn dann auf die anderen Prozessoren zu kopieren? Oder erhöhen Sie einfach den Timeout beim Laden der Historie.


Benötigt werden Agentenprotokolle, Einstellungen, Symbol, Server.

Sie können EX5-Experte, aber besser, natürlich, die Quelle.

Vorzugsweise in servicedesk.

 
KffAlex:
Dieses Problem besteht nicht, wenn die Funktionen in den Hauptteil des Programms verschoben werden, und unter Windows XP gibt es dieses Problem einfach nicht!!!
Es scheint eine Frage der Bitgröße (64/32) zu sein, unter Windows XP arbeiten Sie mit 32 Bit, daher wird der Fehler nicht reproduziert.
Bitte erstellen Sie eine Anfrage an servicedesk und fügen Sie die problematische(n) EX5-Datei(en) bei.(Ihr Link zum Service Desk)
 

Hilfe, ich kann nicht herausfinden, wie ich die beiden Zahlen vergleichen kann, es ist schon 2 Tage her

(Datum heute) > (Datum gestern)

          datetime bark[1];
          CopyTime(Symbol1,NULL,0,1,bark);
          if(bark[0]<=order)

Bestellung - (Datum gestern)

Oder ist das gar nicht möglich?

 

Ich habe das geschrieben:

       for (uint k=0; k<66; k++)
         {
          datetime order=(datetime)HistoryDealGetInteger(ticket,DEAL_TIME);
          datetime bark[1];
          CopyTime(Symbol1,NULL,k,1,bark);
          if(bark[0]<=order)
            {

der Tester bleibt stecken und das war's

 
alexluek:

Ich habe das geschrieben:

Irgendetwas läuft im Prüfgerät in einer Schleife, und das war's.

Die Zeit in der Zukunft ist länger als in der Vergangenheit, Ihr Stück Code ist nicht anschaulich, es ist nicht klar, was Sie im if-Block tun und was Sie damit erreichen wollen...

Hier finden Sie meiner Meinung nach ausführliche Informationen zum Zeitvergleich :)

//+------------------------------------------------------------------+
//|                                                         test.mq5 |
//|                                                           mrProF |
//|                                                          http:// |
//+------------------------------------------------------------------+
#property copyright "mrProF"
#property link      "http://"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   datetime past=D'2010.12.1'; //Прошлое
   datetime future=D'2010.12.02'; //Будущее

   if(past<future)
     {
      Print(past," раньше чем: ",future);
     }

   datetime buffTime[1]; //Буфер для времени последнего бара
   CopyTime(_Symbol,_Period,0,1,buffTime); //Копируем время последнего бара

   if(buffTime[0]>past)
     {
      Print(past," раньше чем: ",buffTime[0]);
     }

  }
//+------------------------------------------------------------------+
Grund der Beschwerde: