Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1229
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
D'après ce que j'ai compris, il s'agit d'une vérification périodique de la disponibilité. (Y a-t-il EURUSD ? et y a-t-il un ordre avec le Magic spécifié ?) Si l'une des conditions est manquante, nous ouvrons une position. Ce n'est que si les deux conditions sont remplies que nous ouvrons une position.
On nous demande alors à l'étape 2. Supposons que nous ayons un ordre ouvert manuellement. Nous remplissons alors la première condition (nous avons le même symbole) et nous ne remplirons pas la deuxième condition, puisque cet ordre ne contient pas de magie. Et si l'une des conditions ne correspond pas, alors le code doit ouvrir l'ordre. C'est exactement ce que fait le code. Mais au prochain tic, il ouvre le troisième, le quatrième et le cinquième ordre......
Pourquoi ouvre-t-il une troisième commande ?
Mais il y a deux commandes qui remplissent les deux conditions au total. Il devrait y avoir un contrôle (passage à return(0)), pas une ouverture. pas l'ouverture.
Bonne nuit à tous ! Pouvez-vous me dire si vous pouvez écrire un code en mql5 qui dessine une ligne sur le graphique (image jointe) et enregistre toutes les coordonnées de cette ligne dans le fichier ? Si vous souhaitez tracer une ligne et la remplir avec les coordonnées, vous devez effectuer un simple traçage de la ligne.
Tout est dans la documentation.
Tout est dans la documentation.
Merci pour le tuyau, vous pouvez peut-être m'aider à en construire un, gratuitement bien sûr.
Merci pour le tuyau, mais peut-être pouvez-vous m'aider à construire un de ces trucs, pas gratuitement bien sûr.
Pas gratuitement - c'est pour vous))))
D'après ce que j'ai compris, il s'agit d'une vérification périodique de la disponibilité. (Y a-t-il EURUSD ? et y a-t-il un ordre avec le Magic spécifié ?) Si l'une des conditions est manquante, nous ouvrons une position. Ce n'est que si ces deux conditions sont remplies que nous ouvrons une position.
On nous demande alors à l'étape 2. Supposons que nous ayons un ordre ouvert manuellement. Nous remplissons alors la première condition (nous avons le même symbole) et nous ne remplirons pas la deuxième condition, puisque cet ordre ne contient pas de magie. Et si l'une des conditions ne correspond pas, alors le code doit ouvrir l'ordre. C'est exactement ce que fait le code. Mais au prochain tic, il ouvre le troisième, le quatrième et le cinquième ordre......
Pourquoi ouvre-t-il une troisième commande ?
Mais il y a deux commandes qui remplissent les deux conditions au total. Il devrait y avoir un contrôle (passage à return(0)), pas une ouverture. mais pas l'ouverture.
== - s'il est égal != - s'il n'est pas égal. Continue - fin de l'itération de la boucle et début d'une nouvelle itération de la boucle. Rupture - fin du cycle et transition vers l'opérateur suivant qui suit le cycle, retour - fin de la fonction, dans votre cas Onstart et attente d'un nouveau tick. Et si un ordre avec votre magik est ouvert, il devrait terminer la fonction et partir pour attendre un nouveau tick.
Question, si vous voulez ouvrir un ordre dans la fenêtre actuelle, pourquoi devez-vous spécifier l'outil explicitement, ou voulez-vous ouvrir des ordres depuis la fenêtre d'un autre outil ? Le nombre d'ordres que vous souhaitez ouvrir n'est pas clair non plus. Selon votre code, une seule commande peut être ouverte et seulement après sa fermeture, la seconde sera ouverte. Vous avez un magicien et un outil de fenêtre ouverte. De plus, les conditions d'ouverture des ordres sont vérifiées pour l'instrument courant et non pour les Eurobucks.
== - si égal != - si non égal. Kontinue - termine l'itération de la boucle et commence une nouvelle itération de la boucle. Break - termine la boucle et passe à l'opérateur suivant de la boucle, return - termine la fonction, dans votre cas Onstart et attend un nouveau tick. Et si un ordre avec votre magik est ouvert, il devrait terminer la fonction et partir pour attendre un nouveau tick.
Question, si vous voulez ouvrir un ordre dans la fenêtre actuelle, pourquoi devez-vous spécifier l'outil explicitement, ou voulez-vous ouvrir des ordres depuis la fenêtre d'un autre outil ? Le nombre d'ordres que vous souhaitez ouvrir n'est pas clair non plus. Selon votre code, une seule commande peut être ouverte et seulement après sa fermeture, la seconde sera ouverte. Vous avez un magicien et un outil de fenêtre ouverte. De plus, les conditions d'ouverture des ordres sont vérifiées pour l'instrument courant et non pour les Eurobucks.
- Oui, je veux ouvrir dans la fenêtre actuelle ;
- Une commande. L'ordre suivant n'est pas ouvert tant que l'ordre précédent n'est pas fermé.
"De plus, les conditions d'ouverture des ordres sont vérifiées pour l'instrument courant et non pour les Eurobucks." - alors ?
- Oui, je veux ouvrir dans la fenêtre actuelle ;
- Une commande. L'ordre suivant n'est pas ouvert tant que l'ordre précédent n'est pas fermé.
"De plus, les conditions d'ouverture des ordres sont vérifiées pour l'instrument courant et non pour les Eurobucks." - alors ?
Et qu'est-ce qui se passe alors, par exemple, vous avez une fenêtre ouverte non pas Eurobucks, mais l'Eurofunt, vous comparez le symbole de l'ordre sélectionné avec Eurobucks, si c'est vrai, alors sur l'Eurobucks il y a un ordre, et si notre magik, alors on revient de la fonction OnStart, et si non, alors on place un ordre sur l'Eurobucks, mais Kloz, High, Asc, Bid, vous aurez une erreur lors de l'ouverture des ordres, parce que Bid et Asc pour ces instuents sont différents. Et Symbol() retournera le symbole de la fenêtre actuelle et aucune erreur ne se produira.
Utilisez le modèle de l'éditeur de méta, il y a un bouton Nouveau en haut à gauche. La fonction OnStart est toujours utilisée, mais ce n'est pas correct, et OnStart est pour les scripts. Le bon modèle.
Code correct. Le commentaire de votre commande est manquant, et le magicien n'est pas pris en compte dans votre code. Dans les avertissements de la ligne d'ouverture, notez Conversion implicite de type d'un nombre en chaîne de caractères !!!
il y a beaucoup d'erreurs dans votre exemple
il devrait y en avoir :
ici les prix ne sont pas normalisés OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-SL*Point,Bid+TP*Point,"My order",MagicNumber,0,clrGreen) ;
Ici, je ne comprends pas la logique qui fait que la sortie de OnTick() est nécessaire si la condition est fausse.
peut-être, nous devrions continuer la boucleet juste compter le nombre de commandes
Votre exemple est très simple dans sa logique et il serait difficile de le modifier pour d'autres tâches... peut-être qu'il aimerait ajouter la queue