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
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 :
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.
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.
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.
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.
Terminal : Ajout de la prise en charge de l'authentification étendue à l'aide de certificats lors du travail sous Wine.
Terminal : Correction de l'affichage de la profondeur du marché lorsqu'elle est limitée à un niveau.
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é.
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.
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 |//+------------------------------------------------------------------+voidOnStart()
{
int x=6;
TestClass::Inc(x);
Print(x);
}
Le code C# de la fonction Inc de la TestClass se présente comme suit :
A la suite de l'exécution, le script renvoie la valeur 7.
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.
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.
MQL5 : Optimisation significative de plusieurs fonctions MQL5.
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.
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.
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 enumerationdouble price; // pricelong volume; // volumedouble volume_real; // volume with greater accuracy
};
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 |//+------------------------------------------------------------------+voidOnStart()
{
}
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.
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 heretemplate<typename T>
void a() { f(0); }
voidOnInit() { a<X>(); }
MQL5 : Optimisation de certains cas d'accès à l'historique des ticks via la fonction CopyTicks*.
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.
Testeur : Optimisation et accélération du fonctionnement du testeur de stratégie.
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.
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 :
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 :
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.
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.
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.
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.
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.
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.
Terminal : Correction des erreurs de calcul de symboles synthétiques , en raison desquelles des données pouvaient parfois être ignorées.
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.
Terminal : Correction de l'affichage des résultats de recherche sur les écrans High DPI.
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 valuesdatetime datetime_from, // period beginning datedatetime 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 valuesdatetime datetime_from, // beginning of perioddatetime datetime_to= 0 , // end of periodstring country_code=NULL, // country codestring 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 IDulong & 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 IDulong & change_id, // last calendar change ID
MqlCalendarValue& values[], // array of valuesstring country_code=NULL, // country codestring currency=NULL // currency
);
Nouveaux ouvrages
MqlCalendarCountry — description du pays.
struct MqlCalendarCountry
{
ulong id; // country ID in ISO 3166-1string name; // text name of the countrystring code; // code name of the country in ISO 3166-1 alpha-2string currency; // country currency codestring currency_symbol; // country currency symbol/signstring 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 modeulong 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 multiplieruint digits; // number of decimal places in the event valuestring source_url; // source URLstring event_code; // event codestring name; // text name of the event in the terminal language
};
MqlCalendarValue — description de la valeur de l'événement.
struct MqlCalendarValue
{
ulong id; // value IDulong event_id; // event IDdatetime time; // event date and timedatetime period; // period, for which the event is publishedint revision; // published indicator revision in relation to the reported periodlong actual_value; // current event valuelong prev_value; // previous event valuelong revised_prev_value; // revised previous event valuelong 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
MQL5 : Corrections et améliorations de la vitesse de fonctionnement liées à l'historique des ticks et des barres.
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* .
MQL5 : Nouvelles fonctions de conversion de données.
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
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 typeuint start, // the index to start removaluint 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 arrayconstvoid & src_array[], // source arrayuint dst_start, // index in the receiver array where to insertuint src_start= 0 , // index in the source array to start copyinguint 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 typeuint start= 0 , // index to start reversinguint count=WHOLE_ARRAY // number of elements
);
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é.
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(
conststring symbol, // symbol nameconst MqlBookInfo& books[] // an array with the DOM elements descriptionsuint count=WHOLE_ARRAY // number of elements to be used
);
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.
boolCustomSymbolCreate (
conststring symbol_name, // custom symbol nameconststring symbol_path= "" , // name of the group in which the symbol will be createdconststring 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".
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]
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.
MQL5 : Nouvelle propriété SYMBOL_EXIST dans l'énumération ENUM_SYMBOL_INFO_INTEGER , signifie que le symbole sous ce nom existe.
MQL5 : Correction du typage lors de l'utilisation des pré-déclarations de fonction de modèle.
MQL5 : Ajout de la réinitialisation des indicateurs lors du changement de compte de trading.
MQL5 : correction d'erreurs dans le fonctionnement standard de la bibliothèque.
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.
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.
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.
Testeur : tests et optimisation optimisés et considérablement accélérés.
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.
Testeur : implémentation d'un accès plus rapide aux données historiques lors des tests d'experts-conseils multidevises.
Testeur : Correction du blocage occasionnel du testeur visuel lors du débogage sur les données historiques.
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.
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.
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.
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.
MetaEditor : Correction de l'affichage des résultats de recherche sur les écrans High DPI.
Ajout de la traduction de l'interface utilisateur en croate.
La documentation a été mise à jour.
La mise à jour sera disponible via le système LiveUpdate.
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 ?
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Bientôt disponible -
Nouveau système de communication analogue au Telegram - lire ce post.
============
Ichimoku
Le début
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
----------------
Plateforme
----------------
Conseiller expert
----------------
Testeur
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.
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 :
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.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.
Le volume minimal et son étape de changement dépendent des paramètres de l'instrument financier du côté du courtier.
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 :
.
Pour appeler des fonctions de la bibliothèque, il suffit de l'importer :
Le code C# de la fonction Inc de la TestClass se présente comme suit :
A la suite de l'exécution, le script renvoie la valeur 7.
Trouvez plus d'informations sur les spécificateurs dans MSDN.
Ajout des propriétés suivantes à l'énumération ENUM_CHART_PROPERTY_INTEGER:
Ajout des fonctions suivantes à l'énumération ENUM_TERMINAL_INFO_INTEGER:
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
};
Utilisez la fonction SymbolInfoDouble pour obtenir ces propriétés.
Pour le code suivant :
Le compilateur affiche l'avertissement suivant :
'Main::PRICE_OPEN_' instead of 'ENUM_APPLIED_PRICE::PRICE_CLOSE' will be used
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 :
Comment commencer avec Metatrader 5
Par où dois-je commencer ?
Utilisez les conseils du service Freelance !
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é
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 :
- Terminal : calendrier économique intégré entièrement révisé.

- 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.

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

- 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.

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

R CMD INSTALL --build MetaTrader
- 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.
- 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.
- Terminal : Correction des erreurs de calcul de symboles synthétiques , en raison desquelles des données pouvaient parfois être ignorées.
- 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.
- Terminal : Correction de l'affichage des résultats de recherche sur les écrans High DPI.
- MQL5 : Accès implémenté aux données du calendrier économique des programmes MQL5.
- MQL5 : Corrections et améliorations de la vitesse de fonctionnement liées à l'historique des ticks et des barres.
- 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* .
- MQL5 : Nouvelles fonctions de conversion de données.
- Ajout de la fonction MathSwap pour changer l'ordre des octets dans les valeurs ushort, uint et ulong.
- 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.
- 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
- MQL5 : Ajout de nouvelles fonctions pour les opérations sur les chaînes :
- MQL5 : Ajout d'une nouvelle fonction pour les opérations sur les tableaux :
- 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é.
- 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.
- 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.
- 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]
- 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.
- MQL5 : Nouvelle propriété SYMBOL_EXIST dans l'énumération ENUM_SYMBOL_INFO_INTEGER , signifie que le symbole sous ce nom existe.
- MQL5 : Correction du typage lors de l'utilisation des pré-déclarations de fonction de modèle.
- MQL5 : Ajout de la réinitialisation des indicateurs lors du changement de compte de trading.
- MQL5 : Fonction StringSplit optimisée.
- MQL5 : correction d'erreurs dans le fonctionnement standard de la bibliothèque.
- 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.
- 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.
- 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.
- Testeur : tests et optimisation optimisés et considérablement accélérés.
- 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.
- Testeur : implémentation d'un accès plus rapide aux données historiques lors des tests d'experts-conseils multidevises.
- Testeur : Correction du blocage occasionnel du testeur visuel lors du débogage sur les données historiques.
- 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.
- 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.
- 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.

- 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.
- MetaEditor : Correction de l'affichage des résultats de recherche sur les écrans High DPI.
- Ajout de la traduction de l'interface utilisateur en croate.
- La documentation a été mise à jour.
La mise à jour sera disponible via le système LiveUpdate.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.
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.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.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 :
Les commandes suivantes liées à la demande de données sont disponibles :
La liste des commandes prises en charge sera encore élargie.
Nouvelles fonctions
CalendarCountryById — obtient la description du pays par identifiant.
CalendarEventById — obtient la description de l'événement par identifiant.
CalendarValueById — obtient la description de la valeur de l'événement par identifiant.
CalendarEventByCountry — obtient le tableau des événements disponibles pour le pays.
CalendarEventByCurrency — obtient le tableau des événements disponibles pour la devise affectée.
CalendarValueHistoryByEvent — obtient le tableau de valeurs pour la période spécifiée, par identifiant d'événement.
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.
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.
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.
Nouveaux ouvrages
MqlCalendarCountry — description du pays.
MqlCalendarEvent — description de l'événement.
MqlCalendarValue — description de la valeur de l'événement.
Nouvelles énumérations
Nouveaux codes d'erreur
CharArrayToStruct copie un tableau uchar dans une structure POD.
StructToCharArray copie une structure POD dans un tableau uchar.
De nouveaux codes d'erreur ont été ajoutés pour les opérations avec les fonctions réseau :
StringReserve réserve pour une chaîne la mémoire tampon de la taille spécifiée.
StringSetLength définit la longueur de chaîne spécifiée en caractères.
ArrayRemove supprime d'un tableau le nombre spécifié d'éléments commençant par l'index spécifié.
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é.
ArrayReverse inverse dans un tableau le nombre spécifié d'éléments commençant par l'index spécifié.
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".
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.
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...