Fehler, Irrtümer, Fragen - Seite 659

 
antt:
Welcher Zugangspunkt?
Zypern.
 

Die Situation stellt sich wie folgt dar. Zum Beispiel gibt es am Freitag offene Stellen. Wir setzen Stop Loss und Take Profit. Ohne das Ende der Handelssitzung abzuwarten, verlassen wir diese Positionen, deaktivieren die Kommunikation und versetzen den Computer in den Ruhezustand (Hibernate-Modus). Wir schalten am nächsten Tag ein. Die Internetverbindung ist hergestellt. Es besteht eine Verbindung zum Server. Samstag. Der Markt ist geschlossen. Wir können sehen, dass die Positionen geschlossen wurden, einige durch Stop Loss und einige durch Take Profit. Diese Geschäfte können auf der Registerkarte " Historie" des Handelsterminals eingesehen werden:

Wir fordern die Historie der letzten drei Abschlüsse an:

   datetime Start=0;
//---
   if(!HistorySelect(Start,TimeCurrent())) // Загрузим историю сделок
     {
      Print("Ошибка при загрузке истории!"); return;
     }
   else
     {
      ulong ticket=0;
      datetime time=0;
      string symbol="",comment="";
      //---
      int total_deals=HistoryDealsTotal();
      //---
      for(int d=total_deals-1; d>=total_deals-3; d--)
        {
         if((ticket=HistoryDealGetTicket(d))>0) // Если сделка выбрана
           {
            symbol=HistoryDealGetString(ticket,DEAL_SYMBOL);
            comment=HistoryDealGetString(ticket,DEAL_COMMENT);
            time=(datetime)HistoryDealGetInteger(ticket,DEAL_TIME);
            //---
            Print("<-- symbol: ",symbol,"; comment: ",comment,"; time: ",time," -->");
           }
        }
     }

Und wir sehen, dass die Geschichte nicht übereinstimmt. Das heißt, wir können sie im Terminal sehen, aber wir können sie nicht programmatisch abrufen.

//---

Handelt es sich dabei um einen Fehler oder wurde es so konzipiert, dass diese Angebote nur dann programmatisch abgerufen werden können, wenn der Markt öffnet?

P.S. Ich habe es auch auf diese Weise versucht, es hilft nicht:

#define Milliseconds_Ahead 200
//---
datetime TimeCurrentAhead()
  {
   return(TimeCurrent()+Milliseconds_Ahead);
  }
 

tol64:

...

P.S. Das habe ich auch versucht, es funktioniert nicht:

Ich habe einen Ausweg gefunden. Im Market Watch-Fenster können Sie die Ausstiegszeit sehen. Das heißt, der letzte Zeitpunkt, an dem eine Verbindung zum Server bestand und der Tick ankam (letzte Tickzeit):

Das heißt, in meinem Fall 18:43:30.

Es stellt sich heraus, dass diese Funktion immer noch verwendet wird...:

#define Milliseconds_Ahead 10000
//---
datetime TimeCurrentAhead()
  {
   return(TimeCurrent()+Milliseconds_Ahead);
  }

...Sie können die Situation lösen, aber Sie müssen den Antrag mit einem erheblichen Spielraum stellen. Sie können aber auch auf diese Krücke verzichten und sie für immer vergessen und die Funktion TimeLocal() bei der Abfrage der Historie verwenden, wenn sie in Echtzeit verwendet wird. Verwenden Sie im Prüfgerät TimeCurrent() oder TimeCurrentAhead(). Etwa so:

datetime ChoiceTimeFunction()
  {
   if(NotTest())
     { return(TimeLocal()); }
   else
     { return(TimeCurrent()+Milliseconds_Ahead); }
//---
   return(TimeLocal());
  }

Dann sollte dieser Punkt in der Hilfe behandelt werden oder so...

 

Es ist möglich, gelöschte Grafiken im Terminal wiederherzustellen:

Öffnen gelöscht

Öffnet ein Untermenü mit gelöschten Diagrammen, die wiederhergestellt werden sollen. Gelöschte Diagramme werden gespeichert, wenn "Gelöschte Fenster zum erneuten Öffnen speichern" in den Terminaleinstellungen aktiviert ist. Alle Vorlagen von gelöschten Diagrammen werdenim Verzeichnis/Profiles/Deleted gespeichert. Wenn dieser Befehl ausgeführt wird, wird auf diese Vorlagen zugegriffen und das entsprechende Diagramm wird geöffnet. Jede der gelöschten Diagrammvorlagen kann über den entsprechenden Befehl in diesem Menü gelöscht werden.

Die Situation stellt sich wie folgt dar. Der Expert Advisor hängt am Chart und seine Informationsfelder werden angezeigt. In der Funktion OnDeinit() gebe ich an, dass die Informationsfelder gelöscht werden sollen, wenn das Diagramm geschlossen wird, um die Vorlage für die Wiederherstellung ohne Objekte zu speichern. Ich schließe die Tabelle. Mit der Option Gelöschte öffnen kann ich sie wiederherstellen, aber sie wird mit Objekten wiederhergestellt, und zwar falsch (einige sind vorhanden, andere nicht). Der Expert Advisor stellt nach der Initialisierung alles wieder her. Es hinterlässt einen unangenehmen Rückstand und das Gefühl, unsauber gearbeitet zu haben. Ich schätze sie aus der Sicht der Expert Advisor-Nutzer ein, nicht aus der Sicht des Terminals. Bei allen anderen Deinitialisierungsereignissen funktioniert alles korrekt. Ich verstehe, dass das Speichern der Vorlage vor der Deinitialisierung erfolgt, denn bei der Deinitialisierung werden die Objekte zwar gelöscht, aber sie haben Zeit, in der Vorlage gespeichert zu werden.

 

Hier ist das Problem...

Soweit ich weiß, "bemerkt" das Terminal den zusätzlichen Verlauf auf dem Server und eine Art "Lücke" im lokalen Verlauf und beginnt, diesen automatisch herunterzuladen, um diese Lücken zu schließen. Das ist natürlich alles toll, aber...

Es gibt ein Phänomen wie die nicht standardisierten Zeitrahmen, deren Geschichte nicht von irgendwoher heruntergeladen zu werden scheint, sondern vom Terminal automatisch "im Kopf" erstellt wird. Und ich habe Folgendes festgestellt. Wenn alles mit dem Notieren der "Lücken" in der Historie und dem automatischen Herunterladen in Ordnung ist, ist die Situation mit der Rekonstruktion der erstellten und dann beschädigten (entweder auf der Festplatte oder im Speicher) Historie von Nicht-Standard-Zeiträumen wirklich nicht in Frage. Nun, mein Terminal hat den gesamten Verlauf heruntergeladen, dann habe ich alle Zeitrahmen übersprungen und festgestellt, dass jemand ein ganzes Segment des jüngsten Verlaufs auf H2 und H3 gestohlen hat, das das Terminal weder heruntergeladen noch lokal rekonstruiert hat. Es hat geholfen, das Terminal zu entladen und die Dateien der entsprechenden Zeitrahmen manuell aus C:\Program Files\MetaTrader 5\Bases\MetaQuotes-Demo\history\NZDUSD\cache zu löschen, mit einem weiteren Start des Terminals, zuH2 und H3 zu wechseln und zu warten, bis es seine Geschichte von Grund auf richtig wieder aufbaut.

Natürlich würden wir gerne ein intelligenteres Terminal haben, das diese gebissenen Segmente zu jedem beliebigen Zeitpunkt "fühlt", einschließlich der nicht standardisierten, und sofort versucht, sie aufzufüllen.

---------------

Nachtrag: Obwohl, um ehrlich zu sein, das Terminal überhaupt nichts sieht. Ich sitze seit einem Jahr mit einer Kurve der Geschichte von Minuten, die eigentlich mit MetaQuotes aus dem Jahr 1999 beginnt, während mein Zeitrahmen war im Jahr 2009 aus irgendeinem Grund - und was? Ich hatte genug Speicherplatz, um sie herunterzuladen, aber bis heute gab es keine Downloads, bis ich alles deinstalliert und neu installiert habe (das habe ich auch vorher gemacht, aber es hatte keine Wirkung). Natürlich geht es nicht einmal um die Wiederaufnahme, sondern um das vollständige Herunterladen des gesamten Verlaufs von Grund auf durch das Terminal. Nun, das ist zumindest das Brot und die Butter.

In diesem Zusammenhang möchte ich allen MQL-Programmierern, die ihre Programme debuggen und sich auf den Verbrauch ihrer Softwareprodukte durch andere Benutzer verlassen, eine wichtige Warnung mit auf den Weg geben: Achten Sie auf die Verfügbarkeit der Historie, für die Ihr Produkt berechnet wird: während des Testens mit unvollständiger oder durch die Historie mit höherem Zeitrahmen ersetzter Historie wird die Verarbeitungsgeschwindigkeit gut sein, aber es kann passieren, dass Sie oder die Benutzer Ihrer Programme von 100% CPU-Last auf modernen Computern und "endlosen" Fehlermeldungen brüllen.

 

'f0_34' - Vergleichsausdruck erwartet

Können Sie mir sagen, was diese Warnung bedeutet?

 

Auch hier hat sich ein Fehler dieser Art eingeschlichen:

Der Problembereich ist identifiziert worden. Detaillierte Beschreibung im Service Desk.

//---

P.S. Ich habe eine bestehende Anfrage abgeschlossen, bei der ein ähnliches Problem einmal gelöst wurde. Nach einer Weile sah ich eine Benachrichtigung neben meinem Profil. Ich meldete mich bei Service Desk an, und die Anfrage verschwand vollständig. Muss ich das alles noch einmal machen? )))

 
tol64:

Auch hier ist ein solcher Fehler aufgetreten:

Der Problembereich ist identifiziert worden. Detaillierte Beschreibung im Service Desk.

//---

P.S. Ich habe eine bestehende Anfrage abgeschlossen, bei der ein ähnliches Problem einmal gelöst wurde. Nach einer Weile sah ich eine Benachrichtigung neben meinem Profil. Ich habe mich bei Service Desk angemeldet, und die Anfrage ist verschwunden. Muss ich das alles noch einmal machen? )))

Die Bewerbung und die Kommentare sind vorhanden, aber aus irgendeinem Grund ist sie nicht im Profil sichtbar.

Wir werden uns auf jeden Fall darum kümmern.

 
MetaQuotes:

Die Bewerbung und die Kommentare sind vorhanden, aber aus irgendeinem Grund sind sie im Profil nicht sichtbar.

Wir werden uns das auf jeden Fall ansehen.

Bringen Sie das bitte in Ordnung, denn einige meiner Bewerbungen sind auch ganz verschwunden, weder in den offenen noch in den geschlossenen.
 
MetaQuotes:

Die Bewerbung und die Kommentare sind vorhanden, aber aus irgendeinem Grund sind sie im Profil nicht sichtbar.

Wir werden uns das auf jeden Fall ansehen.

Ich danke Ihnen. Ich freue mich darauf, wenn es Klarstellungen gibt. Das Problem tritt nicht nur an den von mir genannten Stellen auf. Der Bereich des Auftretens ist nun allgegenwärtig.
Grund der Beschwerde: