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
Je supprime de temps en temps tous les ordres ouverts pour que nos amis de MT4 ne soient pas contrariés.
Vous aurez ce problème dans le backtesting mais ce n'est pas un problème de script... mais un problème de backtesting MT4.
Si cela continue, faites-le moi savoir ou envoyez-moi des rapports montrant le problème...
merci et reagrds,
hugues
Le conseiller crée la grille avec mon commentaire "GridEURUSD". Ce commentaire reste dans le champ Commentaire tant que l'ordre est en attente. Si l'ordre est activé, le commentaire devient "activate/auto". Après tout, il est clair que ce comportement conduit au problème décrit.
Je travaille avec Alpari. Ils supportent MT4 dans les comptes de démonstration.
Je vais vérifier, si je peux contourner ce comportement, c'est-à-dire utiliser la magie de l'ordre comme identifiant pour la grille et vous faire part des résultats.
Tout en testant cela, j'ai également apporté des modifications au script de nettoyage de la grille. J'ai également ajouté une fonctionnalité permettant de fermer les ordres ouverts. Malheureusement, j'obtiens l'erreur 129, qui signifie "Ordre verrouillé", si j'essaie de fermer un ordre ouvert. Mais il supprime tous les ordres en attente pour la grille donnée.
cori
faites-moi savoir si cela fonctionne et j'utiliserai la magie... car je ne savais pas que le courtier faisait des choses aussi étranges !
merci et salutations,
hugues
J'ai changé le gridMaker pour utiliser le OrderMagicNumber au lieu du commentaire. J'ai aussi fait quelques petites modifications sur la construction du commentaire.
Voici le résultat.
avec mes respects, cori
comme j'avais déjà fait quelques changements moi-même, j'ai intégré tes changements dans la nouvelle version.
J'ai fait une petite variation : afin de garder mes grilles actuelles actives, j'ai mis un test sur magic OR gridname...
pouvez-vous vérifier si je l'ai fait correctement ?
semble correct. Mais vous devriez définir le GridName comme extern, ce que j'ai changé, car je n'en avais pas besoin comme paramètre.
salutations, cori
Vous pouvez modifier la ligne :
if (MathAbs( OrderOpenPrice() - atRate ) < inRange) // ne pas chercher le prix exact mais la proximité du prix (moins que la taille de la grille)
to
if (MathAbs( OrderOpenPrice() - atRate ) < (inRange*0.9)) // ne pas chercher le prix exact mais la proximité du prix (moins que la taille de la grille) - ajouter 0.9 à cause des erreurs de pont flottant
et ceci corrige le problème.
Désolé pour tout inconvénient...
hugues
Ce problème existe-t-il déjà ?
J'ai trouvé quelque chose de similaire dans l'ancien MQL2.
La façon vraiment sûre de contourner ce problème est de faire quelque chose comme :
int intOOP = MathRound( OrdeOpenPrice() / Point ) ;
pour toutes vos variables doubles. Vous avez alors toutes les variables int droites qui sont comparables sans fautes.
C'est un peu plus à écrire pour que ce soit clair et compréhensible mais c'est moins défectueux.
Avec mes salutations,
cori
salutations,
hugues
1) modifié la logique pour UseMACD, wantLongs, wantShorts. Auparavant, si useMACD était activé, l'EA prenait les positions longues et courtes, sans tenir compte des drapeaux wantLongs et wantShorts. Maintenant, useMACD ne remplacera pas ces drapeaux, donc vous pouvez être long uniquement avec useMACD ou short uniquement.
2) J'ai ajouté une vérification supplémentaire pour m'assurer qu'il n'y avait pas d'ordres ouverts du mauvais côté de l'EMA si le limitEMA34 était activé. Ce qui se passait, c'est que les ordres étaient bien placés au-dessus ou au-dessous de l'EMA, mais après quelques heures, l'EMA se déplaçait... donc il y avait des ordres des deux côtés de l'EMA.
3) Il semble y avoir un bug dans l'instruction switch sur OrderType(). Je ne suis pas sûr de ce que c'est mais il se comporte vraiment bizarrement. J'ai simplement éliminé les instructions switch et les ai remplacées par "if"... je n'aime pas ça mais ça marche !
4) J'ai rendu la période de l'EMA variable... c'est bien pour le backtesting...
J'ai aussi quelques scripts complémentaires si quelqu'un le souhaite :
1) pour supprimer les ordres ouverts non remplis pour une paire
2) pour supprimer tous les ordres ouverts pour toutes les paires en une seule fois
3) pour clôturer toutes les positions et supprimer les ordres ouverts.
4) pour obtenir quelques statistiques simples sur le comportement de la grille à partir des positions ouvertes et de l'historique.
Voici le code de la V1.08 :