Généralement, deux moyennes mobiles peuvent être utilisées pour créer une stratégie de forex (EA pour MT4) avec ces règles: Acheter lorsque la moyenne mobile de la période courte est supérieure à la moyenne mobile de la période longue Vendre lorsque la moyenne mobile de la période longue est supérieure à la moyenne mobile Sur le graphique suivant de MetaTrader Terminal, la ligne jaune est la moyenne mobile de période courte (Period9) et la ligne rouge est la moyenne mobile de période longue (Period18). Analymer le graphique, nous pourrions réécrire les règles de négociation ou les signaux forex comme: Acheter lorsque la ligne jaune est au-dessus de la ligne rouge Vendre lorsque la ligne jaune est au-dessous de la ligne rouge Au lieu de passer un long codage de cette stratégie Forex, avec Molanis Strategy Builder Vous pouvez créer un diagramme de négociation qui représente la stratégie de la moyenne mobile en quelques minutes. Il suffit de faire glisser et déposer deux blocs d'analyse technique, un bloc d'achat et un bloc de vente. Connectez-les et définissez les paramètres de bloc pour obtenir un diagramme comme suit: Ce diagramme de négociation a deux chemins commerciaux. La gauche est en surbrillance. Il passe du bloc START au bloc END. On peut le lire comme suit: Achetez 1 lot d'EURCAD (avec un profit de 100 pip Take Profit et 50 Stop Stop Loss) lorsque la moyenne mobile de courte période (9) est supérieure à la moyenne mobile de longue période (18). N'oubliez pas de lire le diagramme de négociation dans la direction opposée au flux de négociation. La bonne voie de négociation pourrait se lire comme suit: Vendre 1 lot d'EURCAD (avec un profit de 100 pip Take Profit et 50 pip Stop Loss) lorsque la moyenne mobile de longue période (18) est supérieure à la moyenne mobile de courte période (9). Génération du code MQL pour MetaTrader avec un seul clic Dans le menu Diagramme de négociation, cliquez sur Générer le code MQL4 pour obtenir la fenêtre Code MQL4. Molanis Strategy Builder vous permet d'ouvrir votre conseiller expert directement avec MetaTrader ou de l'enregistrer en tant que fichier MQ4. Ne manquez pas notre tutoriel vidéo onSimple Expert Advisor Problème 29. Créer un conseiller expert en négociation. Arguments préliminaires Avant de commencer à programmer un Expert Expert en négociation, il est nécessaire de définir les principes généraux d'un futur programme. Il n'existe pas de programme strict de création de règles. Cependant, une fois avoir créé un programme, un programmeur continue habituellement à l'améliorer. Pour être en mesure de comprendre le programme à l'avenir, il doit être créé selon un schéma bien pensé et facile à comprendre (il est particulièrement important si un programme sera amélioré par un autre programmeur). Le programme le plus commode est celui qui consiste en blocs fonctionnels, dont chacun est responsable de sa part de calculs. Pour créer un algorithme de trading Expert Advisor, permet d'analyser ce qu'un programme d'exploitation devrait faire. L'une des données les plus importantes dans la formation d'ordres commerciaux est l'information sur les commandes qui existent déjà dans un terminal client. Certaines stratégies de négociation ne permettent qu'un seul ordre unidirectionnel. Généralement, si une stratégie de négociation le permet, plusieurs ordres peuvent être ouverts dans un terminal en même temps, bien que leur nombre soit raisonnablement limité. Lors de l'utilisation de toute stratégie, les décisions commerciales doivent être prises en tenant compte de la situation actuelle. Avant qu'une décision commerciale soit prise dans un programme, il est nécessaire de savoir quels ordres de trading ont déjà été ouverts ou placés. Tout d'abord un programme doit contenir un bloc de commandes comptables qui est parmi les premiers à être exécutés. Lors d'une exécution de l'EE, des décisions commerciales doivent être prises, dont la mise en œuvre conduit à l'exécution d'opérations commerciales. Code partie responsable de la formation des ordres de négociation est mieux écrit dans un bloc séparé. Un conseiller expert peut former une demande commerciale pour ouvrir un nouvel ordre en attente ou sur le marché, fermer ou modifier des commandes existantes ou ne pas effectuer d'actions du tout. Une EA doit également calculer les prix de commande en fonction de la volonté des utilisateurs. Les décisions commerciales doivent être prises dans un programme sur la base de critères commerciaux. Le succès de l'ensemble du programme dépend de la justesse de la détection des critères commerciaux dans le programme. Lors du calcul des critères commerciaux, un programme peut (et doit) prendre en compte toutes les informations qui peuvent être utiles. Par exemple, un conseiller expert peut analyser la combinaison des valeurs des indicateurs techniques, le temps des communiqués de presse importants, l'heure actuelle, les valeurs de certains niveaux de prix, etc. Pour plus de commodité, la partie du programme responsable du calcul des critères de négociation devrait être écrite séparément bloque. Un Expert Expert en négociation doit nécessairement contenir un bloc de traitement d'erreur. L'analyse des erreurs qui peuvent se produire dans l'exécution d'opérations commerciales permet, d'une part, de répéter une demande commerciale et, d'autre part, d'informer un utilisateur d'une éventuelle situation de conflit. Structure d'un Expert Expert Simple Voici un schéma structurel d'un Expert Expert simple construit sur la base de plusieurs blocs fonctionnels, dans chaque bloc une certaine partie détachée des calculs. À l'étape de développement EA suivante, il n'y a pas encore de code de programme. Dans le même temps, l'algorithme d'un programme est en grande partie formé. Comment l'EA construit sur les bases du schéma offert fonctionnera peut être facilement compris simplement en regardant sur le schéma et l'orientation sur les noms de blocs et les tableaux de relations (contrôle de passage) entre eux. Après le début du programme, la commande est passée au bloc de traitement préliminaire. Dans ce bloc, certains paramètres généraux peuvent être analysés. Par exemple, s'il n'y a pas assez de barres dans une fenêtre (barres nécessaires pour calculer les paramètres des indicateurs techniques), une EE ne pourra pas fonctionner correctement. Dans un tel cas, une EA doit mettre fin à l'opération en informant préalablement un utilisateur et en signalant la raison de la résiliation. S'il n'y a pas de contraindicatons de caractère général, le contrôle est passé au bloc comptable de commande. Dans le bloc d'ordres comptables, le nombre et la qualité des ordres existant dans un terminal client pour une sécurité (à la fenêtre dont l'EA est relié) est détecté. Dans ce bloc, les ordres d'autres titres doivent être éliminés. Si une stratégie de négociation programmée nécessite l'utilisation uniquement des ordres du marché (et n'utilise pas les commandes en attente), le fait de la présence d'ordres en attente doit être détecté. Si une stratégie n'admet qu'un seul ordre de marché et qu'il y a effectivement plusieurs ordres, ce fait devrait également être connu. La tâche du bloc de comptabilisation des ordres (dans ce schéma) consiste à déterminer si la situation commerciale actuelle correspond à une situation attendue, à savoir celle dans laquelle l'EE peut fonctionner de manière adéquate. Si la situation correspond, le contrôle doit être passé au bloc suivant pour continuer l'opération de l'EA si non, l'opération EA doit être terminée et ce fait doit être signalé à un utilisateur. S'il n'y a pas d'ordres dans le terminal ou si le nombre et la qualité des ordres existants correspond à ce qui était attendu, le contrôle est passé au bloc de critères de négociation définissant. Dans ce bloc sont calculés tous les critères nécessaires à la prise de décisions commerciales, à savoir les critères d'ouverture, de fermeture et de modification des ordres. Une commande supplémentaire est passée au bloc d'ordres de clôture. Il est facile de comprendre pourquoi dans le schéma offert le bloc de commandes de clôture est exécuté plus tôt que le bloc d'ordres d'ouverture. Il est toujours plus raisonnable de traiter les premières commandes existantes (fermer ou modifier) et seulement après cela pour ouvrir de nouvelles commandes. En général, il est correct d'être guidé par le désir d'avoir aussi peu d'ordres que possible. Lors de l'exécution de ce bloc, toutes les commandes, pour lesquelles le critère de fermeture a été activé, doivent être fermées. Une fois que tous les ordres nécessaires ont été fermés, le contrôle est passé à un bloc de calcul de taille des nouveaux ordres. Il ya beaucoup d'algorithmes pour calculer un volume d'ordre. La plus simple d'entre elles utilise une taille de lot constante et fixe. Il est pratique d'utiliser cet algorithme dans un programme pour tester des stratégies. La méthode la plus populaire pour définir une taille d'ordre est de définir le nombre de lots en fonction de la quantité de marge libre, par exemple 30-40 de celle-ci. Si la marge libre n'est pas suffisante, le programme met fin à son fonctionnement après avoir informé l'utilisateur de la raison. Après que le nombre de lots pour l'ouverture de nouvelles commandes est défini, le contrôle est passé au bloc d'ouverture de commande. Si l'un des critères calculés précédemment souligne la nécessité d'ouvrir un ordre d'un certain type, une requête commerciale pour ouvrir une commande est formée dans ce bloc. Il y a aussi un bloc d'analyse d'erreur dans un Expert Advisor. Si une opération échoue, le contrôle (uniquement dans ce cas) est transmis au bloc de traitement d'erreur. Si une erreur retournée par un serveur ou un terminal client n'est pas cruciale, une nouvelle tentative est faite pour effectuer une opération commerciale. Si une erreur cruciale est renvoyée (par exemple, un compte est bloqué), une EA doit terminer son opération. Rappelez-vous, dans MQL4 il n'y a aucune possibilité de programme de terminer une opération EA dans une fenêtre de sécurité (à la différence des scripts, voir Fonctions spéciales). Ce qui peut être fait d'une manière de programme est la fin de start (). Lors d'un nouveau démarrage de la fonction start () sur un nouveau tick, la valeur d'un certain drapeau variable interdisant la négociation (dans ce cas, activée à la suite d'une erreur critique) peut être analysée et le contrôle peut être passé pour la terminaison du Opération de fonction spéciale ainsi la formation d'une nouvelle demande commerciale n'est pas permise. Dans le schéma proposé, la valeur d'indicateur est analysée dans le bloc de traitement préliminaire. Stratégie de négociation Les prix du marché sont en constante évolution. L'état du marché à n'importe quel moment peut être conditionnellement caractérisé soit comme une tendance - forte variation de prix unidirectionnelle (hausse ou baisse), soit comme un mouvement de prix plat-latéral avec des déviations faibles d'une certaine moyenne. Ces caractéristiques du marché sont conditionnelles, car il n'existe pas de critères clairs selon lesquels la tendance ou l'appartement peut être identifié. Par exemple, de longs mouvements latéraux avec des écarts forts qui ne peuvent être tracés ni à un plat ni à une tendance. En général, il est supposé que le marché est principalement dans l'état de mouvement latéral et les tendances ont généralement lieu 15-20 de temps. Toutes les stratégies de négociation peuvent également être classiquement divisé en deux groupes principaux. Le premier groupe contient des stratégies à plat. L'idée principale de ces stratégies est qu'après un écart évident prix doit revenir à la position précédente, thats pourquoi les ordres sont ouverts dans la direction contraire au dernier mouvement des prix. Les stratégies du deuxième groupe sont des stratégies de tendance, lorsque les commandes sont ouvertes dans la même direction que le mouvement du prix du sel. Il existe des stratégies plus compliquées (combinées). De telles stratégies tiennent compte de nombreux facteurs différents qui caractérisent le marché en tant que résultat de négociation peut être exécuté à la fois sur plat et tendance. Il n'est pas difficile de mettre en œuvre le commerce selon telle ou telle stratégie techniquement - MQL4 contient tous les moyens nécessaires pour cela. Le travail principal dans la création d'une stratégie propre fois consiste à la recherche de critères commerciaux. Critères de négociation Dans cet exemple, nous allons essayer de construire un expert expert en tendance, c'est-à-dire celui qui ouvrira les ordres dans la direction du mouvement des prix. Ainsi, nous devons trouver parmi les différents indicateurs techniques ceux qui détectent une tendance commençant. L'une des méthodes les plus simples de recherche des critères de négociation est basée sur l'analyse de la combinaison des MA avec des périodes de moyenne différente. Figue. 111 et Fig. 112 montrent la position de deux MA différents (avec des périodes de moyenne 11 et 31) sur différentes parties du marché. Les moyennes avec une petite période moyenne (lignes rouges) sont plus proches d'un tableau de prix, twisty et mobile. Les moyennes mobiles avec une plus grande période de moyenne (ligne bleue) sont plus inertes, affichent un décalage plus important et sont situées plus éloignées des prix du marché. Permet de prêter attention aux endroits où les AM avec des périodes de moyenne différente croiser et essayer de décider, si le fait de MA traversée peut être utilisé comme un critère de lecture. Figue. 111. Traversée de MA (11) et MA (31) lorsque la direction de déplacement de prix change. Dans la Fig. 111 nous voyons une partie du marché où les ordres d'ouverture dans le sens de mouvement des prix au croisement MA est justifiée. Dans le point A la ligne rouge traverse le bleu de bas en haut, après que le prix du marché continue à croître pendant un certain temps. Une inversion supplémentaire de MA crossing indique le changement de direction du mouvement des prix. Si nous ouvrons un ordre Buy au point A et le fermons à B, nous obtiendrons un profit proportionnel à la différence des prix A et B. Figue. 112. Traversée de MA (11) et MA (31) lorsque la direction du mouvement des prix change. Dans le même temps, il y a d'autres moments sur le marché lorsque MA croise, mais cela n'entraîne pas d'autres hausses de prix ou de chutes considérables (figure 112). Les ordres ouverts à la traversée MA à ces moments entraîneront des pertes. Si la vente est ouverte à A et fermée à B, cette transaction entraînera des pertes. La même chose peut être dite sur une commande Buy ouverte à B et fermée à C. Le succès de toute la stratégie mise en œuvre sur la base de la traversée MA dépend du nombre de pièces qui peuvent être caractérisés comme tendance et à plat. Dans le plat souvent MA traversant est un événement régulier qui interfère avec toute stratégie de tendance. De nombreux faux signaux conduisent généralement à des pertes. C'est la raison pour laquelle ce croisement de MA avec des périodes de moyenne différente peut être utilisé pour construire des stratégies de négociation uniquement en combinaison avec d'autres signes indiquant une tendance. Dans cet exemple (pour construire un simple Expert Advisor), nous devrons refuser d'utiliser ce signe. Nous utiliserons un autre signe. Analysant visuellement le caractère des variations de prix sur le marché, nous pouvons voir qu'une longue hausse ou baisse des prix à une direction apparaît souvent sous l'effet d'un mouvement court et fort. En d'autres termes, si dans un court laps de temps un fort mouvement s'est produit, nous pouvons nous attendre à sa poursuite à moyen terme. Figue. 113 montre la période du marché où un mouvement fort a entraîné la poursuite de la variation du prix dans la même direction. Comme le mouvement de quota fort nous pouvons utiliser la différence de MA avec des périodes de moyenne différente. Plus le mouvement est fort, plus le retard est grand, plus la période moyenne de MA est plus courte et si la moyenne est faible. De plus, même de forts mouvements de prix discontinus avec un retour supplémentaire n'entraînent pas une grande différence entre les MA, c'est-à-dire que de nombreux faux signaux n'apparaissent pas. Par exemple, le saut de prix de 50 points avec retour supplémentaire (au centre de la figure 113) a entraîné une augmentation de la différence entre MAs seulement de 20 points. Dans le même temps, un mouvement vraiment fort (qui n'est généralement pas accompagné d'une correction considérable) au point A a entraîné une augmentation de la différence de 25 à 30 points. Si l'ordre d'achat est ouvert lorsqu'une certaine valeur de différence entre MA est atteinte, par exemple dans A, très probablement l'ordre sera rentable quand un prix atteint une valeur de commande d'arrêt prédéfinie. Utilisons cette valeur comme critère de négociation dans notre Expert Advisor. Nombre d'ordres Dans cet exemple, nous analysons un Expert Advisor qui admet la présence d'un seul ordre de marché, les commandes en attente ne sont pas fournies. Une telle approche est justifiée non seulement dans cet exemple, mais peut servir de base à toute stratégie. Les commandes en attente sont habituellement utilisées lorsqu'un développeur a un critère assez fiable pour prévoir le changement de prix futur avec une probabilité élevée. S'il n'y a pas de tel critère, il n'est pas nécessaire d'utiliser les commandes en attente. La situation où plusieurs ordres opposés pour un titre sont ouverts ne peut pas non plus être considérée comme raisonnable. Il a été écrit plus tôt que du point de vue économique les ordres opposés sont considérés comme insensés, surtout si les prix de commande sont égaux (voir la Clôture et la Suppression d'Ordres). Dans un tel cas, nous devrions fermer un ordre par un autre et attendre qu'un signal ouvre un ordre de marché dans une certaine direction. Relation des critères de négociation À partir de cette position, il devient clair quelles sont les relations possibles entre les critères de négociation. Figue. 114 montre trois variantes de corrélation des critères de négociation, lorsque chaque critère est important (valide). Les actions (ouverture et fermeture des ordres du marché) s'effectuent dans le sens des aiguilles d'une montre sur les images suivantes. Figue. 114. Ordonner la corrélation des critères d'ouverture et de fermeture (a et b - correcte, c - incorrecte). La variante la plus populaire d'un critère de négociation correctement formé est la variante a. Après avoir été ouvert un ordre de marché Achat est maintenu jusqu'au moment où le critère nécessitant sa fermeture déclenche. Après cela une pause se produit quand aucun ordre n'est ouvert. En outre, une vente au marché Sell peut être ouvert. Les conditions de clôture d'une commande de vente (conformément aux critères correctement formés) se produisent plus tôt que les conditions d'ouverture d'une commande d'achat. Toutefois, un ordre d'achat peut être ouvert une fois de plus, si un critère de négociation l'exige. Mais selon cette variante, un ordre du marché ne peut pas être ouvert s'il existe un ordre de marché ouvert dans le sens contraire. Des corrélations de critères similaires se trouvent dans la variante b. La différence est qu'un critère d'ouverture d'un ordre de marché est en même temps un critère pour fermer l'ordre opposé. Cette variante comme la variante a ne permet pas de plusieurs ordres ouverts dans le terminal en même temps sur une sécurité. La variante de corrélation des critères est incorrecte. Selon cette variante, l'ouverture d'un ordre de marché est autorisée lorsque des commandes contraires ne sont pas encore fermées, ce qui est insensé. Il peut y avoir de rares cas où cette variante est partiellement justifiée. L'ouverture d'un ordre opposé est parfois acceptable pour compenser les pertes qui se produisent à de petites corrections après des mouvements de prix forts. Dans de tels cas, un ordre opposé peut être ouvert de la même valeur ou plus petite que celle qui existe déjà et fermé quand la correction est terminée. Une telle tactique permet de ne pas interférer avec le quotmainquot ordre ouvert dans la direction de la tendance. En général, plusieurs ordres à une direction sont également possibles. Cela peut être justifié lorsqu'un ordre ouvert antérieur est protégé par une ordonnance Stop et que le critère de l'évolution des prix dans le même sens est de nouveau déclenché. Toutefois, lors de la création d'une telle stratégie, un développeur doit être pleinement conscient que dans le cas d'un changement brusque de mouvement des prix, les ordres d'arrêt placés peuvent être exécutés par certains courtiers au premier contact de prix. Et la perte sera proportionnelle à la valeur totale des ordres de marché unidirectionnels. Dans notre exemple, nous utilisons la variante b de la corrélation des critères de négociation. Toutes les commandes ouvertes sur le marché sont fermées soit par un ordre d'arrêt, soit par un critère d'ouverture d'une commande en sens inverse (ici le critère de fermeture de l'achat coïncide avec celui d'ouverture de la vente et vice versa). Taille des ordres ouverts Dans toute stratégie de négociation, la taille des commandes doit être raisonnablement limitée. Dans un cas simple, une taille d'ordre fixe est utilisée dans un Expert Advisor. Avant le début de l'opération EA, un utilisateur peut définir toute taille de commandes futures et la laisser inchangée pendant un certain temps. En outre, si l'équilibre change, un utilisateur peut établir une nouvelle valeur des numéros de lot des ordres ouverts. Une taille d'ordre trop petite confère plus de confiance à l'opération au changement de marché imprévisible, mais le profit en cas de succès ne sera pas si grand. Si la taille de l'ordre est trop grande, un gros profit peut être acquis, mais une telle EA sera trop risquée. Habituellement, la taille des commandes ouvertes est établie de sorte que les exigences de marge n'excèdent pas 2-35 pour cent du solde ou de la marge libre (si une stratégie ne permet qu'un ordre ouvert, un solde et une marge libre au moment de l'ouverture de la commande égal). Dans cet exemple, les deux variantes sont implémentées. Un utilisateur peut choisir d'indiquer directement des valeurs de commandes ou de définir la valeur en pourcentage à partir de la marge libre. Détails de la programmation Une tendance simple Expert expert tradingexpert. mq4 construit sur la base des arguments précédents peut ressembler à ceci: Décrire les variables Un autre critère dans l'estimation du programme est sa lisibilité. Un programme est considéré comme correctement écrit, s'il peut être facilement lu par d'autres programmeurs, thats pourquoi toutes les parties du programme principal et principaux moments caractérisant la stratégie doit être commentée. C'est aussi pourquoi il est recommandé de déclarer et de commenter toutes les variables au début du programme. Dans le bloc 1-2, les variables externes et globales sont décrites. Selon les règles, les variables externes et globales doivent être ouvertes avant leur première utilisation (voir Types de variables), c'est pourquoi elles sont déclarées dans la partie de tête du programme. Toutes les variables locales de la fonction start () sont rassemblées et décrites dans la partie fonction supérieure (bloc 2-3) immédiatement après l'en-tête de fonction. Règles de déclarer les variables locales ne l'exigent pas, mais aussi ne pas interdire. Si un programmeur rencontre des difficultés à comprendre la signification d'une variable lors de la lecture du programme, il peut se référer à la partie supérieure du programme et trouver la signification et le type de toute variable. Il est très pratique dans la pratique de la programmation. Bloc de prétraitement Dans cet exemple, le prétraitement se compose de deux parties (bloc 3-4). Le programme met fin au fonctionnement s'il n'y a pas assez de barres dans une fenêtre de sécurité dans ce cas il est impossible de détecter correctement (dans le bloc 5-6) les valeurs des moyennes mobiles nécessaires pour calculer les critères. Par ailleurs, la valeur de la variable Travail est analysée. Dans l'opération EA normale, la valeur de la variable est toujours vraie (elle est définie une fois pendant l'initialisation). Si une erreur critique se produit dans l'opération de programme, false est affectée à cette variable et start () termine son opération. Cette valeur ne changera pas à l'avenir, c'est pourquoi le code suivant n'est pas exécuté. Dans ce cas, l'opération de programme doit être arrêtée et la raison de l'erreur critique doit être détectée (si nécessaire, un centre de traitement doit être contacté). Une fois la situation résolue, le programme peut être lancé à nouveau, c'est-à-dire que l'EA peut être attaché à une fenêtre de sécurité. Ordres comptables Le conseiller expert décrit ne permet de travailler que sur un seul ordre de marché. La tâche du bloc comptable des ordres (bloc 4-5) est de définir les caractéristiques d'un ordre ouvert, s'il en existe un. Dans la boucle passant par les commandes pour tous les marchés existants et les commandes en attente sont vérifiés, à savoir de la première (int i1) à la dernière (iampltOrdersTotal ()). Dans chaque itération de cycle, l'ordre suivant est sélectionné par la fonction OrderSelect (). La sélection s'effectue à partir d'une source d'ordres ouverts et en attente (SELECTBYPOS). Si la sélection est exécutée avec succès (c'est-à-dire qu'il ya une autre commande dans le terminal), cet ordre et la situation doivent être analysés: si l'ordre est ouvert pour la sécurité, Il doit également être pris en compte lors du comptage des ordres. Dans la ligne: toutes les commandes ouvertes pour un autre titre sont éliminées. L'opérateur continue à arrêter l'itération et les caractéristiques d'un tel ordre ne sont pas traitées. Mais si l'ordre est ouvert pour la sécurité, à la fenêtre dont l'EA est attaché, il est analysé plus loin. Si OrderType () renvoie une valeur supérieure à 1 (voir Types of Trades), l'ordre sélectionné est en attente. Mais dans ce Expert Advisor gérer les commandes en attente n'est pas fourni. Cela signifie que l'exécution de start () doit être terminée, car une situation de conflit s'est produite. Dans un tel cas, après un message concernant l'exécution de l'opération () l'exécution est arrêtée par le retour de l'opérateur. Si le dernier contrôle a montré que l'ordre analysé est un ordre de marché, le nombre total de commandes d'un titre est calculé et analysé. Pour la première de ces commandes, toutes les caractéristiques nécessaires sont définies. Si, au cours de la prochaine itération, le compteur de commandes (variable Total) trouve le deuxième ordre de marché, la situation est également considérée comme étant conflictuelle, car l'EA ne peut gérer plus d'un ordre de marché. Dans un tel cas, l'exécution de start () est arrêtée après avoir montré un message correspondant. En conséquence de l'exécution du bloc de comptabilité de commande (si toutes les vérifications ont été réussies), la variable Total conserve sa valeur zéro s'il n'y a pas d'ordres au marché ou obtient la valeur 1 s'il existe un ordre de marché pour notre sécurité. Dans ce dernier cas, certaines variables fixées en correspondance avec les caractéristiques de l'ordre (nombre, type, prix d'ouverture, niveaux d'arrêt et valeur de la commande) obtiennent également leurs valeurs. Calcul des critères de négociation Dans l'exemple analysé, la définition des critères de négociation (bloc 5-6) est calculée sur la base de la différence entre les moyennes mobiles avec différentes périodes de calcul de la moyenne. Selon les critères acceptés, un graphique est dirigé par un taureau si la valeur courante de l'AM avec une période plus petite est supérieure à la valeur de MA avec une période plus grande et la différence entre les valeurs est supérieure à une certaine valeur. Dans un mouvement d'ours MA avec une période plus petite est inférieure à MA avec une période plus longue et la différence est également plus grande qu'une certaine valeur critique. Au début du bloc, les valeurs des MA avec des périodes de moyenne PeriodMA1 et PeriodMA2 sont calculées. La signification de tout critère de négociation est exprimée par la valeur d'une variable correspondante. Les variables OpnB et OpnS désignent le déclenchement de critère pour l'ouverture des ordres Achat et Vente, les variables Cls et ClsS - pour la clôture. Par exemple, si un critère d'ouverture de Buy n'a pas été déclenché, la valeur de OpnB reste fausse (définie à l'initialisation de la variable) si elle a déclenché, OpnB obtient la valeur true. Dans ce cas, le critère de fermeture Sell coïncide avec celui d'ouverture Buy, le critère d'ouverture Sell coïncide avec celui de fermeture Buy. Les critères de négociation acceptés dans cet exemple sont utilisés à des fins éducatives seulement et ne doivent pas être considérés comme une ligne directrice lors de la négociation sur un compte réel. Ordres de clôture Il a été écrit plus tôt que ce conseiller expert est destiné à fonctionner uniquement avec un ordre de marché ouvert pour un titre, à quelle fenêtre l'EE est jointe. Au moment où le contrôle dans le programme est passé au bloc de fermeture d'ordre, on sait avec certitude qu'au moment actuel il n'y a pas d'ordres pour la sécurité, ou il n'y a qu'un seul ordre de marché. C'est pourquoi le code dans le bloc de fermeture de commandes est écrit de sorte qu'une seule commande peut être fermée avec succès. Ce bloc est basé sur la boucle infinie tandis que le corps est composé de deux parties analogues: l'une pour la fermeture d'une commande Achat, l'autre pour la fermeture d'une commande Vente. Bien qu'il soit utilisé ici dans le but que dans le cas d'un échec de l'opération commerciale, il pourrait être répété une fois de plus. Dans l'en-tête du premier opérateur si la condition de fermeture d'une commande Achat est calculée (les ordres de vente sont fermés de la même façon). Si le type d'un ordre ouvert antérieur correspond à Achat (voir Types de transactions) et que le signe de clôture Achat est pertinent, le contrôle est transmis au corps de l'opérateur si si une demande de fermeture est créée. Comme un prix de clôture d'ordre dans la fonction OrderClose (), la valeur d'un devis à deux côtés correspondant au type d'ordre est indiquée (voir Exigences et limitations dans la fabrication des métiers). Si une opération commerciale est exécutée avec succès, après qu'un message sur la fermeture de l'ordre est montré le courant alors que l'itération est arrêtée et l'exécution du bloc de fermeture d'ordre est terminée. Mais si l'opération échoue, la fonction définie par l'utilisateur pour traiter les erreurs FunError () est appelée (bloc 10-11). Traiter les erreurs En tant que paramètre passé dans FunError (), le dernier code d'erreur calculé par GetLastError () est utilisé. En fonction du code d'erreur, FunError () renvoie 1 si l'erreur n'est pas critique et que l'opération peut être répétée, et 0 si l'erreur est critique. Les erreurs critiques sont divisées en deux types: ceux après lesquels une exécution du programme peut être poursuivie (par exemple, une erreur commune) et ceux qui doivent ensuite être arrêtés (par exemple, compte bloqué). Si après une opération échouée, la fonction définie par l'utilisateur renvoie 1, le courant alors que l'itération est terminée et pendant la prochaine itération, une autre tentative est faite pour exécuter l'opération - pour fermer l'ordre. Si la fonction renvoie 0, l'exécution courante start () est arrêtée. Une nouvelle tentative de fermeture de l'ordre sera lancée au prochain démarrage () par le terminal client et si les conditions de fermeture de l'ordre sont préservées. Si lors du traitement des erreurs, il est constaté que l'exécution d'un programme supplémentaire est insensée (par exemple le programme fonctionne sur une ancienne version de terminal client) lors du prochain démarrage, l'exécution de la fonction spéciale start () sera terminée dans le bloc de traitement préliminaire lorsque En analysant la valeur de la variable Travail. Calcul du montant des lots pour les nouveaux ordres Le nombre de lots peut être calculé en fonction des paramètres d'un utilisateur suivant l'une des deux variantes. La première variante est une certaine valeur constante établie par un utilisateur. Selon la deuxième variante, le montant des lots est calculé sur la base d'une somme égale à un certain pourcentage (fixé par un utilisateur) d'une marge libre. Au début du bloc de définition de la quantité de lots pour les nouveaux ordres (bloc 7-8), les valeurs nécessaires de certaines variables sont calculées - montant minimal autorisé des lots et étape du changement de lot mis en place par un courtier, marge libre et prix de Un lot pour la sécurité. Dans cet exemple, on fournit ce qui suit. Si un utilisateur a mis en place une certaine valeur non nulle de la variable externe Lts, par exemple 0,5, elle est acceptée comme étant la quantité de lots Lts lorsqu'une demande de transaction pour ouvrir une commande est formée. Si 0 est affecté à Lts, le nombre de lots Lts est défini sur la base de la variable Prots (pourcentage), de la marge libre et des conditions établies par un courtier. Une fois Lts calculé, un contrôle est effectué. Si cette valeur est inférieure à la valeur minimale autorisée, la valeur minimale autorisée est acceptée. Mais si la marge libre n'est pas suffisante, après un message correspondant, l'exécution start () est terminée. Commandes d'ouverture Le bloc d'ordres d'ouverture (bloc 8-9) comme le bloke des ordres d'ouverture est une boucle infinie while. Dans l'en-tête du premier opérateur si les conditions d'ouverture d'une commande Achat sont calculées: s'il n'y a pas d'ordres pour la sécurité (la variable Total est égale à 0) et le signe d'ouverture d'une commande Achat est pertinent (OpnB est vrai), le contrôle Est passée à si le corps d'opérateur pour ouvrir une commande. Dans un tel cas, après les taux sont actualisés les prix pour les niveaux d'arrêt sont calculés. Les valeurs des niveaux d'arrêt sont initialement définies par un utilisateur dans les variables externes StopLoss et TakeProfit. Dans un cas général, un utilisateur peut définir des valeurs pour ces paramètres plus petites qu'un courtier le permet. En outre, un courtier peut changer la distance minimale autorisée à tout moment (c'est souvent un cas à des mouvements importants du marché, par exemple, avant le communiqué de presse important). C'est pourquoi avant chaque ordre, les niveaux d'arrêt d'ouverture doivent être calculés en tenant compte des valeurs définies par un utilisateur et de la valeur minimale autorisée établie par un courtier. Pour calculer les niveaux d'arrêt, la fonction définie par l'utilisateur NewStop () est utilisée comme paramètre passé, la valeur de niveau d'arrêt définie par un utilisateur est utilisée. Dans NewStop (), on calcule d'abord la distance minimale autorisée actuelle. Si la valeur définie par un utilisateur correspond à une exigence de courtier, cette valeur est renvoyée. Si elle est inférieure à la valeur autorisée, la valeur autorisée par un courtier est utilisée. Les prix des demandes d'arrêt sont calculés à partir du devis à deux côtés correspondant (voir Exigences et limitations dans la fabrication des métiers). Une requête commerciale pour ouvrir une commande est formée à l'aide de la fonction OrderSend (). Pour le calcul du prix d'ouverture des commandes et des prix des demandes d'arrêt, les valeurs de devis recto verso correspondant au type d'ordre sont utilisées. Si une opération commerciale a réussi (c'est-à-dire qu'un serveur a renvoyé le numéro d'un ordre ouvert) après qu'un message concernant une ouverture de commande réussie soit montré. Start () est terminée. Si un ordre n'a pas été ouvert et que le terminal client a renvoyé une erreur, l'erreur est traitée conformément à l'algorithme décrit précédemment. Quelques particularités du code Le code du conseiller expert analysé est orienté vers la mise en œuvre d'une certaine stratégie. Notez que certaines lignes de programme contiennent des variables et des calculs qui seraient modifiés si la stratégie était modifiée. Par exemple, selon la stratégie acceptée, le conseiller expert est développé pour fonctionner uniquement avec un ordre. Cela a permis d'utiliser la variable Ticket à la fois pour l'identification d'un numéro de commande de clôture (dans le bloc de fermeture 6-7) et pour l'identification d'un succès d'exécution d'une opération commerciale lors de l'ouverture d'une commande (dans le bloc d'ouverture 8-9 ). Dans ce cas, une telle solution est acceptable. Cependant, si nous prenons le code analysé comme base pour la mise en œuvre d'une autre stratégie (par exemple, pour les ordres opposés), nous devrons introduire une ou plusieurs variables pour pouvoir reconnaître le nombre d'ordres ouverts et identifier le succès des opérations commerciales. Dans d'autres modifications de stratégie, nous devrons changer les lignes de programme venues contenant une partie des logiques contenues dans la stratégie source. À savoir dans le bloc de comptabilité d'ordre, nous ne devrons pas mettre fin à l'opération de programme s'il y a plusieurs ordres ouverts pour une sécurité. En outre, les conditions d'ouverture et de clôture des commandes changeront également. Cela implique le changement de code en blocs d'ordres d'ouverture et de fermeture. Sur la base de cette analyse, nous pouvons facilement conclure que le conseiller expert décrit simple n'est pas parfait. In a general case, for the implementation of order accounting one should use a universal function based on using data arrays and not containing logics of a certain strategy. The same can be said about the blocks of opening and closing orders. A more complete program must contain a main analytical function, all other user-defined functions must be subordinate to it. This analytical function must contain a program code, in which all conditions for the implementation of any strategy are analyzed all subordinate functions must perform limited actions. The function of accounting orders must only account orders, functions of opening and closing orders must only open and close orders, and the analytical function must quotthinkquot and manage all other functions, i. e. call them when needed. EURUSD Moving Average Cross EA Joined Jul 2010 Status: Member 98 Posts Hi Traders, I have been developing a strategy for EU on the H1 TF using a universal moving average ea I found here on FF I think. Fondamentalement, il entre dans un commerce long sur la croix de la 21 EMA sur les 60 EMA lorsque les deux sont au-dessus de la 200 EMA. En face d'une entrée courte. TP est fixé à 1000 pips avec un 70 TS pip. La bonne chose est le SL est fixé à 20 pips ainsi un perdant ne sera pas grand. En backtesting il a environ un taux de 48 victoires et les gagnants sont 4 fois plus grand que les perdants. Bien sûr, tous les paramètres peuvent être définis par l'utilisateur. J'ai développé ces paramètres et les trouve assez solides. Je n'ai pas échangé cette vie, mais je sais que les moyennes mobiles que j'ai mentionné sont fréquemment utilisés par de nombreux commerçants. Je l'ai backtested pendant six mois sur Alpari aux États-Unis avec un facteur de profit de 3,67 avec la gestion de l'argent en vedette activé. Il est fixé à 4 de risque par le commerce qui est un peu riche, qui peut toujours être réduit à votre tolérance au risque. (Je préfère 2-3) Fondamentalement, je suis en train de mettre cela là-bas pour voir si quelqu'un voudrait faire passer le test sur les différents courtiers pour voir si elle a un vrai mérite. Je sais que la plupart des commerçants mettre très peu ou pas de stock dans le dos test, mais l'UE ne tendance assez bien si vous entrez dans une bonne tendance commerce avec assez de respiration et 70 pips semble être suffisant, il peut être utile d'essayer. Il ne commerce souvent environ une fois par semaine. C'est le premier fil que j'ai commencé ainsi j'espère que je peux poster les résultats de backtest et le ea bien. LOL Happy trading veveryone Image attachée (cliquer pour agrandir) Membre depuis Nov 2005 Statut: EURUSD Quant FREAK 3,198 Messages Cette EA n'est rien de nouveau. Il a été fourni à l'origine par FireDave vers 2005. Il ya beaucoup de documentation sur elle sur le forum TSD. J'ai rejoint les paramètres pour les paramètres que j'ai testés. Vous pouvez voir les paramètres dans les informations de test arrière, mais, je pensais que je vais les expliquer. 21 EMA 60 EMA 200EMA Utiliser le troisième matrue SL 20 pips TP 1000 pips TS 70 pips MMTrue Je crois que le reste est laissé au défaut Inscrit septembre 2005 Statut: Membre 1,263 Posts J'avais joué avec cette EA pour les 2 derniers jours avec d'autres paramètres. En fait, je cherchais une alerte ou EA qui déclencherait également une entrée après la MA lente et moyenne a traversé et le moment où le prix touche ou passé le troisième MA rapide par x pips. Avec discrétion, si elle se produit à un point de confluence S amp R, je clique alors pour confirmer l'entrée. Pour n'importe quel système, quel moment pour le commerce et où (soutien et zone de résistance) pour le commerce va améliorer le taux de réussite Peut-on ajouter ceci à la Ea ou créer une autre EA Thanks Inscrit en juin 2010 Statut: Membre 98 Messages J'avais joué avec cette EA Pour les 2 derniers jours avec d'autres paramètres. En fait, je cherchais une alerte ou EA qui déclencherait également une entrée après la MA lente et moyenne a traversé et le moment où le prix touche ou passé le troisième MA rapide par x pips. Avec discrétion, si elle se produit à un point de confluence S amp R, je clique alors pour confirmer l'entrée. Pour n'importe quel système, quel temps pour le commerce et où (soutien et zone de résistance) pour le commerce va améliorer le taux de réussite Peut-on ajouter cela à la Ea ou créer une autre EA Merci Yes Highway une alerte pour ce serait bien. Merci pour l'intérêt. Soins à partager sur les paramètres que vous avez essayé Inscrit septembre 2005 Statut: Member 1,263 Posts J'utilise des indicateurs et des EA juste pour m'aider à mieux voir ou alerte. Je pense que nous nous appuyons sur des indicateurs ou des évaluations environnementales puisque l'entrée sur le marché ne peut vous donner un système durable. Quel que soit les paramètres que vous utilisez pour votre MA traverser dépend de l'angle que vous approchez du marché Les paramètres que j'utilise pourraient ne pas vous convenir du tout. De toute façon ema 10, 21, 62 et surtout, les 365 ont mon attention. Essayez de jouer à cette EA avec mes paramètres EMA ci-dessus. Mais activer l'EA seulement avec certaines conditions. 1. Dessinez SampR sur W1 puis zoomer sur D1 et faites de même. Puis à H4 et faire les mêmes 2 Draw Fibs pour hebdomadaire et puis Daily. 3 Avoir M1. W1 D1 pivots Vous trouverez des points de confluence forts. Voilà comment j'utilise les indicateurs, je suppose que le prix se déplace d'un confluent à un autre. Essayez sur votre carte W1 ou D1 - attendre que le prix arrive à n'importe qui S ou R confluence. Ensuite, activez votre EA. Stop Loss sera minime Votre TP pourrait être la prochaine S ou R sur D1 W1 ou commencer TP partiel sur H1 ou H4 s SampR Mon bord supplémentaire sur TF plus courte, je sollicite le biais de direction sont des stocks et d'autres indices Exemple le DOW affecte le Yen. Etc Si le DOW est en baisse de session en Asie, j'ai PLAN A. etc que je rentre en Europe. Plan B. si. Ne pas obtenir votre EA activé avant ces confluence, mais aussi seulement sur les périodes de négociation HAUTE. Je paie beaucoup de temps à lire derrière les nouvelles HOT pour localiser les risques ou les risques pour chaque session. De là, je peux aussi distinguer si c'est un mouvement FOREX ou est-ce un mouvement du sentiment boursier - une façon essentielle de choisir quelle paire au commerce et quelle paire sera inactif. Je ne peux guère croire que vous pouvez faire de l'argent sur une base à long terme simplement en s'appuyant sur un ROBOT. Tout ROBOT devra évoluer et vous qui créez le ROBOT, vous devez sans cesse le modifier. Et avoir acquis des connaissances sur COMMENT, POURQUOI, QUOI, QUAND, etc est nécessaire pour se déplacer avec ce flux. Testé. Il semble bien dans les derniers mois, 5 ou 6 métiers très rentables compensé pour tous les perdants dans cette période. Mais si vous remontez à la période avant 2010, cette stratégie est un terrible perdant. Je pense que ces deux bons métiers les dernières années peut être juste une coïncidence, plus loin histoire backtest confirme cela. En outre, avec un risque de 5 vous wouldnt ont même fait 50 bénéfices dans la dernière 1,5 année. Ne pas vous insulter, mais je pense que cette EA combinée à ces paramètres n'est pas vraiment va fonctionner sur le long terme Ne fonctionne pas sur les autres paires. Merci pour votre contribution Esquire, j'ai de nouveau testé pendant 18 mois et il a encore un facteur de profit de 1,99 Voir déclaration jointe J'utilise des indicateurs et EA juste pour m'aider à mieux voir ou alerte. Je pense que nous nous appuyons sur des indicateurs ou des évaluations environnementales puisque l'entrée sur le marché ne peut vous donner un système durable. Quel que soit les paramètres que vous utilisez pour votre MA traverser dépend de l'angle que vous approchez du marché Les paramètres que j'utilise pourraient ne pas vous convenir du tout. De toute façon ema 10, 21, 62 et surtout, les 365 ont mon attention. Essayez de jouer à cette EA avec mes paramètres EMA ci-dessus. Mais activer l'EA seulement avec certaines conditions. 1. Dessinez SampR sur W1 puis zoomer sur D1 et faites de même. Puis à H4 et faire les mêmes 2 Draw Fibs. Merci Highway, Vous avez une énorme quantité de connaissances sur les marchés, merci de partager ça. Malheureusement avec un emploi à temps plein et les engagements de la famille, j'ai peu de temps pour étudier réellement et le commerce qui est la raison pour laquelle je suis attiré par des conseillers experts. Je sais que la plupart des commerçants ne pas leur faire confiance et je comprends cela. Essayez de le tester avant cela, commencer quelque part en 2008 amp regarder la ligne d'équité en baisse. Mon point est que le couple de métiers qui rendent cette rentable (vérifier votre ligne d'équité, il vous montrera 56 lignes escarpées) sont insignifiants, et pourrait être la coïncidence qu'ils se sont produits. Ils n'ont pas arriver que souvent avant 2010, et ils ne se passent pas à d'autres paires. En outre, votre déclaration montre quelque chose comme un bénéfice de 45 en 1,5 année. L'achat de stocks SampP pour les 1,5 dernières années vous aurait donné ces résultats. Salut esquire, je ne sais pas où vous obtenez 45 bénéfices en 1,5 ans. La déclaration que j'ai affichée au poste 17 montre un bénéfice net de 4 647 sur un solde de 1000 premiers. Je ne suis pas grand avec les maths mais isnt cela comme le bénéfice 464
No comments:
Post a Comment