Bibliotheken: CheckHistory - Funktion zum Prüfen und Laden der Historie

 

CheckHistory - Funktion zum Prüfen und Laden der Historie:

Leicht modifizierte Ladefunktion von MetaQuotes.

Autor: Andrey Khatimlianskii

 

Ich habe eine solche Funktion entdeckt...

Wenn Sie Pufferdaten aus einem Indikator für ein Symbol entfernen müssen, das nicht im "Market Watch" ausgewählt ist und für das die Historie nicht gefüllt ist, müssen Sie so etwas in die Funktion einbauen:

.....
   uint start=GetTickCount();
   // meine Zeilen [start]
   long m=SymbolInfoInteger(symbol,SYMBOL_SELECT);
   if(m<1)
     {
      bool is_selected=SymbolSelect(symbol,true);
      Sleep(500);
     }
   // meine Zeilen [Ende]
   if(CheckTerminalHistory(symbol,period,size) || CheckServerHistory(symbol,period,size))
     {
      if(print_info)
        {
   
.....
 
Ich mache irgendetwas falsch, aber ich kann nicht herausfinden, was. Chart (Tester) - H1. Ich muss Balken laden - H4 in der Menge von 3000 Stück (BarsToAnalyse=3000). Es wird nicht geladen... Zeile mit der Funktion:
if ( first && !CheckLoadHistory( _Symbol,PERIOD_H4, BarsToAnalyze ) )
 
Forex_Noob:
Ich mache irgendetwas falsch, aber ich kann nicht herausfinden, was. Chart (Tester) - H1. Ich muss Balken laden - H4 in der Menge von 3000 Stück (BarsToAnalyse=3000). Es wird nicht geladen... Zeile mit der Funktion:

Was wird in das Log geschrieben? Was passiert überhaupt? Bleibt sie einfach hängen?

Wenn Sie die Funktion in einem normalen Diagramm ausführen, wird sie dann geladen? Gibt es eine Historie auf dem Server des Brokers?

 

Ich verstehe, dass das Laden über SeriesInfoInteger mit dem Parameter SERIES_SYNCHRONIZED erfolgt ?

Das ist eine interessante Sache, die ich überprüfen sollte... denn ich spiele mit diesen historischen Kursen herum... Ich öffne einen Chart und simuliere Home, bis das Laden der Balken aufhört. Ich frage mich - was ist der Unterschied zwischen diesen Methoden....

 
elugovoy:

Ich verstehe, dass das Laden über SeriesInfoInteger mit dem Parameter SERIES_SYNCHRONIZED erfolgt ?

Das ist eine interessante Sache, die ich überprüfen sollte... denn ich spiele mit diesen historischen Kursen herum... Ich öffne einen Chart und simuliere Home, bis das Laden der Balken aufhört. Ich frage mich, was der Unterschied zwischen diesen Methoden sein wird....

Es sollte keinen Unterschied geben, die Funktion lädt und berechnet alle notwendigen historischen Kurse normal.
 

Das einzige, was Ende 2018 funktioniert. +5 und Danke!

Irgendwelche Ideen zur Verbesserung?

 
Vladimir Pastushak:

Das einzige, was Ende 2018 funktioniert. +5 und Danke!

Irgendwelche Gedanken zur Verbesserung?

Vladimir, sprich nicht in Rätseln

 
Andrey Khatimlianskii:

Vladimir, sprich nicht in Rätseln

Ich war in Eile, und Ihr Code hängt auch auf Symbole mit problematischen Geschichte....

Ich habe viele Codes zum Laden der Historie getestet, alle bleiben bei einigen tsfd hängen.

So auch Ihr Code.

 
Vladimir Pastushak:

Ich hatte es eilig, und Ihr Code bleibt auch bei Zeichen mit problematischem Verlauf hängen.

Ich habe eine Menge Codes für das Laden von Geschichte getestet, alle von ihnen hängen auf einige tsfd.

Dein Code ist derselbe.

Es gab eine Diskussion, dass sogar iBars unter bestimmten Bedingungen einfriert.

Ich habe jetzt keine Lust, mich damit zu befassen.

 

Hallo,


ich habe zwei Fragen zu Ihrem Code.

Innerhalb der Funktion

CheckServerHistory()

CheckServerHistory(...)
{
        ...
        if(first_server_date>TimeCurrent()-size*PeriodSeconds(period)) return(false);
        ...
}

Funktioniert das wirklich, weil die Zeitverschiebung und die Zählung der Perioden anders ist, wenn die Marktschlüsse berücksichtigt werden?


In der Funktion

CheckLoadHistory()

CheckLoadHistory(...)
{
        if(CheckTerminalHistory(symbol,period,size) || CheckServerHistory(symbol,period,size))
        { ... }
}


Hier werden zuerst die Daten des Terminals und danach die Daten des Servers geprüft.

Ist es sinnvoll, es andersherum zu machen?