Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1802
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
Dobro. Laissez-moi l'exprimer en termes russes simples.
Vous allez à la pêche.
Ou bien vous pouvez prendre directement tout ce dont vous avez besoin dans le garde-manger (OnInit), pêcher sans courir partout et, en rentrant chez vous, tout ranger dans le garde-manger et le réfrigérateur (OnDeinit).
Vous le saviez peut-être ici sur le forum. Il faut juste écouter et entendre ce qu'on vous dit parfois.
Sinon, on vous pose une question, on vous répond, on vous dit "conneries" et on fait ce qu'on pense.
Vous devez d'abord réfléchir à la question, poser des questions, puis commencer à rédiger.
Savez-vous que la chose la plus simple en programmation est l'impression du code ? Et la part du lion du développement est la réflexion sur la logique.
C'est une analogie ridicule. Dans ce cas, faisons en sorte que toutes les variables, les objets de classe, etc. soient globaux et ne les créent pas à la demande, ou peut-être qu'un objet graphique est autre chose (certainement pas une canne à pêche ou un filet :)). ? Mon approche est donc tout à fait rationnelle et justifiée, c'est juste que mql ou metatrader se plante.
De cette façon, le signal sera manqué
Soit je suis obtus, soit il n'y a pas de condition s'il y a des ordres ouverts ET qu'il y a un signal et que la barre est déjà nouvelle.
Si les signaux sont longs, plus d'une barre multiple, il fonctionnera également sur le premier tick de la barre.
La seule question est de savoir quand ouvrir un ordre, lorsque le signal apparaît ou au premier tick de la barre suivante.Soit je suis obtus, soit il n'y a pas de condition s'il y a des ordres ouverts ET qu'il y a un signal et que la barre est déjà nouvelle.
Si les signaux sont longs, plus d'une barre multiple, il fonctionnera également sur le premier tick de la barre.
La seule question est de savoir quand l'ordre doit être ouvert, au moment du signal ou au premier tick de la barre suivante.Le code ressemble maintenant à ceci :
Avant d'ouvrir, vérifiez s'il existe une position ouverte sur cette bougie. Si ce n'est pas le cas, ouvrez-le.
En principe, un ordre ouvert devrait normalement se clôturer sur les ticks d'une barre déjà ouverte. MakarFX et Artem ont bien noté. Par conséquent, la bonne chose à faire serait de le faire :
En principe, un ordre ouvert devrait normalement se clôturer sur les ticks d'une barre déjà ouverte. MakarFX et Artem ont bien noté. Par conséquent, la bonne chose à faire est la suivante :
Artem a raison, ça devrait être comme ça.
Tu as raison, Artem, ça devrait être comme ça.
Le résultat sera le même ici. Seul le code est plus compliqué. Vous écrivez le même code dans deux fonctions différentes. Et il sera moins lisible. Bien que chacun écrive comme il l'entend ou se sente à l'aise...
Il y a beaucoup de choses qui se passent ici.
Un poste ouvert a une heure d'ouverture. L'heure d'ouverture peut être comparée à l'heure d'une bougie - pour savoir si l'heure d'ouverture de la position est à l'intérieur de la bougie (et c'est la bougie actuelle).
Et pourquoi trouve-t-on toujours le nombre de commandes dans tous les exemples ? Et s'il n'y a pas de commandes, alors vous les ouvrez. Cela limite considérablement les possibilités.
En général, nous ne devrions nous concentrer sur le nombre d'ordres/de positions que pour une orientation stratégique très étroite.
Le résultat ici sera le même. Seul le code est plus confus. Vous écrivez le même code dans deux fonctions différentes. Et il sera moins lisible. Bien que chacun écrive comme il l'entend ou se sente à l'aise...
Votre code
(Un bar a été ouvert et aucun ordre n'a été passé)
vérifié pour un signal - pas de signal
... on attend la prochaine barre.
Vous avez répété la même erreur que la dernière fois
P.S.
c'est
doit être effectuée après l'ouverture de la commandeTu as raison, Artem, ça devrait être comme ça.
Dans votre code, si une position est ouverte, une autre ne s'ouvrira pas par le signal opposé. C'est-à-dire que, tout d'abord, lorsque le signal arrive, vous devez vérifier s'il existe une position opposée et la fermer.
Mais là encore, tout cela limite considérablement les possibilités d'améliorer les stratégies.
Nous devons éviter de nous lier à la présence/absence d'ordres (surtout en quatre - ordres en attente (ce qui est correct) et positions (ce qui est faux)).
Non, il est correct et nécessaire d'avoir à portée de main le nombre d'ordres et de positions selon leurs types. Mais il est erroné de se baser sur l'absence d'ordres uniquement pour les signaux.
En général, la bonne méthode consiste à avoir des fonctions pour compter les ordres et les positions (une fonction qui remplit la structure lorsque le nombre d'ordres et de positions change), des fonctions pour ouvrir/fermer les positions, des fonctions pour définir les ordres et des fonctions d'alarme. Fonctions des différents chaluts et obtention de données à partir d'indicateurs. Plus - possibilité de comparer les données d'une position (ouverte ou fermée) avec certaines valeurs.
Toute stratégie peut être construite à partir de cet ensemble.