MetaTrader 5 Plattform-Update build 3280: Verbesserungen und Korrekturen aufgrund von Nutzer-Feedbacks - Seite 2

 

Darf ich eine Verbesserung vorschlagen ... Sie lautet wie folgt: Durch Ausführen des folgenden Skriptcodes

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart() 
{ 
  
        ENUM_TIMEFRAMES time = PERIOD_D1;
        string szSymbol = "EURUSD";
        long id = ChartOpen(szSymbol, time);
        ChartRedraw(id);

        ChartIndicatorAdd(id, 0, iCustom(szSymbol, time, "Media Movel.ex5"));
}

in einem beliebigen Fenster wird ein neues Fenster mit dem EURUSD-Symbol geöffnet und wir können einen benutzerdefinierten Indikator in dem neu erstellten Fenster .... hinzufügen. PERFEKT... Wenn wir jedoch dasselbe Skript in einen Dienst umwandeln, wie unten gezeigt:

#property service
//+------------------------------------------------------------------+
void OnStart()
{
        ENUM_TIMEFRAMES time = PERIOD_D1;
        string szSymbol = "EURUSD";
        long id = ChartOpen(szSymbol, time);
        ChartRedraw(id);

        ChartIndicatorAdd(id, 0, iCustom(szSymbol, time, "Media Movel.ex5"));
}

wird das Verhalten bereits anders sein, das Fenster wird wie erwartet erstellt, aber selbst wenn wir den Wert der Fenster-ID haben, können wir keinen Indikator im Fenster hinzufügen, es gibt den 4802 Fehler ....

Es wäre SEHR GUT, wenn ein Dienst einen Indikator hinzufügen könnte, da wir Dienste verwenden können, um einige zusätzliche Arbeit zu tun, ohne Überlastung ein EA zum Beispiel, aber selbst wenn es nicht möglich war, dies zu tun, ist der Vorschlag von wer weiß, erlauben einen Dienst, ein Skript auszuführen, auf jeden Fall würde es eine Menge helfen...

Und wenn es nicht zu viel zu missbrauchen ist ... es wäre auch toll, wenn die MQL5-Sprache eine EXIT() um einen schnellen Weg zu ermöglichen, rekursiven Code zu beenden, wenn er einen Fehler erzeugt, aber nicht anstelle eines abrupten Ausstiegs, können wir den Fehler behandeln und die Programmausführung per EXIT()-A ufruf vollständig beenden ... genau wie das, was passiert, wenn wir ExpertRemove() aufrufen, um einen EA zu beenden ... jedenfalls DANKE für die Aufmerksamkeit ... 😁👍

 

Ich habe MT5 mehrfach für den /portbale-Modus installiert. Drei laufen aktuell parallel, zwei sind auf dem Release-Kanal, da sie handeln, und eine auf im Beta-Kanal.

Leider wird im Fenster, das bei einem neuen Update fragt, ob jetzt oder später aktualisiert werden soll, nicht darauf hingewiesen, welche Version aktualisiert werden kann: Release oder Beta:


Es wäre schön, wenn in diesem Fenster einfach stehen würde: "Release-Update (oder Beta-Updates) wurden heruntergeladen. Rechtzeitige ... "

Der Nutzer wüsste so, ob er während der Woche (FX ist geöffnet) oder besser doch erst am Wochenende das Update durchführen will.

Vielleicht könnte man auch Release-Update oder Beta-Updates farblich voneinander unterscheiden. Das wird u. U. helfen Fehler zu vermeiden.

 
MetaQuotes:

Am Freitag, den 29. April 2022, wird eine aktualisierte Version der MetaTrader 5 Plattform veröffentlicht. Darin haben wir einige kleinere Ergänzungen und Korrekturen vorgenommen, die auf Rückmeldungen nach der Veröffentlichung der Version 3270 beruhen.

Die Aktualisierung umfasst die folgenden Änderungen:

  1. Terminal: Fixes Füllen der Standard Trailing Stop Levels im Kontextmenü von offenen Aufträgen und Positionen.
  2. Terminal: Aktualisierte Übersetzungen der Benutzeroberfläche.
  3. Korrekturen für Cross-Logs.

Das Update wird über das Live-Update-System verfügbar sein.

Da es sich um so "kleine" Korrekturen handelt, bitte ich Sie, in die nächste Version eine Korrektur für diesen Fehler aufzunehmen: Entfernung der Informationen über das Tick-Volumen beim Kopieren von Ticks von einem Time$Sale-Quellsymbol in ein benutzerdefiniertes Symbol, unter Verwendung der Standardfunktionalität der MT5-Plattform.

Dies ist ein kleiner, aber sehr ärgerlicher Fehler für diejenigen, die mit Börseninstrumenten arbeiten, denn dieser Fehler führt dazu, dass es bei benutzerdefinierten "kontinuierlichen" Futures, die in MT5 eingebaut sind, unmöglich ist, Indikatoren anzuwenden, die mit der Tick-Historie der Börse arbeiten!

Kontinuierliche NQ

 
Ist diese Compilerwarnung nicht überflüssig?
void OnStart()
{
  Print(DEAL_REASON_TP == ORDER_REASON_TP); // implicit conversion from 'enum ENUM_ORDER_REASON' to 'enum ENUM_DEAL_REASON'
}
 

Compiler-Fehler bei Enum-Konvertierung.

ENUM_DEAL_REASON Reason() { return(DEAL_REASON_CLIENT); }

void OnStart()
{
  ENUM_ORDER_REASON Reason1 = Reason();                    // 'Reason' - cannot convert enum
  ENUM_ORDER_REASON Reason2 = (ENUM_ORDER_REASON)Reason(); // OK
}

Suchbegriff:Oshibka 040.

 
fxsaber #:

Compiler-Fehler bei Enum-Konvertierung.

Suchbegriff:Oshibka 040.

Es scheint kein Fehler vorzuliegen. Jedes Enum ist ein eigener Typ. Eine kann nur durch eine explizite Umwandlung in eine andere umgewandelt werden. Der Compiler stürzt bei der impliziten Version ab.

 
Stanislav Korotky #:

Es scheint keine Fehler zu geben. Jedes Enum ist ein eigener Typ. Eine kann nur durch eine explizite Umwandlung in eine andere umgewandelt werden. Der Compiler schwört auf den impliziten.

Fehler anstelle von Warnung.

'Reason' - cannot convert enum
1 errors, 0 warnings            
 
fxsaber #:

Fehler anstelle von Warnung.

Na und?

 
Stanislav Korotky #:

Na und?

Nun, dann sollten wir solchen Code nicht kompilieren.

void OnStart()
{
  double d = 0;
  int i = d;
}
 
fxsaber #:

Fehler anstelle von Warnung.

Gemäß der Dokumentation: enumbezieht sich auf eine begrenzte Menge von Daten. In diesem Sinne unterscheiden sich Vergleich und Zuweisung nicht grundlegend: In beiden Fällen muss es entweder eine Warnung oder einen Fehler geben. Und die Tatsache, dass man vergleichen und nicht zuordnen kann, ist Unsinn.