Testeur MT4 VS Testeur MT5
Conseiller expert
// MQL4&5-code #include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006 #ifdef __MQL5__ #define Bid (SymbolInfoDouble(_Symbol, SYMBOL_BID)) #define Ask (SymbolInfoDouble(_Symbol, SYMBOL_ASK)) #endif // __MQL5__ // Idea - https://www.mql5.com/ru/code/7464 #property strict input int Shift = 3; input int Limit = 18; input double Lots = 0.1; int PriceToInteger( const double Price ) { return((int)(Price / _Point + 0.1)); } void OnTick() { static int PrevBid = PriceToInteger(Bid); static int PrevAsk = PriceToInteger(Ask); const int IntBid = PriceToInteger(Bid); const int IntAsk = PriceToInteger(Ask); const bool TradeTime = (TimeCurrent() % (24 * 60 * 60) < D'1970.01.01 23:50'); // exclude swaps if (TradeTime && (IntAsk - IntBid < Limit)) { if ((IntBid - PrevBid >= Shift)) OrderSend(_Symbol, OP_SELL, Lots, Bid, 0, 0, 0); if (PrevAsk - IntAsk >= Shift) OrderSend(_Symbol, OP_BUY, Lots, Ask, 0, 0, 0); } PrevBid = IntBid; PrevAsk = IntAsk; for (int i = OrdersTotal() - 1; i >= 0; i--) if (OrderSelect(i, SELECT_BY_POS) && ((!TradeTime) || (OrderProfit() > 0) || ((OrderType() == OP_BUY) && (PriceToInteger(OrderOpenPrice()) - IntBid >= Limit)) || ((OrderType() == OP_SELL) && (IntAsk - PriceToInteger(OrderOpenPrice()) >= Limit)))) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0); }
Les résultats
Rapport MT4
Symbole | EURUSD (Euro contre Dollar US) | ||||
Période | 1 Minute (M1) 2017.04.10 00:00 - 2017.04.14 20:58 (2017.04.10 - 2017.04.16) | ||||
Modèle | Tous les ticks (méthode la plus précise basée sur toutes les plus petites échéances disponibles) | ||||
Paramètres | Shift=3 ; Limit=18 ; Lots=0.1 ; | ||||
Les bars dans l'histoire | 7292 | Tiques modélisées | 1865515 | Qualité de la modélisation | 99.00% |
Erreurs de concordance des graphiques | 0 | ||||
Dépôt initial | 100000.00 | Écartement | Variable | ||
Bénéfice net | -10863.90 | Bénéfice total | 2528.70 | Perte totale | -13392.60 |
Rentabilité | 0.19 | Gain attendu | -0.49 | ||
Dégradation absolue | 10864.70 | Abaissement maximal | 10864.70 (10.86%) | Abattement relatif | 10.86% (10864.70) |
Total des transactions | 21954 | Positions courtes (% de gain) | 12016 (68.60%) | Positions longues (% de gain) | 9938 (67.03%) |
Transactions rentables (% de toutes) | 14904 (67.89%) | Transactions à perte (% de toutes) | 7050 (32.11%) | ||
Le plus grand | commerce profitable | 3.00 | transaction perdante | -4.40 | |
Moyenne | opération rentable | 0.17 | commerce perdant | -1.90 | |
Nombre maximal | gains continus (profit) | 155 (46.60) | Pertes continues (perte) | 115 (-210.10) | |
Max. | bénéfices continus (nombre de victoires) | 46.60 (155) | perte continue (nombre de pertes) | -210.10 (115) | |
Moyenne | gains continus | 5 | perte continue | 2 |
Rapport MT5
Rapport du testeur de stratégie | ||||||||||||
Alpari-MT5 (Build 1596) | ||||||||||||
Paramètres | ||||||||||||
Conseiller expert : | Lucky | |||||||||||
Symbole : | EURUSD | |||||||||||
Période : | M1 (2017.04.10 - 2017.04.16) | |||||||||||
Paramètres : | Décalage = 3 | |||||||||||
Limite=18 | ||||||||||||
Lots=0.1 | ||||||||||||
Courtier : | Alpari International Limited | |||||||||||
La monnaie : | USD | |||||||||||
Dépôt initial : | 100 000.00 | |||||||||||
Levier : | 1:100 | |||||||||||
Backtest | ||||||||||||
Qualité de l'histoire : | s/o | |||||||||||
Barres : | 7192 | Tiki : | 1865415 | Des personnages : | 1 | |||||||
Bénéfice net : | -10 863.90 | Prélèvement absolu sur le bilan : | 10 863.90 | Prélèvement absolu sur les fonds : | 10 864.70 | |||||||
Bénéfice total : | 2 528.70 | Prélèvement maximal sur le solde : | 10 863.90 (10.86%) | Retrait maximal des fonds : | 10 864.70 (10.86%) | |||||||
Perte totale : | -13 392.60 | Retrait relatif sur le bilan : | 10.86% (10 863.90) | Prélèvement relatif sur les fonds : | 10.86% (10 864.70) | |||||||
Rentabilité : | 0.19 | Le gain attendu : | -0.49 | Niveau de marge : | 863.58% | |||||||
Facteur de récupération : | -1.00 | Ratio de Sharpe : | -0.50 | Z-score : | -52.22 (99.74%) | |||||||
AHPR : | 1.0000 (-0.00%) | Corrélation LR : | -1.00 | Résultat du test : | 0 | |||||||
GHPR : | 1.0000 (-0.00%) | LR Erreur standard : | 149.82 | |||||||||
Total des échanges : | 21954 | Transactions courtes (% des gagnants) : | 12016 (68.60%) | Transactions longues (% de gains) : | 9938 (67.03%) | |||||||
Total des échanges : | 43908 | Transactions rentables (% de toutes les transactions) : | 14904 (67.89%) | Transactions à perte (% de toutes les transactions) | 7050 (32.11%) | |||||||
Le commerce le plus rentable | 3.00 | La plus grosse transaction perdante | -4.40 | |||||||||
Moyenne des transactions rentables : | 0.17 | Moyenne des transactions perdantes : | -1.90 | |||||||||
Nombre maximum de victoires consécutives (bénéfice) : | 155 (46.60) | Nombre maximal de pertes continues (perte) : | 115 (-210.10) | |||||||||
Bénéfices continus maximums (nombre de victoires) : | 46.60 (155) | Perte continue maximale (nombre de pertes) : | -210.10 (115) | |||||||||
Gains moyens continus : | 5 | Pertes moyennes en continu : | 2 |
Les résultats sont à la hauteur !
Performance
2017.05.08 01:45:42.765 EURUSD,M1: 1865415 tick events (7292 bars, 1865515 bar states) processed in 0:00:03.682 (total time 0:00:04.400)
MT5-log
2017.05.08 02:04:53.278 Core 1 EURUSD,M1: 1865415 ticks, 7192 bars generated. Test passed in 0:00:12.309 (including ticks preprocessing 0:00:00.203).
Le testeur MT4 a réussi à être 3 fois plus rapide que le testeur MT5. S'il y a un doute sur le fait que le blocage MT5 est dû à l'utilisation d'une bibliothèque tierce, ceux qui le souhaitent peuvent réécrire la logique MT4 simple de ce conseiller expert en MQL5 à leur manière et vérifier l'hypothèse.
HZ le testeur MT5 fonctionnait beaucoup plus lentement, jusqu'à ce que je nettoie tous les dossiers Bases à la main. Les résultats sont donnés dans cette optique.
Sur le serveur Alpari-MT5-Demo dans la nouvelle version (qui sera publiée dans une semaine) avec un accès rapide à l'historique des transactions, j'ai réussi :
EURUSD,M1: 1865417 ticks, 7192 bars generated. Test passed in 0:00:05.578.
MT5 a une surcharge système pour le transfert des données et de la tâche elle-même à un processus d'agent externe, ce qui, pour les petites tâches (secondes), introduit une erreur importante en comparaison.
Et la complexité et la qualité du testeur dans MT5 sont bien plus élevées : modélisation synchrone de nombreux instruments avec une précision de l'ordre de la milliseconde, glissements/retards réels pendant le défilement des changements de monde et un grand nombre de fonctions plus mineures. Ce n'est pas comme s'il y avait une boucle for.
Plus lent de plusieurs ordres de grandeur - n'êtes-vous pas confus avec l'initialisation/synchronisation et le téléchargement de toutes les données ? Tout est écrit dans les journaux. Les fichiers sur le disque ne doivent en aucun cas être touchés.
Je recommande de mettre le répertoire %userdata%\MetaQuotes (comme C:\Users\%username%\AppData\Roaming\MetaQuotes) dans le pass antivirus. C'est là que se trouvent les données et l'ajout de l'antivirus au passage améliore considérablement la vitesse d'accès aux données du terminal et du testeur.
Sinon, ils sont tellement excités lorsqu'ils voient metatester[64].exe s'exécuter, ouvrir un port réseau et beaucoup de gros fichiers de données, écrits par le terminal et le testeur. Le testeur de certains commerçants parvient même à tomber, car l'antivirus n'a pas le temps de vérifier le fichier metatester[64].exe, même en quelques secondes, et le terminal est incapable d'y accéder.
la complexité et la qualité du testeur dans MT5 sont d'un ordre de grandeur supérieur : modélisation synchrone de plusieurs instruments avec une précision de l'ordre de la milliseconde, glissements/retards honnêtes lors du défilement des changements de monde et un tas de fonctionnalités plus petites.
L'offre groupée MT4+TDS en dispose également. Plus quelques autres fonctionnalités qui manquent à MT5... Mais bien sûr, il n'y a pas de multidevise.
Plus lent de plusieurs ordres de grandeur.
Au début, je pensais que TDS ralentissait délibérément MT5, alors j'ai nettoyé sa mémoire. J'ai également nettoyé les dossiers Bases (je commençais à manquer d'espace disque). Après cela, MT5 a été deux ordres de grandeur plus rapide pour une seule exécution (les redémarrages n'ont pas aidé avant). L'hypothèse concernant les blocs TDS n'a pas pu être confirmée, mais j'ai essayé. Je n'ai pas eu d'anti-virus sur mon ordinateur.
Le serveur Alpari-MT5 est réel.
ZZY a fait tourner MT4-optimizer en exécution complète - 14 minutes. MT5 (il ne reste qu'un seul agent) - il semble que ce sera de nombreuses heures. Je publierai le total dans la matinée ou l'après-midi.
D'où viennent les feuillets ?
Vous avez quelque chose de complètement différent en tête. Jouez avec le champ Delay dans le testeur MT5 et vous verrez que c'est tout autre chose. Même le Sleep(2500) habituel dans le code MQL5, lorsqu'il est exécuté dans le testeur, donnera un retard dans le code lorsque le monde entier continue à simuler. Le champ du délai d'exécution montre effectivement comment les transactions seront exécutées si vous y placez votre ping de 100 ms vers le serveur.
Il ne peut pas y avoir un retard d'un ordre de grandeur. Et pourquoi y aurait-il des modules complémentaires pour MT5 alors qu'il fonctionne très bien tout seul.
À propos du dépassement - il n'y a pas de réglages ni de limites.À propos de l'absence d'antivirus - depuis longtemps, toutes les versions depuis la 7 ont un Windows Defender interne et discret, qui fait un bon travail d'analyse de tous les fichiers.
Parfois, il génère des décalages notables dans les opérations de fichiers, même sur les disques SSD.
À propos de l'absence d'antivirus - depuis longtemps, toutes les versions à partir de la 7 disposent d'un Windows Defender interne et discret, qui analyse tous les fichiers.
Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading
fxsaber, 2017.05.07 21:55
Serveur de trading Alpari-MT5
Pourquoi y a-t-il des ticks en double (l'offre et la demande sont égales) dans l'historique des ticks du FOREX ?
Le testeur fait la course aux EA sur les doublons et il y en a la moitié. Est-il nécessaire d'obtenir la baisse de performance appropriée de moitié ?
Vous ne comprenez toujours pas les dérapages dont je parle. Par principe, cela ne fonctionne pas dans MT4.
Pas en ticks, mais dans le processus du programme mcl5, quand il s'arrête et que les ticks continuent et que le monde tourne. Écrivez Sleep(3000) et le programme attendra 3 secondes et pendant ce temps, les ticks feront tic-tac, le marché sera simulé.
Si vous définissez le champ Délai d'exécution à 200 ms dans le testeur, une latence nette de 200 lors de l'exécution des transactions sera simulée, ce qui donnera soit un slippage du marché, soit des requotes.
Il s'agit d'un tout autre niveau puissant de modélisation des processus de marché, et ce dans un système multidevises. Et surtout, dans un processus aliéné à distance. Par exemple, un agent situé à 10 000 km reçoit soudainement une demande dynamique d'accès à des symboles manquants dans le code lorsqu'il effectue une tâche. Il est capable de demander ces données au maître, de les intégrer dans le monde du marché et de continuer à les faire tourner.
Tu ne comprends toujours pas les dérapages dont je parle. Par principe, cela ne fonctionne pas dans MT4.
Pas en ticks, mais dans le processus du programme mcl5, quand il s'arrête et que les ticks continuent et que le monde tourne. Écrivez Sleep(3000) et le programme attendra 3 secondes et pendant ce temps, les ticks feront tic-tac, le marché sera simulé.
Cela ne fonctionne pas maintenant dans MT4.
Si vous définissez le champ Délai d'exécution à 200 ms dans le testeur, il simulera une latence nette de 200 lors de l'exécution des transactions, ce qui donnera lieu à un slippage du marché ou à des requotes.
Cela fonctionne maintenant dans MT4.
Il s'agit d'un tout autre niveau de modélisation des processus de marché, dans un système multidevises. Et surtout, dans un processus aliéné à distance. Par exemple, un agent situé à 10 000 km reçoit soudainement une demande dynamique d'accès à des symboles manquants dans le code lorsqu'il effectue une tâche. Il est capable de demander ces données au maître, de les intégrer dans le monde du marché et de continuer à les faire tourner.

- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading
Discussion sur "Les EA prêtes à l'emploi de l'assistant MQL5 fonctionnent sur MetaTrader 4".
fxsaber, 2017.03.09 13:02
Je vous suggère d'essayer Tick Data Suite (Compatible : MT4 build 940 - 1052) pour comparer.
Dans le testeur MT5, sélectionnez le mode "par ticks réels". Enregistrez-les et envoyez-les au testeur MT4 via TDS.
Les cotations des deux testeurs coïncideront alors à 100%, ce qui permettra de les comparer non seulement en termes de transactions, mais aussi de vitesse.
Il serait alors possible de comparer la conversion/création d'EA dans les deux sens.
MT4 build 1072, MT5 build 1596 serveur de trading Alpari-MT5.
Paramètres du testeur MT4 sur la capture d'écran
La devise des deux testeurs est le dollar américain. Cela permet dans le même testeur MT5 pour EURUSD de ne pas tirer un autre tick de symbole de conversion.
Maintenant, nous exécutons le conseiller expert multiplateforme suivant dans les deux testeurs.
Journal du testeur MT4
Journal du testeur MT5
Nous confirmons que les fichiers reçus de chaque testeur sont identiques - les tics des testeurs coïncident.
A ce stade, la préparation des deux testeurs pour le nouveau service est prête.