MMA_Breakout_strategy_volume I (sans MM ou MF) - codé par WhooDoo22

 
J'ai pensé qu'il serait utile pour les nouveaux codeurs (et les codeurs expérimentés) de publier une version mise à jour de MMA_Breakout_strategy_Volume I, afin que les codeurs novices/expérimentés puissent avoir une chance de comprendre les deux mises à jour importantes requises pour que cet EA (volume I) fonctionne de manière plus fluide et plus efficace. Cette version n'inclut pas la gestion de l'argent ou le filtrage du marché et est toujours considérée comme le volume I. (Je suis encore en train de décider comment implémenter les fonctions de gestion de l'argent et de filtrage du marché dans le volume I pour finalement faire évoluer le volume I vers le volume II. Je vais vous faire part d'une partie de mes réflexions sur l'accomplissement des deux tâches de MM (money management) et MF (market filtration). MM : Comme vous le savez, le volume I utilise un seul ordre et ferme partiellement son ordre lorsque les moyennes mobiles se croisent. L'objectif de MM est d'augmenter la taille du lot au fur et à mesure que le solde du compte augmente (exemple : le solde du compte augmente de 1 000 $, le bloc de code ajustera la taille actuelle du lot pour la doubler. Ce bloc de code réduira également la taille du lot à la moitié de la taille actuelle du lot si le solde du compte perd 1 000 $. C'est l'objectif actuel du MM. Pour ce qui est de MF, j'examine attentivement toutes les options avant d'ouvrir cette porte à mon territoire de codage inexpérimenté. Je peux penser à de multiples façons d'accomplir cette tâche. La question qui se pose à moi est la suivante : quelle option dois-je choisir ? J'ai commencé à coder des versions du volume II avec la fonction MF pour me familiariser avec des techniques nouvelles et différentes. La répétition des essais et des erreurs me guidera vers l'achèvement de ce projet. Assurez-vous d'exécuter la période 1999-2012.10 sur le cadre temporel M15 EURUSD pour vérifier le plus récent back test posté du volume I (il est également considéré comme faisant partie du volume II). En passant, je suis époustouflé par le fait que le volume I ait été téléchargé 10 000 fois en l'espace de deux mois environ ! WOW ! :) Je suis si heureux que mon travail se soit avéré précieux pour les codeurs/traders. Je vous remercie. - WhooDoo22.
 
Comment sélectionner un ticket avec un nombre de 0 sur un compte Live ou Demo ? Que se passe-t-il si l'un de vos appels OrderSelect() échoue ? Pourquoi ne vérifiez-vous pas les valeurs de retour et ne signalez-vous pas les erreurs ?

Que sont les valeurs de retour des fonctions ? Comment les utiliser ?
 
Bonjour Simon, je comprends qu'il y a actuellement des problèmes mineurs moins prioritaires que MM et MF pour le moment. J'ai l'intention de remanier le volume II après avoir ajouté MM et MF. Je l'améliorerai en ajoutant un code pour sélectionner les ordres par numéro magique, un code pour exécuter le volume II sur des courtiers à 4-5 chiffres, etc. Je comprends qu'il y a beaucoup de petits détails à surveiller, mais pour l'instant, le travail le plus difficile sera entrepris en premier. Je comprends qu'il y a beaucoup de petits détails à surveiller, mais pour l'instant, le travail le plus difficile sera entrepris en premier. Je vais visiter le lien que vous avez fourni. Je vous remercie.
 
WhooDoo22:
Bonjour Simon, je comprends qu'il y a des problèmes mineurs moins prioritaires que MM et MF pour le moment. J'ai l'intention d'améliorer le volume II après avoir ajouté MM et MF. Je l'améliorerai en ajoutant un code pour sélectionner les ordres par numéro magique, un code pour exécuter le volume II sur des courtiers à 4-5 chiffres, etc. Je comprends qu'il y a beaucoup de petits détails à surveiller, mais pour l'instant, le travail le plus difficile sera entrepris en premier. Je comprends qu'il y a beaucoup de petits détails à surveiller, mais pour l'instant, le travail le plus difficile sera entrepris en premier. Je vais visiter le lien que vous avez fourni. Je vous remercie.
Si j'avais pensé que ce que j'avais écrit dans ce lien était un détail, une option ou quelque chose à ajouter plus tard si le temps le permettait, je n'aurais pas pris le temps de l'écrire... c'est essentiel IMO ! Combien de messages y a-t-il qui demandent l'erreur 130 ? ou l'erreur 138? Si vous avez un problème, imprimez l'erreur et toutes les variables pertinentes... Ainsi, lorsque vous aurez un problème, vous disposerez des informations nécessaires pour en déterminer la cause.

Vous ne pouvez pas remonter dans le temps pour trouver quelle était la demande lorsque vous avez essayé de passer un ordre et qu'il a échoué.... .
 

Qu'est-ce qui est variable et comment peut-il s'agir d'un numéro de ticket quand on lui fait ça ?

i++;

J'ai 4 trades en direct en ce moment, leurs numéros de tickets ne sont pas séquentiels....

 

Simon,

Si je pensais ce que j'avais écrit...

RE : Je comprends que cette correction est une nécessité. Je vais corriger cela, je crois plus tôt que je ne le pensais parce que vous semblez très inflexible sur l'application de cette correction. Je suis d'accord pour que ce correctif soit appliqué et je vais faire des tests avec la fonction de vérification des erreurs pour isoler la source de l'erreur. Je reviendrai sur cette question, Simon. Merci.

Qu'est-ce que la variable i...

RE : La variable i est une variable fictive de ticket, mais ;) i n'est pas réellement un ticket ; i est considéré comme une simple variable par l'EA. L'EA compte la variable i au lieu de compter le numéro du ticket réel (méthode alternative de comptage du ticket actuel).

Comment cela peut-il être un numéro de ticket quand on lui fait ça ?

RE : La variable i n'est pas réellement un numéro de ticket. i est une variable de ticket fictive qui est comptée par l'EA pour suivre le nombre actuel de tickets. En résumé, la variable i n'est pas considérée comme un numéro de ticket.


J'ai souhaité répondre à vos messages dès que possible, mais je ne peux pas fournir de réponses détaillées tant que je n'ai pas le temps d'expliquer et de discuter.

Merci pour votre post important !

 
WhooDoo22:

Simon,

Je souhaitais répondre à vos messages dès que possible, mais je ne peux pas fournir de réponses détaillées tant que je n'ai pas le temps d'expliquer et de discuter.

Merci pour votre important message !

Tu peux répondre quand tu auras le temps, c'est bon :-)

Sii est un numéro de ticket factice... quel est l'intérêt de faire cela ?

OrderClose( i,  0.01,Ask,30,CLR_NONE); 

N'est-ce pas une garantie d'échec ?

 
Je crois qu'il existe plusieurs façons de sélectionner des ordres. Toutes les méthodes de sélection des ordres devraient utiliser la fonction OrderSelect(). Cela dit, je ne vois pas pourquoi cela échouerait car l'EA exécute clairement la fonction OrderClose() pour tous les ordres sans erreur dans le testeur de stratégie. Il est possible que des erreurs se présentent, mais je n'en ai pas remarqué jusqu'à présent. Je vais être plus précis en déclarant ceci : "La variable i" est un substitut du numéro de ticket ET la variable i est utilisée par les blocs de la fonction OrderClose(). Cela fait un certain temps maintenant, mais je crois que la raison pour laquelle j'ai écrit le code tel qu'il est, c'est que je commence le programme dans le premier bloc de code OrderSend() SI le OrdersHistoryTotal() == 0. J'avais besoin de sélectionner un ticket et non la variable i pour que la fonction OrdersHistoryTotal() reconnaisse le ticket que je sélectionnais afin qu'elle puisse "donner le feu vert" pour envoyer un ordre. Il m'est difficile d'exprimer clairement cela en mots. Merci.
 
WhooDoo22:
Je crois qu'il existe plusieurs façons de sélectionner des ordres. Toutes les méthodes de sélection des ordres devraient utiliser la fonction OrderSelect(). Cela dit, je ne vois pas pourquoi cela échouerait car l'EA exécute clairement la fonction OrderClose() pour tous les ordres sans erreur dans le testeur de stratégie.
Comment se comporte-t-il sur un compte de démonstration où vous avez des numéros de tickets qui ne commencent pas à 1 et augmentent par paliers ?
 
Je ne connais pas les différences entre démo et live, si ce n'est le concept de fonds virtuels et réels pour les comptes. Je ne suis pas au courant de cette différence. Actuellement, je crois que OrdersHistoryTotal() commence à 0 avant qu'un ordre soit soumis ET terminé. Je crois que la fonction OrderClose() ne serait pas exécutée sauf si ;) il y avait une variable à sélectionner. C'est là que la variable i est présentée dans le premier bloc de code dans l'exécution en dessous de "i++". Une fois que la variable i est égale à 1, c'est-à-dire i++, la fonction OrderClose() vérifie le 1. La fonction OrderClose() fait comme suit : "Oui, je vois i, nous sommes prêts à fermer cet ordre maintenant. Merci.
 
WhooDoo22:
Je ne connais pas les différences entre démo et live, si ce n'est le concept de fonds virtuels et réels pour les comptes.
OK, je parle de la différence entre le Strategy Tester et Demo/Live... dans le ST le premier ordre est le ticket 1... Je viens de placer une transaction Demo et le numéro de mon ticket est 46322730... si je place une 2ème transaction le numéro de ticket ne sera pas46322731 Dans cette situation comment incrémente-t-on la variable que vous utilisez pour le numéro de ticket ?