Fehler, Irrtümer, Fragen - Seite 1801

 
Dennis Kirichenko:
Es ist einfach unmoralisch, sich über Demoserver zu beschweren, insbesondere über solche, die nicht von einem Broker unterstützt werden :-)
Wenn auf der Demo alles so funktioniert, dann wäre es unmoralisch, von den echten Servern normale Arbeit zu verlangen.

Und der MQ-Server sollte eine Art "Benchmark" sein, an dem Algo-Entwickler ihre Technologien testen können und sollten.
 
fxsaber:
Mehrere SymbolSelect-Aufrufe führen dazu, dass sich das Terminal aufhängt.
bool SymbolExist( const string Symb, const bool MarketWatch = true )
{
  bool Res = false;
  
  for (int i = SymbolsTotal(MarketWatch) - 1; (i >= 0) && (!Res); i--)
    Res = (Symb == SymbolName(i, MarketWatch));
    
  return(Res);
}

bool SymbolOnOff( const string Symb )
{
  return(SymbolSelect(Symb, !SymbolExist(Symb)));
}

void OnStart()
{
  for (int i = SymbolsTotal(false) - 1; i >= 0; i--)
  {
    const string Symb = SymbolName(i, false);
    
    if (SymbolOnOff(Symb))
      SymbolOnOff(Symb);
  }
}
 
Ich habe in der Hilfe keinen Hinweis darauf gefunden, dass Sie für ein Symbol, das nicht im Market Watch enthalten ist, keine Daten erhalten können. Ich musste es durch Versuch und Irrtum erreichen.
 
fxsaber:
Ich habe in der Hilfe keinen Hinweis darauf gefunden, dass für ein Symbol, das nicht in der Marktbeobachtung enthalten ist, auch keine Daten vorhanden sind. Ich musste es handschriftlich machen.
Richtig. Es gibt eine Erwähnung von

Zurückgegebener Wert

Wert vom Typ Double. Im Falle einer erfolglosen Ausführung können die Fehlerinformationen mit GetLastError() abgefragt werden:

  • 5040 - Falscher String-Parameter für die Angabe eines Symbolnamens,
  • 4301 - unbekanntes Symbol (Finanzinstrument),
  • 4302 - Symbol in "Market Watch" nicht ausgewählt (nicht in der Liste der verfügbaren Symbole),
  • 4303 - Falscher Symbol-Eigenschaftsbezeichner.
 
Slawa:
Richtig. Es gibt eine Erwähnung von

Danke, indirekt erwähnt.

Wenn ich ein Symbol über SymbolSelect zu Market Watch hinzufüge, woher weiß ich dann, dass Bid/Ask nach Symbol verfügbar geworden ist -SymbolIsSynchronized?

SymbolIsSynchronized - scheint für diesen Zweck zu kostspielig zu sein, da es auch die Frage der Synchronisierung der M1-Geschichte aufwirft.

SymbolIsSynchronized wird bei einigen Zeichen nie wahr.

 
fxsaber:

Danke, indirekt erwähnt.

Wenn ich ein Symbol über SymbolSelect zu Market Watch hinzufüge, woher weiß ich dann, dass Bid/Ask nach Symbol verfügbar geworden ist - SymbolIsSynchronized?

SymbolIsSynchronized - scheint für diesen Zweck zu kostspielig zu sein, da es auch die Frage der Synchronisierung der M1-Geschichte aufwirft.

SymbolIsSynchronized wird bei einigen Symbolen nie wahr.

Das tut es, es dauert nur unerträglich lange, bis die Geschichte geladen ist....
 
Wahrscheinlich wissen das viele, aber erst jetzt bin ich auf die Idee gekommen, _LastError in die getrackten Werte beim Debuggen aufzunehmen. Empfohlen.
 
Bevor Sie das Kennzeichen für die Verlaufssynchronisierung überprüfen, müssen Sie zunächst CopyRates(Symbol(),PERIOD_M1,0,1000,rates) aufrufen.

Wenn dies vom Indikator aus geschieht, wird genau das angezeigt, was vorhanden ist, allerdings mit einer Anfrage an das Historienzentrum für das Paging. Dann kann es unerträglich werden.

Wenn dies von einem Expert Advisor oder Skript aus geschieht, können mehrere Zyklen von Anfragen innerhalb der Funktion erfolgen, wobei auf eine Antwort gewartet wird, und in der Regel wird nach einem solchen Aufruf die Historie synchronisiert
 
fxsaber:

Wenn ich ein Symbol über SymbolSelect zu Market Watch hinzufüge, woher weiß ich dann, dass Bid/Ask für das Symbol verfügbar ist?

Unmittelbar nach SymbolSelect(true) frage ich nach den Preisen, und sie sind null. Gleichzeitig ist _LastError == 0, SymbolInfoTick == true.

Woher weiß ich, dass die Preise für das neue Symbol für Marketwatch an Marketwatch geliefert wurden?

 
Slawa:
Bevor Sie das Kennzeichen für die Verlaufssynchronisierung überprüfen, müssen Sie zunächst CopyRates(Symbol(),PERIOD_M1,0,1000,rates) aufrufen.

Wenn dies vom Indikator aus geschieht, wird genau das angezeigt, was vorhanden ist, allerdings mit einer Anfrage an das Historienzentrum für das Paging. Dann kann es unerträglich werden.

Wenn dies von einem EA oder einem Skript aus geschieht, können innerhalb der Funktion mehrere Abfragezyklen durchgeführt werden, die auf die Antwort warten, und in der Regel wird die Historie nach einem solchen Aufruf synchronisiert
Soll das bei jedem Tick gemacht werden?
Grund der Beschwerde: