Comment démarrer avec MT5, un résumé ! - page 2

 

Bientôt disponible -
Nouveau système de communication analogue au Telegram - lire ce post.

 

============

Ichimoku


Le début

  1. Système Ichimoku simple
  2. Système Ichimoku simple - règles pour les systèmes
  3. Scalping simple Ichimoku

Après

============

 

Un bon fil de discussion a été créé avec des informations visualisées - Lefil des astuces.
Il est fortement recommandé de lire ce petit fil de discussion à tous les débutants (pour savoir), et aux utilisateurs expérimentés (pour rafraîchir leurs connaissances).

----------------

Service freelance

  • Comment déposer des fonds sur votre compte MQL5
  • Comment passer à l'étape suivante
  • Comment laisser un commentaire
  • Qu'est-ce qu'une capture d'écran ?
  • Comment joindre un fichier de spécification préliminaire des besoins/des fichiers d'autres formats ?
  • Ce qu'il faut fournir à un développeur en cas d'erreur dans le programme
  • Comment insérer une image, un code, une vidéo ou un tableau dans un texte ?
  • Comment faire une capture d'écran sur un appareil mobile ?
  • Comment prolonger la période/le coût d'exécution d'un ordre
  • Ne pas disparaître pendant 5 jours après avoir fixé 3 jours pour l'exécutionClient : Comment créer une image GIF, au lieu d'une vidéo, pour l'intégrer dans un chat s

----------------

Plateforme

  • Comment installer un Expert Advisor/indicateur
  • Où se trouve le journal de la plateforme/tester/optimiser
  • Où se trouve l'ID de MetaQuotes pour confier les notifications push ?
  • Comment faire une capture d'écran d'une erreur via le menu graphique en trois clics
  • Où activer et configurer les notifications par e-mail
  • Où sont les fichiers avec lesquels un EA/indicateur fonctionne ?
  • Que sont les champs "description" et "icône" et où les trouver ?
  • Où trouver le numéro de build de la plateformeComment activer la fenêtre de données et voir les valeurs des indicateurs ?
  • Comment activer l'échelle de temps précise
  • Comment enregistrer un modèle de graphique
  • Comment ajouter une URL pour travailler via WebRequestOù trouver les fichiers EX4/EX5 ?

----------------

Conseiller expert

  • Qu'est-ce que le nombre magique ?
  • Comment fonctionne le trailing stopOù se trouve le journal de l'EA ?
  • Pourquoi un EA/indicateur est-il gris dans le navigateur ?
  • Quelle est la différence entre Netting et Hedging ?
  • Comment installer un produit acheté sur le marché

----------------

Testeur

  • Comment sauvegarder/charger un fichier set
  • Où trouver le journal de la plateforme/du testeur/de l'optimiseur
  • En quoi les modes de test sont-ils différents les uns des autres ?
  • Comment lancer et utiliser le test visuel
  • Comment télécharger un historique de prix disponible dans MetaTrader 4

 

Il s'agit d'une mise à jour très importante et très intéressante - veuillez la lire.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Plate-forme MetaTrader 5 Beta Build 1910 : Drag-and-drop non lié des graphiques et des bibliothèques .Net dans MQL5

MetaQuotes Software Corp., 2018.10.12 19:43

La version bêta de la plateforme MetaTrader 5 mise à jour sera publiée le 14 octobre 2018. Nous mettrons à jour notre serveur public MetaQuotes-Demo situé à access.metatrader5.com:443. Nous invitons tous les traders à participer aux tests afin d'évaluer les fonctionnalités de la plateforme mise à jour et d'aider les développeurs à corriger les erreurs.

Pour mettre à jour la plateforme MetaTrader 5 jusqu'à la build 1910, connectez-vous au serveur access.metatrader5.com:443.

La version finale de la nouvelle plateforme MetaTrader 5 sera publiée après le test bêta public.

La mise à jour comportera les changements suivants :

  1. Terminal : Vous pouvez désormais détacher les graphiques des symboles financiers de la fenêtre du terminal de trading.

    Cette fonctionnalité est pratique lorsque vous utilisez plusieurs moniteurs. Ainsi, vous pouvez placer la fenêtre principale de la plateforme sur un moniteur pour contrôler l'état de votre compte, et déplacer vos graphiques sur le second écran pour observer la situation du marché. Pour détacher un graphique du terminal, désactivez l'option Docked dans son menu contextuel. Ensuite, déplacez le graphique vers le moniteur souhaité.



    Une barre d'outils distincte sur les graphiques détachés permet d'appliquer des objets analytiques et des indicateurs sans devoir passer d'un moniteur à l'autre. Utilisez le menu contextuel de la barre d'outils pour gérer l'ensemble des commandes disponibles ou pour la masquer.

  2. Terminal : Mise à jour complète des chats intégrés. Ils prennent désormais en charge les dialogues de groupe et les canaux. Menez des discussions privées avec un groupe de personnes dans un environnement unifié sans passer d'une boîte de dialogue à l'autre et créez des canaux en fonction de vos intérêts et de vos langues. Communiquez avec vos collègues et amis de MQL5.community sans visiter le site web.

    Les discussions de groupe et les canaux peuvent être publics ou privés. Leurs créateurs décident s'il est possible de les rejoindre librement ou seulement sur invitation. Vous pouvez également assigner des modérateurs aux canaux et aux chats pour un contrôle supplémentaire de la communication.



  3. Terminal : Ajout d'une prise en charge de la précision accrue du volume pour le trading de crypto-monnaies. Désormais, le volume minimum possible des opérations de trading est de 0,00000001 lot. La profondeur de marché, l'heure et les ventes, ainsi que d'autres éléments d'interface offrent désormais la possibilité d'afficher des volumes précis à 8 décimales.

    Le volume minimal et son étape de changement dépendent des paramètres de l'instrument financier du côté du courtier.




  4. Terminal : Ajout de l'onglet des articles publiés sur MQL5.community à la fenêtre Toolbox. Plus de 600 documents détaillés sur le développement de stratégies de trading dans MQL5 sont maintenant disponibles sans avoir besoin de quitter le terminal. De nouveaux articles sont publiés chaque semaine.



  5. Terminal : Ajout de la prise en charge de l'authentification étendue à l'aide de certificats lors du travail sous Wine.
  6. Terminal : Correction de l'affichage de la profondeur du marché lorsqu'elle est limitée à un niveau.
  7. Terminal : Ajout de la commande "Enregistrer en tant qu'image" à la barre d'outils standard. Il est désormais beaucoup plus facile de prendre des photos de graphiques et de les partager dans la communauté.




  8. Terminal : Correction de l'application du décalage temporel lors de l'importation de barres et de ticks. Auparavant, le décalage n'était pas appliqué dans certains cas.



  9. MQL5 : Ajout du support natif des bibliothèques .NET avec l'importation de fonctions "intelligentes". Maintenant, les bibliothèques .NET peuvent être utilisées sans écrire de wrappers spéciaux - MetaEditor le fait tout seul.

    Pour travailler avec les fonctions des bibliothèques .NET, il suffit d'importer la DLL elle-même sans définir de fonctions spécifiques. MetaEditor importe automatiquement toutes les fonctions avec lesquelles il est possible de travailler :
    .
    • Structures simples (POD, plain old data)
    • Structures avec des types de données simples
    • Fonctions statiques publiques ayant des paramètres, dans lesquelles seuls les types simples et les structures POD ou leurs tableaux sont utilisés

    Pour appeler des fonctions de la bibliothèque, il suffit de l'importer :
    #import "TestLib.dll"
    
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       int x=6;
       TestClass::Inc(x);
       Print(x);
      }
    Le code C# de la fonction Inc de la TestClass se présente comme suit :
    public class TestClass
    {
       public static void Inc(ref int x)
       {
        x++;
       }
    }
    A la suite de l'exécution, le script renvoie la valeur 7.

  10. MQL5 : Ajout du support des spécificateurs inline, __inline et __forceinline lors de l'analyse du code. La présence des spécificateurs dans le code ne provoque aucune erreur et n'affecte pas la compilation. Pour le moment, cette fonctionnalité simplifie le transfert du code С++ vers MQL5.
    Trouvez plus d'informations sur les spécificateurs dans MSDN.

  11. MQL5 : Exécution significativement optimisée des programmes MQL5. Dans certains cas, l'amélioration des performances peut atteindre 10%. Recompilez vos programmes dans la nouvelle version de MetaEditor pour les rendre plus rapides.
    Malheureusement, les nouveaux programmes ne seront pas compatibles avec les versions précédentes du terminal en raison de cette optimisation supplémentaire. Les programmes compilés dans la version 1910 de MetaEditor et les suivantes ne peuvent pas être lancés dans les versions de terminal inférieures à 1880. Les programmes compilés dans les versions antérieures de MetaEditor peuvent être lancés dans les nouveaux terminaux.

  12. MQL5 : Optimisation significative de plusieurs fonctions MQL5.
  13. MQL5 : Ajout de nouvelles propriétés pour attacher/détacher les graphiques de la fenêtre principale du terminal et gérer leur position.

    Ajout des propriétés suivantes à l'énumération ENUM_CHART_PROPERTY_INTEGER:

    • CHART_IS_DOCKED - la fenêtre du graphique est ancrée. Si la valeur est 'false', le graphique peut être déplacé en dehors de la zone du terminal.
    • CHART_FLOAT_LEFT - la coordonnée gauche de la fenêtre graphique non ancrée par rapport à l'écran virtuel.
    • CHART_FLOAT_TOP - la coordonnée supérieure de la fenêtre du graphique désactivé par rapport à l'écran virtuel.
    • CHART_FLOAT_RIGHT - la coordonnée droite de la fenêtre graphique désactivée par rapport à l'écran virtuel.
    • CHART_FLOAT_BOTTOM - la coordonnée inférieure de la fenêtre du graphique désactivé par rapport à l'écran virtuel.

    Ajout des fonctions suivantes à l'énumération ENUM_TERMINAL_INFO_INTEGER:

    • TERMINAL_SCREEN_LEFT - la coordonnée gauche de l'écran virtuel. Un écran virtuel est un rectangle qui couvre tous les moniteurs. Si le système possède deux moniteurs classés de droite à gauche, la coordonnée gauche de l'écran virtuel peut se trouver à la limite de deux moniteurs.
    • TERMINAL_SCREEN_TOP - la coordonnée supérieure de l'écran virtuel.
    • TERMINAL_SCREEN_WIDTH - largeur du terminal.
    • TERMINAL_SCREEN_HEIGHT - hauteur du terminal.
    • TERMINAL_LEFT - la coordonnée gauche du terminal par rapport à l'écran virtuel.
    • TERMINAL_TOP - la coordonnée supérieure du terminal par rapport à l'écran virtuel.
    • TERMINAL_RIGHT - la coordonnée droite du terminal par rapport à l'écran virtuel.
    • TERMINAL_BOTTOM - la coordonnée inférieure du terminal par rapport à l'écran virtuel.

  14. MQL5 : Ajout du champ volume_real aux structures MqlTick et MqlBookInfo. Il est conçu pour travailler avec des volumes de précision accrue. La valeur volume_real a une priorité plus élevée que 'volume'. Le serveur utilisera cette valeur, si elle est spécifiée.

    struct  MqlTick
      {
       datetime         time;          // Last price update time
       double           bid;           // Current Bid price
       double           ask;           // Current Ask price
       double           last;          // Current price of the Last trade
       ulong            volume;        // Volume for the current Last price
       long             time_msc;      // Last price update time in milliseconds
       uint             flags;         // Tick flags
       double           volume_real;   // Volume for the current Last price with greater accuracy
      };

    struct MqlBookInfo
      {
       ENUM_BOOK_TYPE   type;            // order type from the ENUM_BOOK_TYPE enumeration
       double           price;           // price
       long             volume;          // volume
       double           volume_real;     // volume with greater accuracy
      };

  15. MQL5 : Ajout de nouvelles propriétés à l'énumération ENUM_SYMBOL_INFO_DOUBLE:

    • SYMBOL_VOLUME_REAL - le volume de la dernière transaction exécutée ;
    • SYMBOL_VOLUMEHIGH_REAL - le volume de transaction le plus élevé pour le jour en cours ;
    • SYMBOL_VOLUMELOW_REAL - le volume de transaction le plus faible pour la journée en cours ;

    Utilisez la fonction SymbolInfoDouble pour obtenir ces propriétés.

  16. MQL5 : Ajout de la propriété MQL_FORWARD à l'énumération ENUM_MQL_INFO_INTEGER - indicateur du mode de test avant.
  17. MQL5 : Assouplissement des exigences pour le casting des énumérations. Dans le cas d'un casting implicite, le compilateur substitue automatiquement la valeur d'une énumération correcte et affiche un avertissement.

    Pour le code suivant :
    enum Main
      {
       PRICE_CLOSE_,
       PRICE_OPEN_
      };
    
    input Main Inp=PRICE_CLOSE;
    //+------------------------------------------------------------------+
    //| Start function                                                   |
    //+------------------------------------------------------------------+
    void OnStart()
      {
      }
    Le compilateur affiche l'avertissement suivant :
    implicit conversion from 'enum ENUM_APPLIED_PRICE' to 'enum Main'
    'Main::PRICE_OPEN_' instead of 'ENUM_APPLIED_PRICE::PRICE_CLOSE' will be used
    Auparavant, l'erreur suivante était générée dans ce cas :
    'PRICE_CLOSE' - cannot convert enum
    Le compilateur affichera toujours l'erreur si les énumérations sont utilisées incorrectement dans les paramètres de la fonction.

  18. MQL5 : Correction de la compilation des fonctions template. Maintenant, lors de l'utilisation de fonctions template surchargées, seule la surcharge nécessaire, plutôt que toutes celles existantes, est instanciée.
    class X {  };
    
    void f(int)  {  }
      
    template<typename T>
    void a(T*) { new T(2); }  // previously, the compiler generated the error here
      
    template<typename T>
    void a()  { f(0); }
      
      
    void OnInit()  { a<X>(); }  
    
  19. MQL5 : Optimisation de certains cas d'accès à l'historique des ticks via la fonction CopyTicks*.
  20. Testeur : Correction du calcul de l'exactitude de la devise de dépôt lors du test/optimisation et de la génération des rapports correspondants.
  21. Testeur : Optimisation et accélération du fonctionnement du testeur de stratégie.
  22. MetaEditor : Correction de la recherche de mots entiers. Désormais, lors de la recherche, le trait de soulignement est compté comme un caractère ordinaire, plutôt que comme un délimiteur de mot.
  23. Mise à jour de la documentation.

 

Un bon fil de discussion a été lancé -Comment commencer avec MQL5

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading.

Comment commencer avec MQL5

Vladimir Karputov, 2018.12.24 20:34

Ce fil de discussion traite des exemples de code MQL5. Il y aura des exemples de comment obtenir des données à partir d'indicateurs, comment programmer des conseillers ... en général, toutes les questions du débutant au langage MQL5.


Si vous commencez tout juste à vous familiariser avec le terminal MetaTrader 5, je vous recommande les fils de discussion suivants :

 

Il y a un article que tout vendeur sur le marché devrait lire : il s'agit de la validation des produits du marché.

----------------

Les vérifications qu'un robot de trading doit passer avant d'être publié sur le Marché

Why products are checked before they are published in the Market 

Avant qu'un produit ne soit publié sur le marché, il doit subir des contrôles préliminaires obligatoires, car une petite erreur dans la logique de l'expert ou de l'indicateur peut entraîner des pertes sur le compte de trading. C'est pourquoi nous avons développé une série de contrôles de base pour garantir le niveau de qualité requis des produits de la Bourse.

Si des erreurs sont identifiées par les modérateurs du marché lors du processus de vérification de votre produit, vous devrez toutes les corriger. Cet article examine les erreurs les plus fréquentes commises par les développeurs dans leurs robots de trading et indicateurs techniques. Nous vous recommandons également de lire les articles suivants :

 

Merci mec...

Très utile, gros effort...

 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Nouvelle plateforme MetaTrader 5 build 2005 : calendrier économique, applications MQL5 en tant que services et API en langage R

MetaQuotes Software Corp. , 2019.02.20 17:20

La mise à jour de la plateforme MetaTrader 5 sera publiée le 21 février 2019. La nouvelle version comporte les changements suivants :

  1. Terminal : calendrier économique intégré entièrement révisé.

    Le calendrier économique est notre solution propriétaire. Vous y trouverez plus de 600 actualités financières et indicateurs liés aux 13 plus grandes économies mondiales : États-Unis, Union européenne, Japon, Royaume-Uni, Canada, Australie, Chine, entre autres. Les données pertinentes sont collectées à partir de sources ouvertes en temps réel.

    La nouvelle version propose des contenus mis à jour et des filtres d'événements avancés : par heure, priorité, devises et pays.

    Les données du calendrier sont désormais accessibles à partir des programmes MQL5. Veuillez voir ci-dessous pour plus de détails.




  2. Terminal : Ajout d'un nouveau type d'applications MQL5 — Services. Ce nouveau type permet de créer des flux de prix personnalisés pour le terminal, c'est-à-dire d'implémenter la livraison des prix à partir de systèmes externes en temps réel, tout comme il est implémenté sur les serveurs de trading des courtiers.

    Contrairement aux Expert Advisors, aux indicateurs et aux scripts, les services ne sont pas liés à un graphique spécifique. Ces applications s'exécutent en arrière-plan et sont lancées automatiquement au démarrage du terminal (sauf si une telle application a été arrêtée de force).

    Les services peuvent être gérés à partir d'une nouvelle section dans la fenêtre du navigateur :





    Comment créer des services
    Pour créer un modèle de service, utilisez l'option correspondante de l'assistant MQL5 . Les services ont un point d'entrée OnStart , similaire aux scripts. À ce stade, vous pouvez implémenter un cycle sans fin de réception et de traitement des données à l'aide des fonctions réseau .

    Comment lancer des services
    Pour exécuter plusieurs copies d'Expert Advisor ou d'indicateurs avec différents paramètres, vous devez les lancer sur différents graphiques. Dans ce cas, différentes instances de programme sont créées, qui fonctionnent alors indépendamment. Les services ne sont pas liés aux graphiques, c'est pourquoi un mécanisme spécial a été mis en place pour la création d'instances de service.

    Sélectionnez un service dans le Navigateur et cliquez sur "Ajouter un service" dans son menu contextuel. Cela ouvrira une boîte de dialogue standard du programme MQL5, dans laquelle vous pouvez activer/désactiver le trading et l'accès aux paramètres du signal, ainsi que définir divers paramètres.




    Une instance de service peut être lancée et arrêtée à l'aide du menu d'instance approprié. Pour gérer toutes les instances, utilisez le menu de service.

  3. Terminal : Un programme d'apprentissage a été ajouté.

    La nouvelle fonctionnalité aidera les débutants à apprendre à interagir avec la plateforme. Nous avons ajouté plus de 100 astuces interactives concernant les principales fonctionnalités de la plateforme.

    • Les conseils sont affichés de manière transparente sous forme de barre de progression sur la barre d'outils et ne distraient donc pas l'utilisateur.
    • Les conseils n'apparaissent que pour les actions que vous n'avez jamais effectuées sur la plateforme.
    • Tous les conseils incluent des liens interactifs, par lesquels vous pouvez naviguer vers les éléments d'interface pertinents. Par exemple, une boîte de dialogue de trading ou un menu avec le programme souhaité peut être lancé directement à partir de la pointe.

    La zone remplie de la barre de progression augmente chaque fois que vous effectuez des actions appropriées et que vous poursuivez l'entraînement.




  4. Terminal : L'historique du compte de trading peut être présenté sous forme de positions. La plateforme collecte des données sur les transactions liées au poste (ouverture, augmentation de volume, clôture partielle ou totale) et regroupe les informations dans un seul enregistrement. Ainsi, vous pouvez accéder aux détails de la position : heure d'ouverture et de clôture, volume, prix et résultat. Cette forme de présentation efficace est désormais disponible dans les rapports d'historique exportés vers des fichiers.




  5. Terminal : Ajout d'une nouvelle API permettant de demander les données du terminal MetaTrader 5 via des applications utilisant le langage R.

    Nous avons préparé un package MetaTrader spécial. Il contient des DLL pour les interactions entre R et le terminal MetaTrader 5, de la documentation et des fichiers r auxiliaires. Nous terminons l'enregistrement du package dans le référentiel CRAN , après quoi il sera disponible pour téléchargement et installation.




    Le package peut être installé à l'aide d'une commande spéciale :
    R CMD INSTALL --build MetaTrader

    Les commandes suivantes liées à la demande de données sont disponibles :

    • MT5Initialize initialise et établit la connexion avec le terminal MetaTrader 5. Si nécessaire, le terminal est lancé lors de l'exécution de la commande.
    • MT5Shutdown se désinitialise et se déconnecte de MetaTrader 5.
    • MT5Version obtient la version du terminal MetaTrader 5.
    • MT5TerminalInfo obtient l'état et les paramètres de connexion du terminal au serveur d'un courtier (numéro de compte et adresse du serveur).
    • MT5WaitTerminal attend que le terminal MetaTrader 5 se connecte au serveur d'un courtier.
    • MT5CopyTicksFrom(symbol, from, count, flags) copie le nombre de ticks spécifié à partir de la date spécifiée. La date est spécifiée en millisecondes depuis le 01.01.1970.
    • MT5CopyTicksRange(symbol, from, to, flags) copie les ticks à partir de la période spécifiée. Les dates sont spécifiées en millisecondes depuis le 01.01.1970.
    • MT5CopyRatesFrom(symbol, timeframe, from, count) copie le nombre spécifié de barres d'une minute à partir de la date spécifiée. La date est spécifiée en secondes depuis le 01.01.1970.
    • MT5CopyRatesFromPos(symbol, timeframe, start_pos, count) copie les barres d'une minute à partir de la position spécifiée par rapport à la dernière barre.
    • MT5CopyRatesFromRange(symbol, timeframe, date_from, date_to) copie les barres à partir de la période spécifiée. Les dates sont spécifiées en secondes depuis le 01.01.1970.

    La liste des commandes prises en charge sera encore élargie.

  6. Terminal : boîte de dialogue Close By optimisée utilisée pour fermer une position par une position opposée. Désormais, le dialogue n'est pas ralenti même si vous avez un grand nombre de positions ouvertes.
  7. Terminal : Correction des erreurs de calcul de symboles synthétiques , en raison desquelles des données pouvaient parfois être ignorées.
  8. Terminal : lorsqu'un symbole personnalisé est supprimé, les fichiers stockant son historique de ticks et de barres sont également supprimés. Cela évite l'accumulation de données inutilisées sur le disque dur.
  9. Terminal : Correction de l'affichage des résultats de recherche sur les écrans High DPI.
  10. MQL5 : Accès implémenté aux données du calendrier économique des programmes MQL5.

    Nouvelles fonctions

    CalendarCountryById — obtient la description du pays par identifiant.
     bool CalendarCountryById(
       const long            country_id,    // country ID
       MqlCalendarCountry&  country        // country description
       );
    CalendarEventById — obtient la description de l'événement par identifiant.
     bool CalendarEventById(
       const long            event_id,      // event ID
       MqlCalendarEvent&     event           // event description
       );
    CalendarValueById — obtient la description de la valeur de l'événement par identifiant.
     bool CalendarValueById(
       const long            value_id,      // value ID
       MqlCalendarValue&     value           // value description
       );
    CalendarEventByCountry — obtient le tableau des événements disponibles pour le pays.
     bool CalendarEventByCountry(
       string                country_code,  // country code
       MqlCalendarEvent&    events[]       // array of events
       );
    CalendarEventByCurrency — obtient le tableau des événements disponibles pour la devise affectée.
     bool CalendarEventByCurrency(
       string                currency,       // currency
       MqlCalendarEvent&    events[]       // array of events
       );
    CalendarValueHistoryByEvent — obtient le tableau de valeurs pour la période spécifiée, par identifiant d'événement.
     bool CalendarValueHistoryByEvent(
       ulong                 event_id,      // event ID
       MqlCalendarValue&    values[],      // array of values
       datetime              datetime_from, // period beginning date
       datetime              datetime_to= 0  // period end date
       );
    CalendarValueHistory — obtient le tableau de valeurs pour la période spécifiée pour tous les événements, filtrés par pays et/ou devise.
     bool CalendarValueHistory(
       MqlCalendarValue&    values[],           // array of values
       datetime              datetime_from,     // beginning of period
       datetime              datetime_to= 0 ,     // end of period
       string                country_code=NULL, // country code
       string               currency=NULL      // currency
       );
    CalendarValueLastByEvent — obtient un tableau des dernières valeurs d'événement par identifiant. Cette fonction permet de demander les valeurs apparues depuis la précédente demande. Le paramètre d'entrée/sortie "change_id" est également utilisé pour cette opération.

    Chaque fois que la base de données du calendrier change, la propriété "change_id" (l'identifiant du dernier changement) est mise à jour. Lors de la demande de données, vous spécifiez "change_id" et le terminal renvoie les événements qui sont apparus après cette heure, ainsi que la valeur actuelle de "change_id", qui peut être utilisée pour la prochaine demande. Lors du premier appel de la fonction, spécifiez le "change_id" nul : la fonction ne renverra aucun événement, mais renverra le "change_id" actuel pour les requêtes ultérieures.
     bool CalendarValueHistory(
       ulong                 event_id,           // event ID
       ulong &               change_id,         // last calendar change ID
       MqlCalendarValue&    values[]           // array of values
       );
    CalendarValueLast — obtient le tableau des dernières valeurs pour tous les événements, filtrés par pays et/ou devise. Cette fonction permet de demander les valeurs apparues depuis la précédente demande. Comme pour CalendarValueLastByEvent, la propriété "change_id" est utilisée pour la requête.
     bool CalendarValueHistory(
       ulong                 event_id,           // event ID
       ulong &               change_id,         // last calendar change ID
       MqlCalendarValue&    values[],           // array of values
       string                country_code=NULL, // country code
       string currency=NULL                     // currency
       );

    Nouveaux ouvrages

    MqlCalendarCountry — description du pays.
     struct MqlCalendarCountry
      {
       ulong              id;                         // country ID in ISO 3166-1
       string             name;                       // text name of the country
       string             code;                       // code name of the country in ISO 3166-1 alpha-2
       string             currency;                   // country currency code
       string             currency_symbol;           // country currency symbol/sign
       string             url_name;                   // country name used in URL on mql5.com
      };
    MqlCalendarEvent — description de l'événement.
     struct MqlCalendarEvent
      {
       ulong                           id;           // event ID
       ENUM_CALENDAR_EVENT_TYPE       type;         // event type
       ENUM_CALENDAR_EVENT_SECTOR     sector;       // sector to which the event belongs
       ENUM_CALENDAR_EVENT_FREQUENCY  frequency;     // event release frequency
       ENUM_CALENDAR_EVENT_TIMEMODE   time_mode;     // event release time mode
       ulong                           country_id;   // country ID
       ENUM_CALENDAR_EVENT_UNIT       unit;         // unit for the event values
       ENUM_CALENDAR_EVENT_IMPORTANCE importance;   // event importance
       ENUM_CALENDAR_EVENT_MULTIPLIER multiplier;   // event importance multiplier
       uint                            digits;       // number of decimal places in the event value
       string                          source_url;   // source URL
       string                          event_code;   // event code
       string                          name;         // text name of the event in the terminal language
      };
    MqlCalendarValue — description de la valeur de l'événement.
     struct MqlCalendarValue
      {
       ulong              id;                         // value ID
       ulong              event_id;                   // event ID
       datetime           time;                       // event date and time
       datetime           period;                     // period, for which the event is published
       int                revision;                   // published indicator revision in relation to the reported period
       long               actual_value;               // current event value
       long               prev_value;                 // previous event value
       long               revised_prev_value;         // revised previous event value
       long               forecast_value;             // forecast event value
       ENUM_CALENDAR_EVENT_IMPACRT impact_type;     // potential impact on the currency rate
      };

    Nouvelles énumérations

     enum ENUM_CALENDAR_EVENT_FREQUENCY
      {
       CALENDAR_FREQUENCY_NONE            = 0 ,   // not used
       CALENDAR_FREQUENCY_WEEK            = 1 ,   // weekly
       CALENDAR_FREQUENCY_MONTH           = 2 ,   // monthly
       CALENDAR_FREQUENCY_QUARTER         = 3 ,   // quarterly
       CALENDAR_FREQUENCY_YEAR            = 4 ,   // yearly
       CALENDAR_FREQUENCY_DAY             = 5 ,   // daily
      };
    
    enum ENUM_CALENDAR_EVENT_TYPE
      {
       CALENDAR_TYPE_EVENT                = 0 ,   // event (meeting, speech, etc.)
       CALENDAR_TYPE_INDICATOR            = 1 ,   // indicator
       CALENDAR_TYPE_HOLIDAY              = 2 ,   // holiday
      };
    
    enum ENUM_CALENDAR_EVENT_SECTOR
      {
       CALENDAR_SECTOR_NONE               = 0 ,   // no
       CALENDAR_SECTOR_MARKET             = 1 ,   // market
       CALENDAR_SECTOR_GDP                = 2 ,   // GDP
       CALENDAR_SECTOR_JOBS               = 3 ,   // jobs
       CALENDAR_SECTOR_PRICES             = 4 ,   // prices
       CALENDAR_SECTOR_MONEY              = 5 ,   // money
       CALENDAR_SECTOR_TRADE              = 6 ,   // trade
       CALENDAR_SECTOR_GOVERNMENT         = 7 ,   // government
       CALENDAR_SECTOR_BUSINESS           = 8 ,   // business
       CALENDAR_SECTOR_CONSUMER           = 9 ,   // consumer
       CALENDAR_SECTOR_HOUSING            = 10 ,   // housing
       CALENDAR_SECTOR_TAXES              = 11 ,   // taxes
       CALENDAR_SECTOR_HOLIDAYS           = 12 ,   // holidays
      };
      
    enum ENUM_CALENDAR_EVENT_IMPORTANCE
      {
       CALENDAR_IMPORTANCE_LOW            = 0 ,   // no
       CALENDAR_IMPORTANCE_NONE           = 1 ,   // low
       CALENDAR_IMPORTANCE_MODERATE       = 2 ,   // moderate
       CALENDAR_IMPORTANCE_HIGH           = 3 ,   // high
      };
    
    enum ENUM_CALENDAR_EVENT_UNIT
      {
       CALENDAR_UNIT_NONE                 = 0 ,   // no
       CALENDAR_UNIT_PERCENT              = 1 ,   // percent
       CALENDAR_UNIT_CURRENCY             = 2 ,   // national currency
       CALENDAR_UNIT_HOUR                 = 3 ,   // number of hours
       CALENDAR_UNIT_JOB                  = 4 ,   // number of jobs
       CALENDAR_UNIT_RIG                  = 5 ,   // number of rigs
       CALENDAR_UNIT_USD                  = 6 ,   // US dollar
       CALENDAR_UNIT_PEOPLE               = 7 ,   // number of people
       CALENDAR_UNIT_MORTGAGE             = 8 ,   // number of mortgages
       CALENDAR_UNIT_VOTE                 = 9 ,   // number of votes
       CALENDAR_UNIT_BARREL               = 10 ,   // number of barrels
       CALENDAR_UNIT_CUBICFEET            = 11 ,   // volume in cubic feet
       CALENDAR_UNIT_POSITION             = 12 ,   // number of job positions
       CALENDAR_UNIT_BUILDING             = 13    // number of buildings
      };
      
    enum ENUM_CALENDAR_EVENT_MULTIPLIER
      {
       CALENDAR_MULTIPLIER_NONE           = 0 ,   // no    
       CALENDAR_MULTIPLIER_THOUSANDS      = 1 ,   // thousands
       CALENDAR_MULTIPLIER_MILLIONS       = 2 ,   // millions
       CALENDAR_MULTIPLIER_BILLIONS       = 3 ,   // billions
       CALENDAR_MULTIPLIER_TRILLIONS      = 4 ,   // trillions
      };
      
    enum ENUM_CALENDAR_EVENT_IMPACRT
      {
       CALENDAR_IMPACT_NA                 = 0 ,   // not available
       CALENDAR_IMPACT_POSITIVE           = 1 ,   // positive
       CALENDAR_IMPACT_NEGATIVE           = 2 ,   // negative
      };
    
    enum ENUM_CALENDAR_EVENT_TIMEMODE
      {
       CALENDAR_TIMEMODE_DATETIME         = 0 ,   // the source publishes the exact time
       CALENDAR_TIMEMODE_DATE             = 1 ,   // the event takes the whole day
       CALENDAR_TIMEMODE_NOTIME           = 2 ,   // the source does not publish the event time
       CALENDAR_TIMEMODE_TENTATIVE        = 3 ,   // the source provides only date, but does not publish the exact time in advance, exact time is added when event occurs
      };

    Nouveaux codes d'erreur

    ERR_CALENDAR_MORE_DATA             = 5400 ,   // the array is small for the whole result (values which fit in the array were passed)
    ERR_CALENDAR_TIMEOUT               = 5401 ,   // timed out waiting for a response to the calendar data request
    ERR_CALENDAR_NO_DATA               = 5402 ,   // data not found

  11. MQL5 : Corrections et améliorations de la vitesse de fonctionnement liées à l'historique des ticks et des barres.
  12. MQL5 : Corrections et améliorations significatives de la vitesse de fonctionnement liées aux fonctions de modification de l'historique des ticks et des barres des symboles de trading personnalisés, CustomTicks* et CustomRates* .
  13. MQL5 : Nouvelles fonctions de conversion de données.

    CharArrayToStruct copie un tableau uchar dans une structure POD.
     bool   CharArrayToStruct(
       void &         struct_object,    // structure
       const uchar &  char_array[],      // array
       uint           start_pos= 0         // starting position in the array
       );
    StructToCharArray copie une structure POD dans un tableau uchar.
     bool   StructToCharArray(
       const void &  struct_object,      // structure
       uchar &       char_array[],      // array
       uint          start_pos= 0         // starting position in the array
       );

  14. Ajout de la fonction MathSwap pour changer l'ordre des octets dans les valeurs ushort, uint et ulong.
     ushort MathSwap( ushort value );
    uint    MathSwap( uint    value );
    ulong   MathSwap( ulong    value );

  15. MQL5 : Fonctions réseau ajoutées pour créer des connexions TCP vers des hôtes distants via des sockets système :

    • SocketCreate crée une socket avec des drapeaux spécifiés et renvoie son handle
    • SocketClose ferme le socket
    • SocketConnect se connecte au serveur, avec contrôle du délai d'attente
    • SocketIsConnected vérifie si le socket est actuellement connecté
    • SocketIsReadable obtient le nombre d'octets pouvant être lus à partir du socket
    • SocketIsWritable vérifie si l'écriture de données sur ce socket est possible à l'heure actuelle
    • SocketTimeouts définit les délais de réception et d'envoi des données pour l'objet socket système
    • SocketRead lit les données d'un socket
    • SocketSend écrit des données dans un socket
    • SocketTlsHandshake initie une connexion sécurisée TLS (SSL) avec l'hôte spécifié à l'aide du protocole TLS Handshake
    • SocketTlsCertificate reçoit des informations concernant le certificat utilisé pour la connexion réseau sécurisée
    • SocketTlsRead lit les données d'une connexion TLS sécurisée
    • SocketTlsReadAvailable lit toutes les données disponibles à partir d'une connexion TLS sécurisée
    • SocketTlsSend envoie des données à l'aide d'une connexion TLS sécurisée

    L'adresse de l'hôte, auquel la connexion à l'aide des fonctions réseau est établie, doit être explicitement ajoutée à la liste des adresses autorisées dans les paramètres du terminal.

    De nouveaux codes d'erreur ont été ajoutés pour les opérations avec les fonctions réseau :

    • ERR_NETSOCKET_INVALIDHANDLE (5270) : handle de socket invalide passé à la fonction
    • ERR_NETSOCKET_TOO_MANY_OPENED (5271) : trop de sockets ouverts (maximum 128)
    • ERR_NETSOCKET_CANNOT_CONNECT (5272) : erreur lors de la connexion à l'hôte distant
    • ERR_NETSOCKET_IO_ERROR (5273) : erreur lors de l'envoi/de la réception de données depuis le socket
    • ERR_NETSOCKET_HANDSHAKE_FAILED (5274) : erreur d'établissement de connexion sécurisée (prise de contact TLS)
    • ERR_NETSOCKET_NO_CERTIFICATE (5275) — aucune donnée sur le certificat utilisé pour la connexion sécurisée

  16. MQL5 : Ajout de nouvelles fonctions pour les opérations sur les chaînes :

    StringReserve réserve pour une chaîne la mémoire tampon de la taille spécifiée.
     bool   StringReserve(
       string &        string_var,           // string
       uint            new_capacity          // buffer size for the string
       );
    StringSetLength définit la longueur de chaîne spécifiée en caractères.
     bool   StringSetLength(
       string &        string_var,          // string
       uint            new_length           // new string length
       );

  17. MQL5 : Ajout d'une nouvelle fonction pour les opérations sur les tableaux :

    ArrayRemove supprime d'un tableau le nombre spécifié d'éléments commençant par l'index spécifié.
     bool   ArrayRemove(
       void &         array[],              // array of any type
       uint           start,                // the index to start removal
       uint           count=WHOLE_ARRAY      // number of elements
       );
    ArrayInsert insère dans un tableau récepteur le nombre spécifié d'éléments à partir du tableau source, en commençant par l'index spécifié.
     bool   ArrayInsert(
       void &         dst_array[],          // receiver array
       const void &   src_array[],          // source array
       uint           dst_start,            // index in the receiver array where to insert
       uint           src_start= 0 ,           // index in the source array to start copying
       uint           count=WHOLE_ARRAY     // number of inserted elements
       );
    ArrayReverse inverse dans un tableau le nombre spécifié d'éléments commençant par l'index spécifié.
     bool   ArrayReverse(
       void &         array[],              // array of any type
       uint           start= 0 ,               // index to start reversing
       uint           count=WHOLE_ARRAY      // number of elements
       );

  18. MQL5 : Un nouveau paramètre "uint count" a été ajouté dans les fonctions CustomRatesUpdate , CustomRatesReplace , CustomTicksAdd et CustomTicksReplace . Il permet de spécifier le nombre d'éléments du tableau passé, qui seront utilisés pour ces fonctions. La valeur WHOLE_ARRAY est utilisée pour le paramètre par défaut. Cela signifie que l'ensemble du réseau sera utilisé.
  19. MQL5 : Ajout de la fonction CustomBookAdd pour transmettre le statut du Depth of Market pour un symbole personnalisé. La fonction permet de diffuser le Depth of Market comme si les prix arrivaient du serveur d'un broker.
     int   CustomBookAdd(
       const string         symbol,             // symbol name
       const MqlBookInfo&  books[]             // an array with the DOM elements descriptions
       uint                 count=WHOLE_ARRAY   // number of elements to be used
       );
  20. MQL5 : Ajout de la surcharge de la fonction CustomSymbolCreate . Cela permet la création d'un symbole de trading personnalisé basé sur un symbole existant. Après la création, toute propriété de symbole peut être modifiée à l'aide des fonctions correspondantes.
     bool   CustomSymbolCreate (
       const string         symbol_name,       // custom symbol name
       const string         symbol_path= "" ,    // name of the group in which the symbol will be created
       const string         symbol_origin=NULL // name of the symbol based on which the custom symbol will be created
       );
    Le nom du symbole, à partir duquel les propriétés du symbole personnalisé doivent être copiées, est spécifié dans le paramètre "symbol_origin".

  21. La fonction StringToTime convertissant la chaîne avec date/heure en une valeur datetime a été mise à jour. Désormais, il prend en charge les formats de date suivants :

    • aaaa.mm.jj [hh:mi]
    • aaaa.mm.jj [hh:mi:ss]
    • aaaammjj [hh:mi:ss]
    • aaaammjj [hhmiss]
    • aaaa/mm/jj [hh:mi:ss]
    • aaaa-mm-jj [hh:mi:ss]

  22. MQL5 : Nouvelle propriété TERMINAL_VPS dans l'énumération ENUM_TERMINAL_INFO_INTEGER ; il montre que le terminal est en cours d'exécution sur le serveur d' hébergement virtuel MetaTrader (MetaTrader VPS). Si une application s'exécute sur un serveur d'hébergement, vous pouvez désactiver toutes ses fonctions visuelles, car le serveur virtuel n'a pas d'interface utilisateur graphique.
  23. MQL5 : Nouvelle propriété SYMBOL_EXIST dans l'énumération ENUM_SYMBOL_INFO_INTEGER , signifie que le symbole sous ce nom existe.
  24. MQL5 : Correction du typage lors de l'utilisation des pré-déclarations de fonction de modèle.
  25. MQL5 : Ajout de la réinitialisation des indicateurs lors du changement de compte de trading.
  26. MQL5 : Fonction StringSplit optimisée.
  27. MQL5 : correction d'erreurs dans le fonctionnement standard de la bibliothèque.
  28. Testeur : Ajout de la fonction TesterStop — arrêt anticipé de routine d'un Expert Advisor sur un agent de test. Désormais, vous pouvez arrêter de force les tests après avoir atteint le nombre spécifié de transactions perdantes, un niveau de retrait prédéfini ou tout autre critère.

    Les tests effectués à l'aide de cette fonction sont considérés comme réussis. Après l'appel de la fonction, l'historique de trading obtenu lors des tests et toutes les statistiques de trading sont transmis au terminal.

  29. Testeur : capacité désactivée de tester et d'optimiser les Expert Advisors via MQL5 Cloud Network en mode tick réel. Ce mode ne peut être utilisé que sur des agents locaux et des fermes de réseau local.
  30. Testeur : Amélioration du travail avec les indicateurs lors des tests visuels. Désormais, le graphique des prix et les lignes de l'indicateur sont dessinés de manière synchrone, même pour la vitesse de visualisation maximale.
  31. Testeur : tests et optimisation optimisés et considérablement accélérés.
  32. Testeur : Correction du débogage des indicateurs sur les données historiques. Maintenant, les fonctions d'indicateur OnInit et OnDeinit peuvent être correctement déboguées.
  33. Testeur : implémentation d'un accès plus rapide aux données historiques lors des tests d'experts-conseils multidevises.
  34. Testeur : Correction du blocage occasionnel du testeur visuel lors du débogage sur les données historiques.
  35. Testeur : Implémentation d'un démarrage plus rapide des passes d'optimisation lors du traitement d'un package de tâches par un agent.
  36. Testeur : modification de la politique de distribution des packages de tâches aux agents de test. La taille du package a été augmentée et, par conséquent, la consommation de ressources sur les opérations réseau a été considérablement réduite.
  37. Testeur : modification du comportement des options permettant l'utilisation d'agents locaux, réseau et cloud. Désormais, lorsque vous désactivez les options, les agents terminent le traitement des tâches reçues, alors qu'aucune nouvelle tâche ne leur est confiée. Dans les versions antérieures, le comportement était similaire à la commande "Désactiver", qui arrêtait immédiatement le fonctionnement de l'agent.




  38. MetaEditor : ajout de la prise en charge des caractères non ANSI dans le débogueur. Désormais, les expressions s'affichent correctement même si le nom de la variable est spécifié en cyrillique.
  39. MetaEditor : Correction de l'affichage des résultats de recherche sur les écrans High DPI.
  40. Ajout de la traduction de l'interface utilisateur en croate.
  41. La documentation a été mise à jour.
La mise à jour sera disponible via le système LiveUpdate.

 

Bonjour.

Dois-je supprimer ma build 1940 avant d'installer cette 2005 ?
J'ai essayé sans désinstaller et après installation c'est la même 1940 qu'avant.
De plus, je n'ai pas pu mettre à jour depuis l'année dernière, une raison ?
Dois-je tout supprimer et réessayer ?


Merci...

 
utile pour les débutants
Raison: