Sunday 8 January 2017

Générateur De Signaux Commerciaux

MetaTrader 5 - Trading Systems Assistant MQL5: Comment créer un module de signaux Trading Introduction MetaTrader 5 fournit un outil puissant pour la vérification rapide des idées de négociation. C'est le générateur de stratégies de trading de l'Assistant MQL5. L'utilisation de l'Assistant MQL5 pour la création automatique des codes Expert Advisor est décrite dans l'article Assistant MQL5: Création de conseillers experts sans programmation. L'ouverture du système de génération de code vous permet d'ajouter vos propres classes de signaux de trading, de systèmes de gestion de l'argent et de modules de suivi aux standards. Cet article décrit les principes de l'écriture des modules de signaux commerciaux pour les utiliser lors de la création de conseillers experts avec l'Assistant MQL5. Le Expert Advisor créé avec MQL5 Wizard. Est basé sur quatre piliers - quatre classes de base: La classe CExpert (ou sa sous-classe) est le moteur principal d'un robot commercial. Une instance de CExpert contient une copie de chaque classe: CExpertSignal. CExpertMoney et CExpertTrailing (ou leurs sous-classes): CExpertSignal est la base du générateur de signaux de trading. Une instance de la classe dérivée CExpertSignal, incluse dans CExpert. Fournit à un expert-conseil des informations sur la possibilité d'entrer sur le marché, les niveaux d'entrée et de placement des ordres de protection, sur la base d'algorithmes intégrés. La décision finale sur l'exécution des opérations commerciales est prise par l'EA. CExpertMoney est la base de l'argent et des systèmes de gestion des risques. Une instance de classe dérivée CExpertMoney calcule les volumes pour ouvrir des positions et placer des commandes en attente. La décision finale sur le volume est prise par l'EA. CExpertTrailing - est la base du module de support des positions ouvertes. Une instance de la classe dérivée CExpertTrailing informe un EA de la nécessité de modifier les ordres de protection d'une position. La décision finale sur la modification de commande est prise par l'EA. De plus, les membres de la classe CExpert sont des instances des classes suivantes: CExpertTrade (pour le commerce) CIndicateurs (pour le contrôle des indicateurs et des timeseries impliqués dans le travail de l'EA). CSimbolInfo (pour obtenir des informations sur l'instrument) CAccountInfo (pour obtenir des informations sur l'état du compte de trading) CPositionInfo (pour obtenir des informations sur les positions) COrderInfo (pour obtenir des informations sur les commandes en attente) Ci-après, on entend une instance de CExpert ou Sa sous-classe. Plus de détails sur CExpert et travail avec elle seront décrits dans un article distinct. 1. Classe de base CExpertSignal CExpertSignal est la base du générateur de signaux de trading. Pour la communication avec le monde extérieur, CExpertSignal dispose d'un ensemble de méthodes publiques virtuelles: Description des méthodes 1.1. Méthodes d'initialisation: La méthode Init () est appelée automatiquement juste après l'ajout d'une instance de classe à l'expert. La substitution de méthode n'est pas nécessaire. La méthode ValidationSettings () est appelée directement par l'expert après que tous les paramètres ont été définis. Vous devez remplacer la méthode s'il existe des paramètres de configuration. La méthode overridden doit retourner true, si toutes les options sont valides (utilisables). Si au moins un des paramètres est incorrect, il doit renvoyer false (travaux supplémentaires est impossible). La classe de base CExpertSignal n'a pas de paramètres ajustables, par conséquent, la méthode de classe de base renvoie toujours true sans effectuer de contrôles. La méthode InitIndicators () implémente la création et l'initialisation de tous les indicateurs et séries d'heures nécessaires. Il est appelé par l'expert après que tous les paramètres sont définis et leur exactitude est vérifiée avec succès. La méthode doit être remplacée si le générateur de signal de négociation utilise au moins un indicateur ou des séries de temps. Les indicateurs et les séries temporelles doivent être utilisés dans les classes appropriées de la bibliothèque standard. Les pointeurs de tous les indicateurs et / ou les séries de temps devraient être ajoutés à la collection d'indicateurs d'un expert (un pointeur qui est transmis en tant que paramètre). La méthode overridden doit retourner true, si toutes les manipulations avec les indicateurs andor timeseries ont réussi (ils sont appropriés pour l'utilisation). Si au moins une opération avec les indicateurs andor timeseries échoué, la méthode doit retourner faux (travail supplémentaire est impossible). La classe de base CExpertSignal n'utilise pas d'indicateurs ou de timeseries; par conséquent, la méthode de classe de base renvoie toujours true, sans effectuer aucune action. 1.2. Méthodes de contrôle du signal d'ouverture de position: La méthode CheckOpenLong () génère un signal d'ouverture d'une position longue, définissant le niveau d'entrée et les niveaux de placement des ordres de protection. Il est appelé par un expert pour déterminer s'il est nécessaire d'ouvrir une position longue. La méthode doit être remplacée, si on s'attend à ce qu'un signal d'ouverture de position longue soit généré. La méthode doit implémenter l'algorithme de vérification de l'état d'une ouverture de position longue. Si la condition est remplie, les variables price, sl, tp et expiration (dont les références sont transmises en tant que paramètres) doivent recevoir des valeurs appropriées et la méthode doit retourner true. Si la condition n'est pas remplie, la méthode doit retourner false. La classe de base CExpertSignal n'a pas d'algorithme intégré pour générer un signal d'ouverture de position longue, de sorte que la méthode de classe de base renvoie toujours false. La méthode CheckOpenShort () génère un signal d'ouverture d'une position courte définissant le niveau d'entrée et les niveaux de placement des ordres de protection. Il est appelé par un expert pour déterminer s'il est nécessaire d'ouvrir une position courte. La méthode doit être remplacée si on s'attend à ce qu'un signal d'ouverture de position courte soit généré. La méthode doit implémenter l'algorithme de vérification de la condition pour ouvrir une position courte. Si la condition est satisfaite, les variables price, sl, tp et expiration (dont les références sont transmises en tant que paramètres) doivent recevoir des valeurs appropriées et la méthode doit retourner true. Si la condition n'est pas remplie, la méthode doit retourner false. La classe de base CExpertSignal n'a pas d'algorithme intégré pour générer un signal d'ouverture de position courte, de sorte que la méthode de classe de base renvoie toujours false. 1.3. Méthodes de contrôle du signal de fermeture de position: La méthode CheckCloseLong () génère un signal de fermeture d'une position longue définissant le niveau de sortie. Il est appelé par un expert pour déterminer s'il est nécessaire de fermer une position longue. La méthode doit être remplacée si on s'attend à ce qu'un signal de fermeture de position longue soit généré. La méthode doit implémenter l'algorithme pour vérifier la condition pour fermer la position longue. Si la condition est satisfaite, le prix variable (dont la référence est passée en tant que paramètre) doit être affecté à la valeur appropriée et la méthode doit retourner true. Si la condition n'est pas remplie, la méthode doit retourner false. La classe de base CExpertSignal n'a pas d'algorithme intégré pour générer un signal de fermeture de position longue, de sorte que la méthode de classe de base renvoie toujours false. La méthode CheckCloseShort () génère un signal de fermeture d'une position courte définissant le niveau de sortie. Il est appelé par un expert pour déterminer s'il est nécessaire de fermer une position courte. La méthode doit être remplacée, si on s'attend à ce qu'un signal de fermeture de position courte soit généré. La méthode doit implémenter l'algorithme pour vérifier la condition pour fermer une position courte. Si la condition est satisfaite, le prix variable (dont la référence est passée en tant que paramètre) doit être affecté à la valeur appropriée et la méthode doit retourner true. Si la condition n'est pas remplie, la méthode doit retourner false. La classe de base CExpertSignal n'a pas d'algorithme intégré pour générer un signal de fermeture de position courte, donc la méthode de classe de base renvoie toujours false. 1.4. Méthodes de contrôle du signal d'inversion de position: La méthode CheckReverseLong génère un signal d'inversion d'une position longue, définissant le niveau d'inversion et les niveaux de placement des ordres de protection. Il est appelé par un expert pour déterminer s'il est nécessaire d'inverser une position longue. La méthode doit être annulée, si on s'attend à ce qu'un signal d'inversion de position longue soit généré. La méthode doit implémenter l'algorithme pour vérifier l'état de l'inversion de position longue. Si la condition est satisfaite, les variables price, sl, tp et expiration (dont les références sont transmises en tant que paramètres) doivent recevoir des valeurs appropriées et la méthode doit retourner true. Si la condition n'est pas remplie, la méthode doit retourner false. Dans la classe de base CExpertSignal, l'algorithme suivant pour générer un signal d'inversion de position longue est implémenté: Vérification d'un signal pour fermer une position longue. Vérification d'un signal pour ouvrir une position courte. Si les deux signaux sont actifs (les conditions sont remplies) et que les prix proches et ouverts correspondent, les variables price, sl, tp et expiration (références passées en tant que paramètres) reçoivent les valeurs appropriées et la méthode retourne true. Si la condition n'est pas remplie, la méthode renvoie false. La méthode CheckReverseShort génère un signal d'inversion d'une position courte, définissant le niveau d'inversion et les niveaux de placement des ordres de protection. Il est appelé par un expert pour déterminer s'il est nécessaire d'inverser une position courte. La méthode doit être remplacée si on s'attend à ce qu'un signal d'inversion de position longue soit généré selon l'algorithme qui diffère de celui mis en oeuvre dans la classe de base. La méthode doit implémenter l'algorithme pour vérifier l'état de l'inversion de position courte. Si la condition est satisfaite, les variables price, sl, tp et expiration (dont les références sont transmises en tant que paramètres) doivent recevoir des valeurs appropriées et la méthode doit retourner true. Si la condition n'est pas remplie, la méthode doit retourner false. Dans la classe de base CExpertSignal, l'algorithme suivant pour générer un signal d'inversion de position courte est implémenté: Vérification d'un signal pour fermer une position courte. Vérification d'un signal pour ouvrir une position longue. Si les deux signaux sont actifs (les conditions sont remplies) et que les prix proches et ouverts correspondent, les variables price, sl, tp et expiration (références passées en tant que paramètres) reçoivent les valeurs appropriées et la méthode retourne true. Si la condition n'est pas remplie, la méthode renvoie false. 1.5. Méthodes de vérification du signal de modification de commande en attente: La méthode CheckTrailingOrderLong () génère le signal de modification d'une commande Achat en attente, définissant un nouveau prix de commande. Il est appelé par un expert pour déterminer s'il est nécessaire de modifier une commande Achat en attente. La méthode doit être remplacée, si on s'attend à ce qu'un signal de modification d'un ordre Achat en attente soit généré. La méthode doit implémenter l'algorithme pour vérifier l'état de modification d'une commande Achat en attente. Si la condition est satisfaite, le prix variable (dont la référence est passée en tant que paramètre) doit être affecté à la valeur appropriée et la méthode doit retourner true. Si la condition n'est pas remplie, la méthode doit retourner false. La classe de base CExpertSignal n'a pas d'algorithme intégré pour générer un signal de modification d'une commande Achat en attente, de sorte que la méthode de classe de base renvoie toujours false. La méthode CheckTrailingOrderShort () génère le signal de modification d'une commande Sell en cours, définissant un nouveau prix de commande. Il est appelé par un expert pour déterminer s'il est nécessaire de modifier une commande de vente en attente. La méthode doit être remplacée, si on s'attend à ce qu'un signal de modification d'une commande de vente en attente soit généré. La méthode doit implémenter l'algorithme pour vérifier l'état de modification d'une commande de vente en attente. Si la condition est satisfaite, le prix variable (dont la référence est passée en tant que paramètre) doit être affecté à la valeur appropriée et la méthode doit retourner true. Si la condition n'est pas remplie, la méthode doit retourner false. La classe de base CExpertSignal n'a pas d'algorithme intégré pour générer un signal de modification d'une commande de vente en attente, de sorte que la méthode de classe de base renvoie toujours false. 2. Développer votre propre générateur de signaux commerciaux Maintenant, après avoir examiné la structure de la classe de base CExpertSignal, vous pouvez commencer à créer votre propre générateur de signaux de négociation. Comme mentionné ci-dessus, la classe CExpertSignal est un ensemble de cordes virtuelles publiques - des méthodes, à l'aide desquelles l'expert peut connaître l'opinion du générateur de signaux commerciaux à l'entrée sur le marché dans un sens ou dans l'autre. Par conséquent, notre objectif principal est de créer notre propre classe de générateur de signaux de négociation, dérivant de la classe CExpertSignal et de remplacer les méthodes virtuelles appropriées, la mise en œuvre des algorithmes requis. Notre deuxième problème (qui n'est pas moins important) - pour rendre notre classe visible à MQL5 Wizard. Mais, les premières choses d'abord. 2.1. Création de la classe du générateur de signaux commerciaux Tout d'abord, nous créons (par exemple, en utilisant le même Assistant MQL5) un fichier d'inclusion avec l'extension mqh. Dans le menu Fichier, sélectionnez Créer (ou appuyez sur la combinaison de touches CtrlN) et indiquez la création d'un fichier inclus: Figure 2. Création d'un fichier d'inclusion à l'aide de l'Assistant MQL5 Il convient de noter que pour que le fichier soit détecté par MQL5 Wizard as Un générateur de signal, il doit être créé dans le dossier IncludeExpertSignal. Afin de ne pas jeter les déchets dans la bibliothèque standard. Créez notre propre dossier IncludeExpertSignalMySignals, dans lequel nous créons le fichier SampleSignal. mqh, en spécifiant ces paramètres dans MQL5 Assistant: Figure 3. Définition de l'emplacement du fichier d'inclusion Comme résultat de l'opération MQL5 Wizard, nous avons le modèle suivant: travail. Retirez les pièces inutiles et ajoutez ce qui est nécessaire (incluez le fichier ExpertSignal. mqh de la bibliothèque standard et une description de classe qui est maintenant vide). Maintenant, il est nécessaire de choisir les algorithmes. Comme base pour notre générateur de signaux de négociation, nous prenons le prix modèle généralisé croise la moyenne mobile. Mais nous faisons une hypothèse de plus: Après avoir franchi la moyenne mobile, le prix se déplace en arrière, et seulement ensuite va dans la bonne direction. Reflétez cela dans notre dossier. Généralement, lorsque vous écrivez quelque chose, ne lésinez pas sur les commentaires. Après un certain temps, la lecture d'un code soigneusement commenté sera si confortable. Maintenant, nous permet de définir quelles données sont nécessaires pour prendre des décisions sur la génération de signaux commerciaux. Dans notre cas, il s'agit du prix d'ouverture et du prix de clôture de la barre précédente, et de la valeur de la moyenne mobile sur la même barre précédente. Pour accéder à ces données, nous utilisons les classes de bibliothèque standard CiOpen. CiClose et CiMA. Eh bien discuter des indicateurs et des timeseries plus tard. Entre-temps, définissons une liste de paramètres pour notre générateur. Tout d'abord, nous devons mettre en place la moyenne mobile. Ces paramètres comprennent la période, le décalage le long de l'axe temporel, la méthode de la moyenne et l'objet de la moyenne. Deuxièmement, nous devons établir le niveau d'entrée et les niveaux de placement des ordres de protection, et la durée de vie d'une commande en attente, parce que nous allons travailler avec les commandes en attente. Tous les paramètres du générateur seront stockés dans des membres de la classe protégés. L'accès aux paramètres sera mis en œuvre par des méthodes publiques appropriées. Permet d'inclure ces changements dans notre fichier: Puisque nous utilisons des membres de données protégés, nous devons ajouter un constructeur de classe. Dans lequel nous initialiserons ces données par des valeurs par défaut. Pour vérifier les paramètres, permet de remplacer la méthode virtuelle ValidationSettings en fonction de la description de la classe de base. Description de la classe: Implémentation de la méthode ValidationSettings (): Maintenant, lorsque nous avons terminé la majeure partie des travaux préparatoires, nous parlerons mieux des indicateurs et des timeseries. Les indicateurs et les séries chronologiques sont la principale source d'information pour la prise de décision (vous pouvez certainement utiliser le jet de pièces ou les phases de la lune, mais elles sont assez difficiles à formaliser). Comme nous l'avons déjà défini ci-dessus, pour prendre des décisions, nous avons besoin des informations suivantes: le prix d'ouverture de la barre précédente, le prix de clôture de la barre précédente et la valeur de la moyenne mobile sur la même barre précédente. Pour accéder à ces données, nous utiliserons les classes suivantes de la Bibliothèque Standard: CiOpen - pour accéder au prix d'ouverture de la barre précédente, CiClose - pour accéder au prix de clôture de la barre précédente, CiMA - pour accéder à la valeur de la Moyenne mobile sur la barre précédente. Vous pouvez demander: Pourquoi utiliser l'indicateur ou timeseries, enveloppé dans une classe, afin d'obtenir un seul nombre Il ya un sens caché, que nous allons révéler maintenant. Comment utiliser les données d'un indicateur ou de timeseries Tout d'abord, nous devons créer un indicateur. Deuxièmement, nous devons copier la quantité nécessaire de données dans un tampon intermédiaire. Troisièmement, nous devons vérifier si la copie est terminée. C'est seulement après ces étapes que vous pouvez utiliser les données. Utilisation des classes de la bibliothèque standard. Vous évitez la nécessité de créer un indicateur, de se préoccuper de la disponibilité des tampons intermédiaires et du chargement ou de la libération des données d'une poignée. L'objet d'une classe appropriée le fera pour vous. Tous les indicateurs requis seront générés par notre générateur de signaux pendant l'étape d'initialisation, et tous les indicateurs seront fournis avec le tampon temporaire nécessaire. De plus, une fois que nous avons ajouté un objet indicateur ou timeseries dans la collection (l'objet d'une classe spéciale), vous pouvez cesser de vous intéresser à la pertinence des données (les données seront automatiquement mises à jour par l'expert). Eh bien placer les objets de ces classes dans les membres de données protégées. Pour chaque objet, nous créons une méthode d'initialisation et de méthode d'accès aux données. Permet de remplacer la méthode virtuelle InitIndicators (selon la description de la classe de base). Description de la classe: Implémentation des méthodes InitIndicators, InitMA, InitOpen, InitClose: Tous les travaux préparatoires sont terminés. Comme vous pouvez le voir, notre classe a considérablement augmenté. Mais maintenant, nous sommes prêts à générer des signaux commerciaux. Figure 4. Signaux de négociation pour le prix de franchissement de la moyenne mobile Considérons de nouveau nos algorithmes plus en détail. 1. Le signal d'achat apparaît lorsque les conditions suivantes ont été remplies sur la barre précédente: le prix d'ouverture de la barre est inférieur à la valeur de la moyenne mobile, le prix de clôture de la barre est supérieur à la moyenne mobile, la moyenne mobile augmente. Dans ce cas, nous proposons de placer une commande Achat en attente avec les paramètres définis par les paramètres. Pour cela, nous remplaçons la méthode virtuelle CheckOpenLong et la remplissons par la fonction fonctionnelle correspondante. 2. Le signal de vente apparaît lorsque les conditions suivantes ont été remplies sur la barre précédente: le prix d'ouverture de la barre est supérieur à la valeur de la moyenne mobile, le prix de clôture de la barre est inférieur à la moyenne mobile, la moyenne mobile décroît. Dans ce cas, nous proposons de placer une commande de vente en attente avec les paramètres définis par les paramètres. Pour cela, nous remplaçons la méthode virtuelle CheckOpenShort et la remplissons par la fonctionnelle correspondante. 3. Nous ne générerons pas de signaux pour fermer des positions. Laisser les positions être fermées par Stop LossTake Profit. 4. Nous proposerons la modification d'un ordre en attente le long de la moyenne mobile à la distance spécifiée par les paramètres. Pour ce faire, nous remplaçons les méthodes virtuelles CheckTrailingOrderLong et CheckTrailingOrderShort. En les remplissant de fonctions fonctionnelles correspondantes. Description de la classe: Implémentation des méthodes CheckOpenLong, CheckOpenShort, CheckTrailingOrderLong, CheckTrailingOrderShort: Nous avons donc résolu le premier problème. Le code ci-dessus est un code source de la classe de générateur de signaux commerciaux qui répond à notre tâche principale. 2.2. Préparation d'une description de la classe créée des signaux de trading pour MQL5 Wizard Nous passons maintenant à la résolution du second problème. Notre signal doit être reconnu par le générateur de stratégies de trading MQL5 Wizard. Nous avons fait la première condition nécessaire: nous avons placé le fichier où il sera trouvé par l'Assistant MQL5. Mais ce n'est pas assez. L'Assistant MQL5 doit non seulement trouver le fichier mais aussi le reconnaître. Pour ce faire, nous devons ajouter au descripteur de classe le descripteur de classe pour l'Assistant MQL5. Un descripteur de classe est un bloc de commentaires composé selon certaines règles. Considérons ces règles. 1. Le bloc de commentaires devrait commencer par les lignes suivantes: 2. La ligne suivante est un descripteur de texte (ce que nous verrons dans l'Assistant MQL5 lors du choix du signal) dans le format TitleltTextgt. Si le texte est trop grand pour une ligne, vous pouvez ajouter une ligne de plus (mais pas plus) après. Dans notre cas, nous avons ce qui suit: 3. Puis vient une ligne avec le type de classe spécifié dans le format TypeltTypegt. Le champ ltTypegt doit avoir la valeur Signal (en plus des signaux, l'Assistant MQL5 connaît d'autres types de classes). 4. La ligne suivante dans le format NameltNamegt est le nom abrégé du signal (il est utilisé par l'Assistant MQL5 pour générer les noms des variables globales de l'expert). Nous obtenons ce qui suit: 5. Le nom d'une classe est un élément important de la description. Dans la ligne avec le format ClassltClassNamegt, le paramètre ltClassNamegt doit correspondre au nom de notre classe: 6. Nous ne remplissons pas cette ligne, mais elle doit être présente (il s'agit d'un lien vers la section de référence de la langue): , Il existe des descriptions des paramètres de réglage du signal. Il s'agit d'un ensemble de lignes (le nombre de lignes est égal au nombre de paramètres). Le format de chaque ligne est ParameterltNameOfMethodgt, ltTypeOfParametergt, ltDefaultValuegt. Voici notre ensemble de paramètres: 8. Le bloc de commentaire devrait se terminer par les lignes suivantes: Ajoutons le descripteur au code source. Eh bien, c'est tout. Le signal est prêt à utiliser. Pour le générateur de stratégies de trading MQL5 Assistant pour être en mesure d'utiliser notre signal, nous devons redémarrer MetaEditor (MQL5 Assistant scanne le dossier IncludeExpert uniquement au démarrage). Après le redémarrage de MetaEditor. Le module créé des signaux de négociation peut être utilisé dans l'Assistant MQL5: Figure 5. Le générateur créé de signaux de négociation dans l'Assistant MQL5 Les paramètres d'entrée spécifiés dans la section de description des paramètres du générateur de signaux de négociation sont maintenant disponibles: Figure 6 Paramètres d'entrée du générateur de signaux de trading créés dans l'Assistant MQL5 Les meilleures valeurs des paramètres d'entrée de la stratégie de transaction implémentée peuvent être trouvées à l'aide du testeur de stratégie du terminal MetaTrader 5. Le générateur de stratégies de trading de l'assistant MQL5 simplifie grandement le test des idées de trading. Le code de l'expert généré est basé sur les classes de stratégies de négociation de la bibliothèque standard, qui sont utilisés pour créer certaines implémentations de classes de signaux de négociation, les classes de gestion de l'argent et du risque et les classes de soutien de position. L'article explique comment écrire votre propre classe de signaux commerciaux avec la mise en œuvre de signaux sur la traversée du prix et la moyenne mobile, et comment l'inclure dans le générateur de stratégies de négociation de l'Assistant MQL5. Ainsi que décrit la structure et le format de la description de la classe générée pour l'Assistant MQL5 Wizard. EA EA Creator Créez votre propre Expert Advisor sans programmation EA Generator - Explication EA Generator ou EA Creator est un logiciel unique sans analogues. Le plus grand avantage de ce logiciel est qu'il est basé sur un réseau de neurones qui révèle la connexion implicite aux mouvements de devises qui ne peuvent être prédites par des indicateurs standard. Un autre avantage important de cet outil est que chaque expert expert créé est unique. EA Generator est une nouvelle technologie révolutionnaire automatisée basée sur les derniers développements dans le domaine de l'intelligence artificielle. C'est une véritable percée dans le commerce de forex automatique. Les indicateurs techniques sont des dérivés de taux et leurs signaux de retard par rapport au prix. C'est pourquoi il est plus efficace d'utiliser des modèles de prix de bougie pour un commerce plus productif cette méthode est largement connue et utilisée avec beaucoup de succès. Cependant, pour l'utiliser, un trader doit apprendre à choisir et à interpréter des figures graphiques caractéristiques, en analysant l'historique des cours des instruments financiers pour de longs intervalles de temps. Un tel apprentissage nécessite une bonne mémoire, un talent pour la pensée associative visuelle et peut durer des années. Pourtant, certains commerçants réussissent dans le temps et le commerce avec succès et de manière stable, mais il est presque impossible de formaliser leurs systèmes de négociation sous la forme d'un algorithme. C'est l'intuition qui importe à ce genre de commerce, c'est-à-dire le traitement subconscient caché de l'information commerciale et la livraison seulement du résultat final, il est donc très difficile pour un commerçant de formuler le processus mental qui mène à ce résultat final. Afin de résoudre les problèmes d'automatisation de tels systèmes de trading, nous proposons d'utiliser le logiciel HLAIMAN - MakeEA MT4, qui repose sur l'utilisation de méthodes modernes de reconnaissance de machines d'images graphiques en combinaison avec des algorithmes de formation de réseaux neuronaux. Le processus de génération de stratégies (robots commerciaux) utilisant le logiciel donné est réalisé dans le terminal MetaTrader 4. Un ensemble de signaux de trading sous la forme d'objets graphiques placés sur un tableau de prix dans une fenêtre de l'instrument de trading spécifique est Les données initiales pour la génération. Le programme de génération lit automatiquement les données, les traite et forme un algorithme de réseau neuronal correspondant d'une stratégie de trading, qui implémente la logique de négociation donnée, en la coordonnant avec les modèles du tableau des prix courants. Un module de robot de trading, enregistré en tant que dossier de conseiller expert, est un logiciel autonome, qui est prêt à être utilisé sur la plate-forme MT4. Vous pouvez tester, optimiser et former en outre votre expert-conseil, en utilisant non seulement l'instrument de négociation initialement choisi, mais aussi tous les autres instruments et périodes supplémentaires. EA Generator est un outil utile et pratique pour développer indépendamment des conseillers experts Forex automatisés vous permettant de négocier en utilisant votre propre stratégie. Vous n'avez pas à écrire une seule ligne de codage pour créer un conseiller expert. Tout ce que vous avez besoin est de placer la vente andor acheter métiers sur un tableau d'un instrument choisi et le calendrier sous la forme d'objets graphiques standard ndash flèches. Flèche vers le haut est l'achat, flèche vers le bas est la vente. Le logiciel EA Generator crée des algorithmes complexes qui aident à mettre votre stratégie en pratique au sein d'un expert expert automatisé Grâce à ce logiciel, vous n'avez pas besoin de compétences en programmation ou en mathématiques ou vous devez payer un programmeur pour développer un expert expert automatisé. Vous avez seulement besoin de placer les métiers sur un graphique, obtenir un conseiller expert et en seulement quelques clics, ce conseiller expert va commencer à utiliser les principes commerciaux qui ont été développés exclusivement par vous. Le logiciel EA Generator utilise l'interface graphique du terminal MT4. Cela signifie que vous pouvez utiliser la gamme complète de l'interface graphique standard terminales pour placer vos métiers. Vous pouvez ajouter des signes et des objets graphiques à un graphique, utiliser à la fois les indicateurs standard et tiers et ainsi de suite. Whatrsquos plus, vous pouvez utiliser le logiciel EA Generator pour rechercher de nouvelles stratégies rentables et les utiliser pour créer des conseillers experts automatisés. L'ensemble de livraison de logiciels EA Generator comprend un conseiller expert, qui aidera à placer automatiquement des signaux sur les métiers les plus rentables sur un graphique. L'utilisation de ces données pour créer un expert expert automatisé peut apporter des bénéfices Neural Net Explication EA Generator Software Components Programme kernel laquohlaim. exeraquo. Il se trouve dans le dossier du logiciel EA Generator. MT4 laquoMakeSignalsraquo conseiller expert. Celui-ci se trouve dans le dossier Terminal lorsque le logiciel EA Generator est installé. Il est utilisé pour créer automatiquement des signaux commerciaux sur un tableau d'instrument ou de calendrier. LaquoMakeAlgorithmraquo script. Il se trouve également dans le dossier Terminal lorsque le logiciel EA Generator est installé. Il est utilisé pour créer des conseillers experts Forex automatisés lors de la saisie de signaux commerciaux sur un instrument ou un tableau de temps. Générateur d'EA sécurisé Formulaire d'acceptation sans risque EA Generator - 1 licence 30 jours - Garantie de remboursement 247 Support client Mises à jour gratuites à vieMetaTrader 5 - Exemples Générateur de signaux commercial basé sur un indicateur personnalisé Introduction Dans cet article, je vais vous expliquer comment créer un Générateur de signaux commerciaux basés sur un indicateur personnalisé. Vous verrez comment vous pouvez écrire votre propre modèle de trading pour un indicateur personnalisé. J'expliquerai également le but du modèle 0 et pourquoi les structures de type ISPATTERNUSAGE (0) sont utilisées dans le module de signal commercial. L'article utilisera deux types de code: le code que nous sommes sur le point de modifier et le code que nous avons déjà modifié. Le code modifié sera mis en surbrillance comme suit: Le code modifié est le code à copier et collé dans le générateur de signal de négociation. J'espère que vous comprendrez mieux le code grâce à l'utilisation de la mise en évidence. 1. Indicateur personnalisé Je suis sûr qu'il doit y avoir un indicateur non inclus dans la livraison standard que vous avez voulu utiliser pendant une longue période. Et c'est l'indicateur basé sur lequel vous voulez construire un module de signal trading. Je vais utiliser l'indicateur MACD de la livraison standard comme un tel indicateur. L'emplacement de l'indicateur est le suivant. MQL5IndicatorsExamplesMACD. mq5. Chaque indicateur peut décrire un ou plusieurs modèles de marché. Un modèle de marché est une certaine combinaison de la valeur de l'indicateur et de la valeur du prix. Les modèles disponibles pour l'indicateur MACD sont l'inversion, le croisement de la ligne principale et de la ligne de signal, le croisement du niveau zéro, la divergence et la double divergence. 1.1 Nouveau modèle d'indicateur. Supposons que nous ne sommes pas satisfaits des modèles de marché donnés pour l'indicateur et que nous voulons introduire notre propre modèle d'indicateur. La nouvelle description du modèle d'indicateur: si l'indicateur MACD est en dessous de la ligne zéro et ses valeurs augmentent, on peut s'attendre à une croissance plus longue et ouvrir une position longue: Figure 1: Modèle de croissance de l'indicateur prospectif si l'indicateur MACD est supérieur à zéro et Ses valeurs sont en baisse, on peut s'attendre à une diminution supplémentaire et ouvrir une position courte: Figure 2: Modèle de chute prospective de l'indicateur Nous avons donc décidé de l'indicateur personnalisé et nous proposons le nouveau modèle commercial de l'indicateur et sa description. Commençons par écrire le code. 2. Écriture du générateur de signaux commercial basé sur notre indicateur personnalisé Notre générateur est le descendant de la classe de base CExpertSignal. La classe de base CExpertSignal est une classe pour créer des générateurs de signaux commerciaux. La classe CExpertSignal contient un ensemble de méthodes publiques (c'est-à-dire accessibles à l'extérieur) qui permettent à un expert-conseil de voir l'indication du générateur de signaux de négociation concernant la direction d'entrée sur le marché. Étant donné que nous travaillons sur notre propre générateur de signal de négociation, il doit être hérité de la classe CExpertSignal, les méthodes virtuelles pertinentes étant redéfinies (remplies du code correspondant). 3. Création de la classe du générateur de signaux de trading Le générateur de signaux de trading devrait par défaut être situé dans. MQL5IncludeExpertSignal. Ne pas surcharger le. Dossier de signal de la bibliothèque standard avec trop d'informations, permet de créer un nouveau dossier sous le. Expert et l'appeler MySignals. Figure 3. Création du nouveau dossier MySignals Ensuite, nous allons créer un fichier d'inclusion à l'aide de l'Assistant MQL5. Dans MetaEditor, sélectionnez Nouveau dans le menu Fichier, puis sélectionnez Inclure fichier (.mqh). Figure 4. Assistant MQL5. Création d'un fichier d'inclusion Le nom de la classe du générateur de signal sera MySignal. Il sera situé sous IncludeExpertMySignalsMySignal. Permet de le spécifier: Figure 5. Assistant MQL5. Location of the include file After clicking Finish, the MQL5 Wizard will generate an empty template. From this moment on, we will do everything manually and copypaste data. I would like to draw your attention to the fact that internally, all the signals from the Standard Library are almost identical. They only differ in algorithms used to determine trading models. Therefore, you can take any file from the IncludeExpertSignal folder, copy its contents and paste it into your template. You can then start editing the resulting file of the trading signal generator. 4. Description of the Class of the Trading Signal Generator As a template, I took the IncludeExpertSignalSignalEnvelopes. mqh file from which I copied everything but the header: and pasted it all into our almost empty MySignal. mqh template. This is what I got: Here we give an order to the preprocessor to include the CExpertSignal base class for creating trading signal generators in our template. We will continue editing the template. To ensure that our template is visible later on to the MQL5 Wizard, we need to change the description of our class: So, lets see. The line shows the name of our signal class under which it will be displayed in the MQL5 Wizard. We will change this name to something like this: indicates the name for describing variables of our trading signal class. This description will be used by the MQL5 Wizard. Lets modify this line as follows: We will give the same name to this parameter: The following line sets the class name: Lets rename this parameter: Leave the next parameter as is. The following parameter group is responsible for description of parameters of the indicator underlying the trading signal generator. As I mentioned earlier, I will use . MQL5IndicatorsExamplesMACD. mq5 as the custom indicator. It has the following parameters: 4.1 Parameter Description Block Please note that the parameters given above apply only to MACD. mq5. Your custom indicator may have completely different parameters. The main thing here is to match the indicator parameters with their descriptions in the trading signal class. The parameter description block in the trading signal class for the custom indicator under consideration, MACD. mq5 . will be as follows: Take a look at how the parameters in the indicator now match the descriptions in the class description block. Following all the modifications, the description block of our class will be as follows: In programming, it is considered good practice to provide comments to ones code, thus making it easier to understand the code, when getting back to it after some time has passed. So, we will modify the following block: to match the description of our class: To avoid confusion, we need to replace all CSignalEnvelopes values with CSignalMyCustInd Figure 6. Replacing CSignalEnvelopes with CSignalMyCustInd Lets now have a look at some theoretical aspects. 5. The CiCustom Class We will need the CiCustom class to continue working on the code of the class of trading indicators of the custom indicator. The CiCustom class was created specifically for working with custom indicators. The CiCustom class provides creation, setting up and access to custom indicator data. 6. The CIndicators Class. CIndicators is the class for collecting instances of time series and technical indicator classes. The CIndicators class provides creation, storage and management (data synchronization, handle and memory management) of technical indicator class instances. We are particularly interested in the CIndicators class because of the Create method. This method creates an indicator of a specified type with specified parameters. 7. Continue Writing Our Trading Signal Class The next code block we are going to modify (lines 28-42) is as follows: 8. Creation of the Custom Indicator in the Trading Signal Generator Take a look at the code block provided above. The line declares an object - the CiEnvelopes class indicator. CiEnvelopes is the class for working with the technical indicator from the Standard Library. The CiEnvelopes class was created based on the technical indicator from the Standard Library. However, we are writing the code of the generator based on our custom indicator. Therefore there is no ready made class for our or your custom indicator in the Standard Library. What we can do is use the CiCustom class. Lets declare our indicator as the CiCustom class: 8.1 Four Variables Do you remember the parameter description block in the class There were three parameters in that description. In the protected area of our generator class, we will now declare four variables for passing the values to our four parameters: The following code block: This code declares variables that give weight to trading models of our trading signal generator. Lets replace the block of weights with the following code: 9. Model 0 As you remember, at the beginning of the article it was decided to describe only one new model that will be generated by our trading signal generator. However, in the above code I specified two market models (model 0 and model 1). Here, model 0 is an important auxiliary model. It is required when trading with pending orders. When applied, model 0 ensures that pending orders move together with the price. Lets take a look at our trading signal generator and the following conditions: the MACD custom indicator is below the zero line, and its values are increasing, we are trading with pending orders set 50 points from the bar opening price (four-digit price value). These conditions perfectly describe our trading model. Here is how things will be moving: Our trading model conditions will be checked upon appearing of the bar no. 1. What we have: MACD is below the zero line, yet it is gaining momentum. This corresponds to the buy signal. Therefore, we place a pending Buy Stop order: Upon appearing of the next bar no. 2, the condition check finds that MACD is below zero and is falling. According to our trading model, there are currently no conditions for buying or selling. However, note: as per the CExpertSignal class logic, since there are no conditions either for buying or selling, all pending orders should be DELETED. In this case, if the price goes up suddenly and dramatically, we will miss the opportunity to enter the market long to our advantage as there will be no pending order. This is where the auxiliary model 0 appears to be very useful. The auxiliary model 0 will apply, provided that: the MACD custom indicator is below the zero line. So we can place a pending Buy Stop order. Since we place an order 50 points from the bar opening price, we, in fact, simply move the pending Buy Stop order according to the price movement: Thus, by using the auxiliary model 0 we get the opportunity to move a pending order as per the price movement. 10. Further Modifications of the Template Code The next code block to be modified is as follows: In this block, we declare methods of setting adjustable parameters, methods of adjusting weights of trading models, method of verification of settings, indicator initialization method and methods of checking if the market models are generated. Taking into consideration that we have declared four variables in adjustable parameters, the block of methods for setting the parameters will be as follows: The next code fragment will remain unchanged: The next code block to be modified is as follows: This block will be heavily modified. Please note that I am using the GetData method of the CIndicator class. Names of the called methods will be provided directly in the code: The next code block is the constructor. In the constructor, we will change the names of the variables. Further, we will use only two series: USESERIESHIGHUSESERIESLOW Lets modify the ValidationSettings method of our class. In the checking block, we check the main condition for the given custom indicator: mperiodfastgtmperiodslow The next block deals with creation of indicators: As applied to our custom indicator: The following block is the indicator initialization block: First, we add an object to the collection. We then set the parameters of our indicator and create the custom indicator using the Create method of the CIndicators class: The next block checks buying conditions: According to our model 0 implementation. two models are checked: The following block checks selling conditions: According to our model 0 implementation. two models are checked: Conclusion I hope this article has helped you to understand how you can create a trading signal generator based on your custom indicator.


No comments:

Post a Comment