Le marché a toujours tort

 
Une suite du thème "Arbitrage". Il y a déjà beaucoup de pages, et les critiques ont mis le bazar, donc un nouveau sujet.

J'ai réussi à réunir des fonds propres sur le solde. Cela ressemble à ceci (EURJPY H1) :





Le code source de l'EA est joint au message. Le rapport du testeur l'est aussi.

Pour cela, j'ai dû ajouter un paramètre d'entrée supplémentaire au code : beginEquity - fonds propres initiaux. C'est-à-dire le solde initial. Dans le testeur de stratégie, le conseiller expert vérifie automatiquement si le niveau de beginEquity est dépassé. Et s'il est dépassé, le jeu recommence, c'est-à-dire qu'il change beginPrice en Bid, beginEquity en equity actuel et change le nombre magique (augmente de 1).

Mais sur Demo et Real, le Conseiller Expert générera seulement une alerte demandant de changer ces paramètres manuellement. Le problème est que l'Expert Advisor ne sauvegarde les paramètres précédents nulle part à l'arrêt du terminal ou de l'ordinateur, et il ne pourra pas les restaurer après le redémarrage (ceux qui en ont vraiment besoin peuvent créer une base de données de fichiers ou stocker les paramètres dans des variables globales).
Par conséquent, nous devrons surveiller les signaux des Expert Advisors et s'ils commencent à afficher des messages, nous devrons modifier manuellement les paramètres d'entrée ci-dessus pour l'ensemble du groupe.
Dossiers :
 
Je suis ici, critique, et je vous trouve ici aussi, Yuri. Maintenant, je vais chier ici aussi. Une analyse superficielle du rapport montre que du 20 août 2004 au 4 mai 2007 à 22h00, pour un dépôt initial de 200 000, 72 252 profits ont été réalisés, et à 22h00, toutes les positions restantes ont été fermées, ce qui a permis de réaliser environ 528 000 profits en une seule fois (7 fois plus que dans toute l'histoire du test !). Cet effet est probablement dû à la fin de la période de test.
 
Mathemat:
Je suis ici, critique, et je vous trouve ici aussi, Yuri. Maintenant, je vais chier ici aussi. Une analyse superficielle du rapport montre que du 20 août 2004 au 4 mai 2007 à 22h00, avec un dépôt initial de 200 000, on a réalisé un profit de 72 252, et à 22h00, toutes les positions restantes ont été fermées, ce qui a permis de réaliser un profit de 528 000 d'un seul coup (7 fois plus que dans toute l'histoire du test !). Cet effet est probablement simplement dû à la fin de la période de test.
Le moment de l'achèvement du test est visible sur le graphique de droite sous la forme d'une barre verte strictement horizontale (équité) et d'une forte "croissance" non linéaire du solde sous cette barre très horizontale. En d'autres termes, le testeur ferme toutes les positions et le solde "croît" jusqu'à ce qu'il soit égal à l'équité. De toute évidence, il y avait de nombreuses positions ouvertes avec un profit positif à ce moment-là. Sinon, les fonds propres ne peuvent pas dépasser le solde.

Le Testeur ferme tous les postes ouverts à la fin de la période de test. Si l'équité n'est pas égale au solde à ce moment-là, le solde sera égal à la dernière valeur de l'équité après la fermeture de toutes les positions. Il ne faut donc pas appeler ce comportement du testeur un "effet", car il s'agit du principe de fonctionnement.
 
Bonjour !
Voici la fête de votre grand-mère ! Je plaisante.
Comme l'a dit Mathemat, "par analyse de surface", très bien ! Pas une seule valeur négative. Je vais le mettre à l'épreuve en ligne. Mais voici ce que je ne comprends pas (peut-être ai-je mal compris) : je n'éteins pas mon joueur et ne ferme pas le terminal. L'alerte s'affichera-t-elle dans ces conditions ou l'EA se comportera-t-il comme il se doit ? Que se passera-t-il si je suis déconnecté de l'internet pendant un certain temps, puis reconnecté ? Sans aucune déconnexion de ma part ?
Pour moi, la question est très importante car je suis absent de l'ordinateur pendant au moins 18 heures par jour (sommeil, travail, etc.) et si pendant ce temps la déconnexion se produit, ou si je ne peux pas entrer de nouvelles données. ..... eh bien, pas vraiment bien.
Par ailleurs, si j'ai bien compris : si vous allumez la came ou le terminal, il suffit d'entrer les valeurs actuelles et tout se passera comme il se doit, c'est-à-dire en reconnectant l'EA ?
De même, si l'alerte est affichée, mais que nous ne faisons rien, l'EA continue-t-il à trader selon les anciens paramètres ou attend-il que les nouveaux soient saisis ?
Si possible, je voudrais expliquer ces points plus en détail !!!!.
Merci pour une autre raison de me creuser un peu les méninges ! (dans le bon sens du terme).
Sincèrement ! !!!
 
Je ne sais pas pourquoi, mais en mode Testeur, le conseiller expert ouvre les transactions par lots d'une dizaine, est-ce une coïncidence ou non ?
Je ne sais pas pourquoi, mais en mode Testeur, le Conseiller expert ouvre les transactions par paquets d'une dizaine de pièces. Si vous prenez 5 minutes à partir du début 3000, l'EuroUSD, du 02.01.2007 à ce jour, ouvre dix positions qui sont fermées pour une raison quelconque, non pas à la fin de la période, mais quelque part le 12.02.2007 un solide naufrage, et ce naufrage est essentiellement ces dix premiers ordres ouverts. Et cette image ne se répète pas seulement aux petits moments. Même si nous augmentons le dépôt jusqu'à 50.000, il est également perdant. Changez la période de temps, à 1 heure, il est également perdant. Quelque chose ne va pas ici !
Le premier est le plus beau jusqu'à présent. Peut-être ai-je fait quelque chose de mal ?
Sincèrement !
 
Bonjour !

J'ai une petite question : j'ai téléchargé le conseiller expert, mais il génère une erreur à la compilation :
MODE_MARGINREQUIRED' - variable non définie C:\Program Files\PFG FX Trader\experts\ArbitrageReverse_1. 5.mq4 (244, 49)
À quoi sert la variable MODE_MARGINREQUIRED et comment la définir ?

 
Implex:
Bonjour !

J'ai une petite question : j'ai téléchargé le conseiller expert, mais il génère une erreur à la compilation :
MODE_MARGINREQUIRED' - variable non définie C:\Program Files\PFG FX Trader\experts\ArbitrageReverse_1. 5.mq4 (244, 49)
À quoi sert la variable MODE_MARGINREQUIRED et comment la définir ?


Mettez votre terminal à la dernière version 204 en téléchargeant la distribution à partir de : http://www.metatrader4.com/files/mt4setup.exe
 

Bien que je n'aie pas terminé le test de l'ancienne EA comme prévu, j'ai réfléchi à la manière d'améliorer cette version. Et puis Yuri en a trouvé une nouvelle. Ce n'est plus le "cinquième élément", mais le "sixième". Comment puis-je travailler ici ? Mes mains tremblent.

Mais sérieusement, j'ai une question sur le code. C'est peut-être naïf, donc je ne m'adresse pas seulement à Yury. Peut-être que quelqu'un d'autre le clarifiera. Je leur en serai reconnaissant.

Dans ArbitrageReverse_1.1.mq4, et dans la nouvelle version d'ArbitrageReverse_1.5.mq4, la même structure est répétée, ce qui n'est pas clair pour moi : Il s'agit d'un appel de la fonction utilisateur closeby(ticksell, tickbuy) après un arrondissement en bloc des ordres actuellement ouverts. Pour ArbitrageReverse_1.1.mq4 c'est la ligne [106], pour 1.5 c'est la ligne [128]. La fonction est logique - s'il y a des ordres de VENTE et d'ACHAT ouverts (un symbole chacun), la VENTE sera fermée par l'ACHAT. Ce que je n'aime pas, c'est qu'il n'y a aucune condition préalable à la réalisation de cette opération. Mais plus loin dans le code, déjà dans le bloc 'dt' l'appel de la fonction closeby(ticksell, tickbuy) (pour v:1.1 ligne [163], pour v:1.5 [189]) est encadré dans les conditions. Et cela me semble plus correct. En principe, je verrai bientôt moi-même ce qui se passe, ayant retracé toutes les affectations aux variables, pendant que je travaille sur mes bugs mineurs. Mais maintenant je vais demander à Yuri directement :
L'appel closeby est-il nécessaire dans la ligne [106] v:1.1 ou [128] v:1.5 et, si c'est le cas, qu'est-ce qui sera "fermé" dans [163] pour v:1.1 ou dans [189] pour v:1.5 s'il s'avère que tout ce qui peut être fermé doit l'être avant cela ? Je comprends qu'il puisse y avoir une différence dans les volumes des lots, mais tout de même, quelque chose ici me semble "off".

L'appel closeby(tickbuy, ticksell) dans [200] pour v:1.1 ou dans [224] pour v:1.5 est plus ou moins clair - si un ordre ouvert SELL ou BUY est défini dans les ordres ouverts, et dans le bloc "dt", selon les conditions, un ordre opposé peut être ouvert par la fonction OrderSend - alors la fermeture sera exécutée respectivement.

Bref, si j'ai posé une question stupide, je m'en excuse. Signalez l'erreur et je la corrigerai.

Sincèrement, Fed.

 
J'ai déjà posté un EA sur CodeBase qui, en adhérant aux tactiques d'arbitrage, gagne également sur les swaps positifs. Après la vérification du modérateur, le code sera disponible ICI.
 
Bonjour !
J'ai essayé de comprendre - la logique de cette modification dépend du beginPrice , beginEquity qui doit être changé manuellement. Je pense que les seuls résultats sur l'euroyenne étaient les mêmes et les autres étaient des drains nets lorsque le test a été fermé ... et l'équité n'est pas souvent plus élevé que le solde. Merci
 
Fed:

Bien que je n'aie pas terminé le test de l'ancienne EA comme prévu, j'ai réfléchi à la manière d'améliorer cette version. Et puis Yuri en a trouvé une nouvelle. Ce n'est plus le "cinquième élément", mais le "sixième". Comment puis-je travailler ici ? Mes mains tremblent.

Mais sérieusement, j'ai une question sur le code. C'est peut-être naïf, donc je ne m'adresse pas seulement à Yury. Peut-être que quelqu'un d'autre le clarifiera. Je leur en serai reconnaissant.

Dans ArbitrageReverse_1.1.mq4, et dans la nouvelle version d'ArbitrageReverse_1.5.mq4, la même structure est répétée, ce qui n'est pas clair pour moi : Il s'agit d'un appel de la fonction utilisateur closeby(ticksell, tickbuy) après un arrondissement en bloc des ordres actuellement ouverts. Pour ArbitrageReverse_1.1.mq4 c'est la ligne [106], pour 1.5 c'est la ligne [128]. La fonction est logique - s'il y a des ordres de VENTE et d'ACHAT ouverts (un symbole chacun), la VENTE sera fermée par l'ACHAT. Ce que je n'aime pas, c'est qu'il n'y a aucune condition préalable à la réalisation de cette opération. Mais plus loin dans le code, déjà dans le bloc 'dt' l'appel de la fonction closeby(ticksell, tickbuy) (pour v:1.1 ligne [163], pour v:1.5 [189]) est encadré dans les conditions. Et cela me semble plus correct. En principe, je verrai bientôt moi-même ce qui se passe, ayant retracé toutes les affectations aux variables, pendant que je travaille sur mes bugs mineurs. Mais maintenant je vais demander à Yuri directement :
L'appel closeby est-il nécessaire dans la ligne [106] v:1.1 ou [128] v:1.5 et, si c'est le cas, qu'est-ce qui sera "fermé" dans [163] pour v:1.1 ou dans [189] pour v:1.5 s'il s'avère que tout ce qui peut être fermé doit l'être avant cela ? Je comprends qu'il puisse y avoir une différence dans les volumes des lots, mais tout de même, quelque chose ici me semble "off".

L'appel closeby(tickbuy, ticksell) dans [200] pour v:1.1 ou dans [224] pour v:1.5 est plus ou moins clair - si un ordre ouvert SELL ou BUY est défini dans les ordres ouverts, et dans le bloc "dt", selon les conditions, un ordre opposé peut être ouvert par la fonction OrderSend - alors la fermeture sera exécutée respectivement.

Bref, si j'ai posé une question stupide, je m'en excuse. Signalez l'erreur et je la corrigerai.

Sincèrement, Fed.

Si en mode démo et réel la fermeture des positions du compteur était aussi parfaite que dans les tests, il serait sûrement suffisant de laisser un seul appel à closeby() avant le dernier return(0) dans l'événement de départ. Par conséquent, en mode test, quelle que soit la traçabilité, il n'y aura pas de fermeture dans les appels supplémentaires.

Mais en mode démo et dans la vie réelle, il arrive souvent que les positions fermées ne soient pas fermées au compteur pour une raison quelconque (par exemple, il n'y a pas de connexion avec le serveur pendant un court moment), et nous avons donc dû fournir des appels supplémentaires à closeby().
Raison: