Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 191

 
template <typename T>
void func(const T &IntOrArray) {} 

void OnStart()
{
  int a=0;
  char b[3]={};
  func(a);
  func(b);	//'b' - parameter conversion not allowed
}

Ist es ein Fehler oder ein Chip, der diesen Fehler auslöst?

C++ kann dies sehr gut verkraften. Und die Arrays in MQL haben ihre eigenen Arrays. Einige std::array könnten also auch mit diesem Konstrukt behandelt werden.

 
traveller00:

Ist es ein Bug oder ein Fehler, dass er diesen Fehler auslöst?

Kein Fehler. Eine Überfrachtung mit Vorlagen ist da nur hilfreich.

 

Gibt es eine Möglichkeit, schnell herauszufinden, dass es für ein Instrument keinen Verlauf gibt (entweder lokal oder auf dem Server)?

Bei jeder CopyXXX-Anfrage wird 30 Sekunden gewartet, um Daten abzurufen, und es dauert unangemessen lange, eine große Anzahl von Instrumenten zu durchsuchen.

Bei einigen Werkzeugen ist es hilfreich, zu prüfen, ob ein Angebot vorhanden ist (es ist leer), aber nicht bei allen Werkzeugen.

Sie können es auf ICMarkets-MT5 überprüfen, ToolWheat_U0

 
Andrey Khatimlianskii:

Gibt es eine Möglichkeit, schnell herauszufinden, dass es für ein Instrument keinen Verlauf gibt (entweder lokal oder auf dem Server)?

Jede CopyXXX-Anfrage wartet 30 Sekunden, um die Daten abzurufen, und es dauert unangemessen lange, eine große Anzahl von Instrumenten durchzugehen.

Bei einigen Werkzeugen ist es hilfreich, zu prüfen, ob ein Angebot vorhanden ist (es ist leer), aber nicht bei allen Werkzeugen.

Sie können es auf ICMarkets-MT5, InstrumentWheat_U0 überprüfen.

Es wurde schon oft darüber geschrieben und hier ist das erste, was ich gefunden habe: https://www.mql5.com/ru/forum/285631/page35#comment_9431199

Alternativ dazu haben diese Symbole Ask und Bid == 0

Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5
Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5
  • 2018.11.20
  • www.mql5.com
26 октября 2018 года будет выпущена обновленная версия платформы MetaTrader 5...
 
Andrey Khatimlianskii:

Gibt es eine Möglichkeit, schnell herauszufinden, dass es für ein Instrument keinen Verlauf gibt (entweder lokal oder auf dem Server)?

Jede CopyXXX-Anfrage wartet 30 Sekunden, um die Daten abzurufen, und es dauert unangemessen lange, eine große Anzahl von Instrumenten durchzugehen.

Bei einigen Werkzeugen ist es hilfreich, zu prüfen, ob ein Angebot vorhanden ist (es ist leer), aber nicht bei allen Werkzeugen.

Sie können es auf ICMarkets-MT5 überprüfen, InstrumentWheat_U0

im Indikator wird nicht auf das Ergebnis von CopyXXX warten

als Option im Timer im Indikator, um CopyXXX zu verarbeiten und diesen Indikator von EA aus aufzurufen

 
Vladimir Pastushak:

Darüber wurde schon mehrfach geschrieben, und dies ist der erste, den ich gefunden habe: https://www.mql5.com/ru/forum/285631/page35#comment_9431199

Als eine Variante dieser Symbole Ask und Bid == 0

Etwa null Gebote auf einmal geschrieben, manchmal ist es nicht null.


Igor Makanu:

im Indikator wird nicht auf das Ergebnis von CopyXXX warten

eine Variante des Timers im Indikator, um CopyXXX zu verarbeiten und diesen Indikator von EA aus aufzurufen

Das ist doch mal eine Idee! Danke, ich werde es versuchen.

 
fxsaber:

Der Grund dafür ist, dass dies geschieht. Nach dem ersten OrderSend erscheint ein Marktauftrag, und wenn ein neuer Tick vor seiner Ausführung kommt, gibt es noch keine Position und der zweite OrderSend wird ausgeführt.

Aus diesem Grundfunktioniert ein scheinbar normales MT5-Musternicht richtig, und als Folge davon funktionieren die meisten MT5 Expert Advisors in Codobase nicht mehr. Gleichzeitig wird das nahezu identische MT4-Template weiterhin problemlos funktionieren.

Die scheinbar gute Idee von PositionsTotal wird etwas überschattet von der Notwendigkeit, in MT5 auch OrdersTotal für Marktaufträge zu analysieren.

Seien Sie vorsichtig!

Vielen Dank für diesen Hinweis. Das hatte ich im Sinn. Aber jetzt ist es an der Zeit, einen EA zu schreiben, und ich habe mich gefragt, ob es sinnvoll ist, die an den Server gesendeten Anfragen zu überprüfen. Hypothetisch gesehen haben Sie es richtig beschrieben, aber in Wirklichkeit reagiert der Server schnell auf Anfragen, und ein solcher Zustand wird in den meisten Fällen (ich glaube zu 99 %) nicht auftreten. Aber die Geschwindigkeit des Algorithmus wird jedes Mal darunter leiden. Was ist Ihrer Meinung nach wichtiger?
 
Vasiliy_Saharov:
Vielen Dank für diesen Hinweis. Ich hatte es im Kopf. Aber jetzt bin ich dazu gekommen, einen Expert Advisor zu schreiben, und ich habe mich gefragt, ob es sinnvoll ist, an einen Server gesendete Anfragen zu überprüfen. Hypothetisch gesehen haben Sie es richtig beschrieben, aber in Wirklichkeit reagiert der Server schnell auf Anfragen, und ein solcher Zustand wird in den meisten Fällen (ich glaube zu 99 %) nicht auftreten. Aber die Geschwindigkeit des Algorithmus wird jedes Mal darunter leiden. Was ist Ihrer Meinung nach wichtiger?

Steigen Sie einmal mit 2 Lots statt mit 0,1 ein, und die Antwort liegt auf der Hand.)

 
Andrey Khatimlianskii:

Steigen Sie einmal mit 2 Lots statt mit 0,1 ein, und die Antwort liegt auf der Hand.)

Wenn Sie einen Algorithmus haben, um 0,1 Lose zu machen, dann gibt es eine Wahrscheinlichkeit, 0,1 zweimal zu machen, und da ich denke, dass diese Wahrscheinlichkeit gegen Null tendiert, und dreimal, denke ich, ist unmöglich. Geschweige denn 20 Mal. Schließlich geht es hier um Anwendungsfragen. Als Faustregel gilt, dass der Server wahrscheinlich innerhalb von 10 Minuten antwortet (ist das richtig? Ich bin mir nicht sicher). Wie hoch ist Ihrer Meinung nach die Wahrscheinlichkeit, dass ein zweites Geschäft zustande kommt? Führen Sie diese Prüfung selbst durch? Kann es vorkommen, dass der Server lange braucht, um zu antworten?
 
Vasiliy_Saharov:
Wenn man einen Algorithmus hat, der auf 0,1 Lot schließt, dann gibt es eine Wahrscheinlichkeit von 0,1 zweimal, und da ich denke, dass diese Wahrscheinlichkeit gegen Null tendiert, und dreimal, halte ich es für unmöglich. Geschweige denn 20 Mal. Schließlich geht es hier um Anwendungsfragen. Als Faustregel gilt, dass der Server wahrscheinlich innerhalb von 10 Minuten antwortet (ist das richtig? Ich bin mir nicht sicher). Wie hoch ist Ihrer Meinung nach die Wahrscheinlichkeit, dass ein zweites Geschäft zustande kommt? Führen Sie diese Prüfung selbst durch? Kann es vorkommen, dass der Server lange braucht, um zu antworten?

Aus der Statistik: ca. 200-300 Geschäfte pro Tag. Selbst bei normalen Kontrollen, aber ohne wirklich knifflige Kontrollen, habe ich im Durchschnitt 2-3 Mal pro Woche eine doppelte Losöffnung erwischt. Berechnen Sie die Wahrscheinlichkeit und beurteilen Sie, ob Sie eine solche Wahrscheinlichkeit benötigen oder bereit sind, sie zu akzeptieren. Ich persönlich habe meine Schecks bis zum Maximum ausgeschöpft.

Grund der Beschwerde: