Discussion de l'article "Création d’Expert Advisors Multiples sur la base de Modèles de Trading" - page 5

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
MetaTrader 5 Client Terminal build 381
...
MQL5 : Mise à jour de la bibliothèque standard: les méthodes Type() des classes CDealInfo, CHistoryOrderInfo, COrderInfo et CPositionInfo ont été renommées respectivement en DealType(), OrderType() et PositionType().
...
Étant donné que le modèle repose sur les classes commerciales de base, toute modification, même mineure, de leurs interfaces est critique. Dans ce cas, l'erreur peut être facilement corrigée en remplaçant simplement la méthode Type() par la méthode OrderType() correspondante dans le fichier TableOrders.mqh.
Dans un avenir proche, les codes joints à l'article seront mis à jour pour fonctionner correctement sur les dernières versions du compilateur et du terminal.
chr1sch4n: Il n'y a pas d'erreur... le code que vous avez réécrit est identique.
En langage C, les instructions case tombent, c'est pourquoi vous devez insérer l'instruction break, de sorte que Buy devrait passer à l'instruction suivante tout en continuant à exécuter l'ordre.
Référence : http://en.wikipedia.org/wiki/Switch_statement ; section C, C++, Java, PHP, ActionScript, JavaScript ; "c'est un exemple classique d'omission de la ligne de rupture pour permettre la chute".
Merci beaucoup.
Une demande - vos commentaires dans les fichiers anglais peuvent-ils être traduits ?
Je ne parviens pas à obtenir le backtest impressionnant présenté dans l'article. quels sont les paramètres que je dois utiliser ?
"Il convient de décrire la variablem_timing séparément. Au cours du travail du conseiller expert, il est nécessaire d'appeler certains événements à certains intervalles de temps. La fonctionOnTimer()n'est pas appropriée pour cela, parce que différents modèles peuvent avoir des intervalles de temps différents.
Par exemple, certains événements doivent être appelés à chaque nouvelle barre. Pour un modèle de trading sur un graphique horaire, ces événements doivent être appelés toutes les heures, pour un modèle de trading sur un graphique journalier - à chaque nouvelle barre journalière. Il est clair que ces modèles ont des paramètres temporels différents et que chacun doit être stocké dans son propre modèle en conséquence. La structure t_period incluse dans la classe CModel permet de stocker ces paramètres séparément, chacun dans son propre modèle.
Voici à quoi ressemble cette structure :
struct t_period { большая структура };
Comme vous pouvez le constater, elle comprend l'énumération habituelle des périodes. Pour savoir si une nouvelle barre s'est produite, nous devons comparer l'heure de la dernière barre avec l'heure enregistrée dans la structure t_period. Si l'heure ne correspond pas, alors une nouvelle barre s'est produite, l'heure dans la structure doit être mise à jour à l'heure de la barre actuelle et renvoyer un résultat positif (vrai). Si l'heure de la dernière barre et la structure coïncident, cela signifie qu'une nouvelle barre ne s'est pas encore produite et qu'il suffit de renvoyer un résultat négatif (faux).
Voici une fonction qui fonctionne selon l'algorithme décrit :
"
Je ne suis bien sûr qu'un programmeur débutant, mais peut-être est-il possible de déterminer le début d'une nouvelle barre pour ce faire (en faisant en sorte que la variable m_timing ne soit qu'une datetime) :
Si je me trompe dans mes conclusions, je m'en excuse d'avance et vous demande de me corriger. Si je ne me trompe pas - je remercie ce site et en particulier tous ceux qui y travaillent - articles, documentation écrites - j'ai commencé à comprendre quelque chose.
P.S. : Au fait, merci pour cet excellent article.
Bonjour,
Comment puis-je améliorer le modèle ou la fonction Processing() pour prendre en charge le trading de paires (un autre symbole) ? Pour l'instant, tout fonctionne avec l'indicateur et le trading ultérieur sur le même symbole uniquement. Comment puis-je ajouter Symbol1 et Symbol2 pour pouvoir acheter Symbol1 et vendre Symbol2 simultanément ?
Merci pour votre aide.
P.S. : Ou acheter/vendre le symbole 1 en fonction du comportement de l'indicateur sur le symbole 2...
Bonjour,
Comment puis-je améliorer le modèle ou la fonction Processing() pour prendre en charge le trading de paires (un autre symbole) ? Pour l'instant, tout fonctionne avec l'indicateur et le trading ultérieur sur le même symbole uniquement. Comment puis-je ajouter Symbol1 et Symbol2 pour pouvoir acheter Symbol1 et vendre Symbol2 simultanément ?
Merci pour votre aide.
P.S. : Ou acheter/vendre Symbol1 en fonction du comportement de l'indicateur sur Symbol2...
Corrigé. Nous vous remercions.
Bonjour,
Merci pour cet excellent article...
Dans la fonction ReplacedDelayedOrders se trouve la ligne de code : for(int b=0;i<history_orders;b++)
Je pense que cela va provoquer une boucle sans fin, ou est-ce que je me trompe ?
Je pense que la ligne de code doit être : for(int b=0;b<history_orders;b++)
Au revoir, T.