Mise à à jour de la Plateforme MetaTrader 5 build 3280 : Améliorations et corrections grâce aux retours des traders - page 2

 

Puis-je suggérer une amélioration ... Elle est la suivante : En exécutant le code script suivant

//+------------------------------------------------------------------+
//| 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"));
}

dans n'importe quelle fenêtre, nous aurons une nouvelle fenêtre ouverte avec le symbole EURUSD et nous pourrons ajouter un indicateur personnalisé dans la fenêtre nouvellement créée ..... PARFAIT... Cependant, si nous transformons ce même script en un service comme indiqué ci-dessous :

#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"));
}

le comportement sera déjà différent, la fenêtre sera créée comme prévu, mais même en ayant la valeur de l'ID de la fenêtre, nous ne pouvons pas ajouter d'indicateur dans la fenêtre, elle renvoie l'indicateur 4802 erreur ....

Ce serait TRES BON si un service pouvait ajouter un indicateur, puisque nous pouvons utiliser les services pour faire un travail supplémentaire, sans surcharger un EA par exemple, mais même si ce n'était pas possible de le faire, il y a la suggestion de qui sait, permettre à un service d'exécuter un script, de toute façon cela aiderait beaucoup....

Et si ce n'est pas trop abuser ... ce serait également bien si le langage MQL5 avait un EXIT() pour permettre un moyen rapide de sortir du code récursif lorsqu'il génère un échec, mais pas au lieu d'avoir une sortie abrupte, nous pouvons traiter l'erreur et terminer complètement l'exécution du programme via l'appel EXIT()... tout comme ce qui se passe lorsque nous appelons ExpertRemove() pour terminer un EA ... en tout cas MERCI POUR L'ATTENTION ... 😁👍

 

J'ai installé MT5 plusieurs fois pour le mode /portbale. Trois fonctionnent actuellement en parallèle, deux sont sur le canal "release" car ils agissent, et une sur le canal "beta".

Malheureusement, la fenêtre qui demande, lors d'une nouvelle mise à jour, s'il faut mettre à jour maintenant ou plus tard, n'indique pas quelle version peut être mise à jour : Release ou Beta :


Il serait bien que cette fenêtre indique simplement :"La mise à jour de la version (ou la mise à jour bêta) a été téléchargée. A temps ... "

L'utilisateur saurait ainsi s'il veut effectuer la mise à jour pendant la semaine (FX est ouvert) ou plutôt le week-end.

On pourrait peut-être aussi distinguer les mises à jour de la version et les mises à jour bêta par un code couleur. Cela permettrait d'éviter les erreurs.

 
MetaQuotes:

Le vendredi 29 avril 2022, une version mise à jour de la plateforme MetaTrader 5 sera publiée. Nous y avons apporté quelques ajouts et corrections mineurs basés sur les commentaires reçus après la publication de la version 3270.

La mise à jour comprend les changements suivants :

  1. Terminal : Correction du remplissage des niveaux de Trailing Stop standard dans le menu contextuel des ordres et positions ouverts.
  2. Terminal : Mise à jour des traductions de l'interface utilisateur.
  3. Corrections pour les journaux croisés.

La mise à jour sera disponible via le système Live Update.

Puisqu'il s'agit de "petits" correctifs, je vous demande d'inclure dans la prochaine version un correctif pour ce bogue : suppression de l'information sur le volume des ticks lors de la copie des ticks d'un symbole source Time$Sale vers un symbole personnalisé, en utilisant la fonctionnalité standard de la plateforme MT5.

Il s'agit d'un petit bug, mais très ennuyeux pour ceux qui travaillent avec des instruments d'échange, parce que ce bug conduit au fait que sur les futures "continus" personnalisés, construits dans MT5, il est impossible d'appliquer des indicateurs qui fonctionnent avec l'historique des tics d'échange !

NQ continu

 
Cet avertissement du compilateur n'est-il pas redondant ?
void OnStart()
{
  Print(DEAL_REASON_TP == ORDER_REASON_TP); // implicit conversion from 'enum ENUM_ORDER_REASON' to 'enum ENUM_DEAL_REASON'
}
 

Erreur de compilation avec la conversion enum.

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
}

Chaîne de recherche:Oshibka 040.

 
fxsaber #:

Erreur de compilation avec la conversion enum.

Chaîne de recherche:Oshibka 040.

Il ne semble pas y avoir d'erreur. Chaque enum est son propre type. L'un ne peut être converti en un autre que par une conversion explicite. Le compilateur se plantera sur l'implicite.

 
Stanislav Korotky #:

Il ne semble pas y avoir d'erreurs. Chaque enum est son propre type. L'un ne peut être converti en un autre que par une conversion explicite. Le compilateur jure sur l'implicite.

Erreur au lieu d'Avertissement.

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

Erreur au lieu d'Avertissement.

Et alors ?

 
Stanislav Korotky #:

Et alors ?

Alors, ne compilons pas un tel code.

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

Erreur au lieu d'Avertissement.

Selon la documentation : enumfait référence à un ensemble limité de données. En ce sens, la comparaison et l'affectation ne sont pas fondamentalement différentes : dans les deux cas, il doit y avoir soit un avertissement, soit une erreur. Et le fait que vous puissiez comparer et que vous ne puissiez pas assigner est un non-sens.