Fehler, Irrtümer, Fragen - Seite 1442

 
Yousufkhodja Sultonov:
Bitte sagen Sie mir, wie ich das Problem lösen kann, dass der Tester die Anzahl der offenen Positionen auf hundert begrenzt, obwohl ich in den Einstellungen 1000 angegeben habe?
Sie können nicht, das ist keine Einschränkung des Terminals, sondern des Brokers, ein Demokonto bei einem Broker eröffnen, der mehr als 100 Aufträge erteilt
 

Lesen Sie aufmerksam überCopyRates():

Hinweis

1. Wenn das angeforderte Datenintervall vollständig außerhalb der auf dem Server verfügbaren Daten liegt, gibt die Funktion -1 zurück. Wenn die angeforderten Daten außerhalb von TERMINAL_MAXBARS (maximale Anzahl von Balken im Diagramm) liegen, gibt die Funktion ebenfalls -1 zurück.

2. Wenn Daten vom Indikator angefordert werden und die angeforderten Zeitreihen noch nicht erstellt wurden oder vom Server heruntergeladen werden müssen, gibt die Funktion sofort -1 zurück, aber der Download-/Erstellungsprozess selbst wird eingeleitet.

3. Wenn die Daten vom Expert Advisor oder einem Skript angefordert werden, wird das Herunterladen vom Server eingeleitet, wenn das Terminal nicht über diese Daten verfügt, oder der Aufbau der erforderlichen Zeitreihen beginnt, wenn die Daten aus der lokalen Historie aufgebaut werden können, aber noch nicht bereit sind. Die Funktion gibt die Datenmenge zurück, die nach Ablauf der Zeitüberschreitung zur Verfügung steht, aber der Verlauf wird weiterhin heruntergeladen, und bei der nächsten ähnlichen Anfrage wird die Funktion mehr Daten zurückgeben.

1. Das ist richtig und logisch, aber bevor Sie Daten anfordern, sollten Sie die zulässige Anzahl der Takte im Fenster überprüfen.

2) Sie haben auch Recht; Sie müssen versuchen, Daten zu empfangen, bis das Terminal die gewünschte Menge zurückgibt, und dabei daran denken, die Verbindung mit dem Server zu überprüfen. Hier gibt es keinen Zweifel an der Qualität der empfangenen Daten - entweder sind die Daten vorhanden oder nicht.

3. hier ist es überhaupt nicht klar. Sie können nie sicher sein, dass die empfangenen Daten vollständig sind. Und warum sollte der Nutzer Daten benötigen, bei denen er sich ihrer Vollständigkeit nicht sicher ist? Die Praxis zeigt, dass keine Tricks (vorläufige Versuche, Daten zu erhalten, um das Herunterladen vom Server zu initialisieren) nicht die Gewissheit geben, dass die Anfrage vollständige Daten erhalten wird.

Ich denke, dass es praktischer ist, das Verhalten der Funktionen zum Abrufen von Daten in Expert Advisors ähnlich wie bei den Indikatoren zu gestalten.

 
Joo Zepper:

Lesen Sie aufmerksam überCopyRates():


(3) Dies ist ein Punkt, der überhaupt nicht klar ist. Sie können nie sicher sein, dass die empfangenen Daten vollständig sind. Und warum sollte der Nutzer Daten benötigen, die unvollständig sind? In der Praxis zeigt sich, dass keine Tricks (vorläufige Versuche, Daten zu erhalten, um das Herunterladen vom Server einzuleiten) die Gewissheit geben, dass die Anfrage vollständige Daten erhält.

Warum können Sie sich nicht sicher sein? Verwenden Sie SeriesInfoInteger(symbol,period,SERIES_SYNCHRONIZED), um sicherzugehen.

Lesen Sie weiter in der Dokumentation. So überlegt wie möglich.

 
Slawa:

Warum können Sie sich nicht sicher sein? Um sicher zu gehen, verwenden Sie SeriesInfoInteger(Symbol,Zeitraum,SERIES_SYNCHRONIZED)

Lesen Sie weiter in der Dokumentation. Seien Sie nicht weniger rücksichtsvoll.

Danke für den Hinweis, aber ich verwende diese Flagge schon seit langem. Gibt es andere, zuverlässigere Methoden?

Ich warte auch auf Ihren nächsten Vorschlag - das Chart-Fenster des gewünschten Instruments zu öffnen. Das wird auch gemacht, aber die Vollständigkeit der Daten ist nicht garantiert.

 
Joo Zepper:
Danke für den Hinweis, aber die Überprüfung dieser Flagge wird von mir schon seit langem aktiv genutzt. Gibt es andere, zuverlässigere Methoden?

Wo liegt dann das Problem? Wenn dieses Flag auf true gesetzt ist, sind die aktuellen Daten vollständig synchronisiert. Sie können unvollständig sein, weil der Server über mehr Daten verfügt als Sie selbst - die Geschichte geht tiefer

Dann fragen Sie die Historie in voller Tiefe ab und vergleichen SeriesInfoInteger(symbol,PERIOD_M1,SERIES_SERVER_FIRSTDATE) mit dem ersten Datum Ihrer lokalen Minuten

 
Slawa:

Wo liegt dann das Problem? Wenn dieses Flag auf true gesetzt ist, sind die aktuellen Daten vollständig synchronisiert. Sie können unvollständig sein, weil der Server über mehr Daten verfügt als Sie selbst - die Geschichte geht tiefer

Dann fragen Sie die Historie in voller Tiefe ab und vergleichen SeriesInfoInteger(symbol,PERIOD_M1,SERIES_SERVER_FIRSTDATE) mit dem ersten Datum Ihrer lokalen Minuten

Aber das ist Selbstmord für den Expert Advisor. Sie werden schreckliche Verzögerungen bekommen. Und Sie brauchen in der Regel keine ausführliche Anamnese.

Ich denke über Folgendes nach. Im Marktbericht werden immer die neuesten Daten angezeigt, und wenn das Terminal die erforderliche Datenmenge auf Anfrage nicht innerhalb der Grenzen der Historie des Servers und der zulässigen Anzahl von Balken im Fenster bereitstellen kann, wird in solchen Fällen -1 zurückgegeben, wie bei den Indikatoren. Entweder Sie erhalten Daten oder -1, es gibt keine dritte Möglichkeit.

 

Ich tue dies, bevor ich Daten anfordere:

for(int attempt = 0; attempt < 10; attempt++) 
  {
    bool flag = true; 
    for(int symb = 0; symb < SymbolCNT; symb++) 
    {
      if(!synched[symb]) 
      {
        // trial copying of price data
        int copied = CopyRates(symbsName[symb], smPeriod, startPosDataGet, barsReq, prices[symb].Data); 
        
        if(copied >= barsReq) 
        {
          if(idChart[symb] != -1) 
          {
            ChartClose(idChart[symb]); 
            idChart[symb] = -1;
          }
          synched[symb] = true;
        }
        else 
        {
          flag = false; 
          if(showAlert) 
            Alert(symbsName[symb] + ": requested/received " + (string)barsReq + "/" + (string)copied); 
          
          if(idChart[symb] == -1) 
          {
            idChart[symb] = ChartOpen(symbsName[symb], smPeriod); 
            ChartSetInteger(ChartFirst(), CHART_BRING_TO_TOP, 0, true);
          }
        }
      }
    }
    if(!flag) 
      if(TerminalInfoInteger(TERMINAL_CONNECTED)) 
        Sleep(1000);
  }
  
  for(int symb = 0; symb < SymbolCNT; symb++) 
    if(idChart[symb] != -1) 
      ChartClose(idChart[symb]); 

Doch schon bei direkten Abfragen sind die Daten löchrig. Manchmal ohne Löcher. Das ist es, was ich meine - kein Vertrauen in die erhaltenen Daten.

 
Karputov Vladimir:

Das über den Nachrichteneditor eingefügte Video wird nicht gespeichert.

Google Chrome Version 46.0.2490.86 m.

Internet Explorer 11.11.10586.0.

Der Fehler wird behoben, danke für die Nachricht.
 

Die regulären Anzeigen funktionieren nach der Aktualisierung des Systems auf Windows10 NICHT mehr. Sie kann einfach nicht mit den Grafiken verbunden werden. Im Editor wird beim Kompilieren ein Fehler angezeigt

Fehler

 
Alexandr:
Die regulären Anzeigen funktionieren nach der Aktualisierung des Systems auf Windows10 NICHT mehr. Sie können einfach nicht mit den Grafiken verbunden werden. Im Editor wird beim Kompilieren der Fehler https://i.gyazo.com/5dbea3b25ab9a45cf3a9449335c1f57f.png angezeigt.
Wahrscheinlich etwas mit den Zugriffsrechten, prüfen Sie, ob die Terminalordner beschreibbar sind, versuchen Sie, die UAC zu verringern ....
Grund der Beschwerde: