[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 563
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
delf:
Le dernier ordre doit être clôturé dans n'importe quelle direction et l'ordre suivant doit s'ouvrir dans l'autre direction (lorsque les conditions sont remplies, respectivement).
Option plus stricte
abeiks:
Depuis un certain temps, , j'essaie de retravailler le bloc de fermeture des achats pour ne fermer que les deux dernières positions d'achat, mais cela échoue. Pouvez-vous dire à comment refaire le bloc ?
Depuis un certain temps, , j'essaie de retravailler le bloc de fermeture des achats pour ne fermer que les deux dernières positions d'achat, mais cela échoue. Pouvez-vous dire à comment refaire le bloc ?
Merci !
Il est plus facile, et plus pratique, de faire une fonction (bloc) pour fermer une dernière position. Et exécutez-le deux fois. En boucle, ou juste en ligne.
Merci, c'est une bonne option que je vais essayer aussi.
Je dois l'avoir mal formulé :(
Il existe un algorithme pour l'ouverture des ordres.
J'ai besoin, qu'à n'importe quelle variante de fermeture du dernier ordre, le suivant a été ouvert dans l'autre direction (quand les conditions en conséquence apparaissent).
Tout fonctionne, mais si j'ai fermé par un stop loss, par exemple, pour la vente, et les conditions pour ouvrir une vente dans cette direction, l'ouverture continue. Ce dont nous avons besoin, c'est d'attendre les conditions pour acheter.
C'est-à-dire que nous devons vérifier le dernier ordre fermé, afin qu'il ne coïncide pas avec l'ordre d'ouverture (alternance achat-vente-achat-vente). Seule une commande ou l'attente d'un signal est en cours.
Je comprends que nous devrions probablement utiliser OrdersHistoryTotal(), mais à quoi cela ressemblerait-il dans un EA fonctionnel ?
Merci.
C'est probablement le cas quelque part. Mais s'il y a beaucoup d'ordres dans l'historique, il est préférable d'utiliser votre propre carnet d'ordres. https://www.mql5.com/ru/articles/1404https://www.mql5.com/ru/articles/1390
Une option plus stricte
Je dois l'avoir mal formulé :(
Il existe un algorithme pour l'ouverture des ordres.
J'ai besoin, qu'à n'importe quelle variante de fermeture du dernier ordre, le suivant a été ouvert dans l'autre direction (quand les conditions en conséquence apparaissent).
Tout fonctionne, mais si j'ai fermé par un stop loss, par exemple, pour la vente, et les conditions pour ouvrir une vente dans cette direction, l'ouverture continue. Ce dont nous avons besoin, c'est d'attendre les conditions pour acheter.
C'est-à-dire que nous devons vérifier le dernier ordre fermé, afin qu'il ne coïncide pas avec l'ordre d'ouverture (alternance achat-vente-achat-vente). Seule une commande ou l'attente d'un signal est en cours.
Je comprends que nous devrions probablement utiliser OrdersHistoryTotal(), mais à quoi cela ressemblerait-il dans un EA fonctionnel ?
Merci.
Si vous voulez apprendre à programmer, vous pouvez soit regarder le code des autres (c'est à cela que sert CodaBase), soit partir de l'algorithme de la solution du problème. Demander d'écrire du code pour vous est la façon la plus désespérée d'apprendre. Le plus souvent, vous obtiendrez une solution mal codée à votre problème, un peu comme si (de façon allégorique) votre voisin vous appelait à la porte toutes les minutes pour vous demander "quel est votre nom" - il s'agit de calculs inutiles (superflus).
L'algorithme pour résoudre votre problème peut être le suivant. Tout d'abord, vous devez vous assurer que vous n'avez pas "vos" commandes. Ce problème, si ce n'est pour le testeur (où nous pouvons limiter la solution à la condition if (OrdersTotal() == 0), est résolu par des recherches d'ordres en utilisant des filtres pour faire correspondre OrderMagicNumber() et Symbol(). Ensuite, vous vérifiez la condition (selon votre stratégie) pour ouvrir l'ordre. S'il y a un signal, alors en utilisant la recherche de OrdersHistoryTotal() (généralement c'est le dernier de la liste), calculez le OrderType() du dernier ordre clôturé. Si le signal d'ouverture de l'ordre et le type du dernier ordre clôturé ne coïncident pas, ouvrez l'ordre en fonction du signal.
Cette approche implique un minimum de calculs et réduit considérablement le temps d 'optimisation du conseiller expert dans le testeur.
Il y a quelque temps, je vous ai donné l'algorithme permettant de résoudre la recherche des dernières positions. Et ensuite, ce qu'il faut en faire n'a pas d'importance : compter, supprimer, modifier STOP. Si vous n'êtes pas capable d'écrire du code au moins "à l'image et à la ressemblance", ce n'est pas le vôtre (programmation)...
Oui, je suis d'accord, la programmation n'est pas mon truc, donc j'apprends et je pose des questions ici. J'ai essayé d'ajouter la fermeture de position à votre algorithme mais cela a échoué (toutes les positions d'achat se fermaient) donc j'ai décidé d'aborder le problème sous un autre angle et de voir la solution de fermer les deux dernières positions d'achat sur un bloc de fermeture prêt à l'emploi qui m'a été fourni et offert.
Je vous serais très reconnaissant si vous pouviez me montrer comment fermer les deux dernières positions d'achat. Je comprendrai où j'ai fait une erreur.
Si vous voulez apprendre à programmer, vous pouvez soit analyser le code d'autres personnes (CodaBase est là pour ça), soit procéder à partir de l'algorithme pour la tâche à accomplir. Demander d'écrire du code pour vous est la façon la plus désespérée d'apprendre. Le plus souvent, vous n'obtiendrez pas le meilleur code pour votre tâche, un peu comme (allégoriquement) lorsque votre voisin sonne à votre porte toutes les minutes et vous demande "quel est votre nom" - il s'agit de calculs inutiles (superflus).
Je suis tout à fait d'accord avec vous. Vous avez tout à fait raison. C'est la bonne méthode et j'ai essayé de la suivre. Cependant, étudier MQL4 sans les manuels et lire sans raison n'a mené à rien. J'ai dû analyser le code de quelqu'un d'autre de toute façon, puisque je ne pouvais pas mettre mes propres idées folles dans le programme pour la plupart. J'ai commencé à construire la stratégie en ....excel (c'est plus proche de moi et plus compréhensible). En ce qui concerne les bases de la stratégie, elle a été très réussie et claire (sur l'histoire, bien sûr). Mais en outre, je dois tenir compte des particularités du trading : spread flottant, swap, particularités des maisons de courtage, il est difficile de faire rentrer tout cela dans des formules exel. J'ai donc décidé d'analyser la différence entre le profit dans excel et MQL. Franchement, la différence est trop importante et ne joue pas en ma faveur. Je ne sais pas encore, je vais analyser chaque position, peut-être que le conseiller expert a fait une erreur, mais cela dépend de moi.
Quoi qu'il en soit, les bonnes personnes de ce forum m'ont aidé à résoudre un problème spécifique, quel grand merci humain.