Algorithmes, méthodes de résolution, comparaison de leurs performances - page 21

 

Si l'on en croit le profileur, sur le même TC, OrderSend (cinquième partie) prend 88% du temps.

Si je le transfère sur une machine virtuelle, il ne prend que 2%.

Je ne comprends pas pourquoi il y a une telle différence.

 
fxsaber:

Si l'on en croit le profileur, OrderSend (à cinq) prend 88% de mon temps sur le même TC.

Si je le transfère sur une machine virtuelle, il ne prend que 2%.

Pourquoi une telle différence, je ne comprends pas.

Je ne peux que deviner.

OrderSend envoie un message au site MQL, tandis que la machine virtuelle ne touche pas àOrderSend et travaille donc plus rapidement ;)))

Dans les dernières versions, le terminal lui-même est surchargé pendant l'optimisation et les tests, sauf pour les agents testeurs.

Il n'y a pas de telle chose dans les constructions précédentes !

 
Sergey Chalyshev:

Je ne peux que spéculer.

OrderSend - envoie un message au site MQL, et le virtuel ne touche pas à OrderSend et travaille donc plus rapidement )))).

Dans les dernières versions, lors de l'optimisation et des tests, sauf pour les agents testeurs, le terminal lui-même est surchargé.

Cette tâche n'existe pas dans les versions précédentes !

J'ai lancé le profileur sur des données historiques. Par conséquent, l'envoi quelque part est exclu.

 
Dans les nouvelles constructions, chargez-vous le terminal lui-même pendant les tests et l'optimisation ? Dans le gestionnaire de tâches, combien de temps cela prend-il ?
 
fxsaber:

Si l'on en croit le profileur, OrderSend (à cinq) prend 88% de mon temps sur le même TC.

Si je le transfère sur une machine virtuelle, il ne prend que 2%.

Je ne comprends pas pourquoi il y a une telle différence.

88% de quoi ? Si c'est à partir de 2%, alors c'est bien.

 
fxsaber:

Si l'on en croit le profileur, OrderSend (à cinq) prend 88% de mon temps sur le même TC.

Si je le transfère sur une machine virtuelle, il ne prend que 2%.

Je ne comprends pas pourquoi il y a une telle différence.

Vérifier la marge et les autres conditions de négociation.

Si vous mettez à niveau le testeur Virtual vers MT5, ce sera presque la même chose.

 
Eh bien, oui, eh bien, oui.
 
Andrey Khatimlianskii:

Vérifier les marges et autres conditions commerciales.

Si vous faites passer Virtual au statut de testeur MT5, c'est à peu près la même chose.

Mode Pips. Le plus probable, c'est que le profiler ment.

 
Andrey Khatimlianskii:

Si vous faites évoluer Virtual vers un testeur MT5, c'est presque pareil.

Selon les chiffres, la différence est de plus de deux ordres de grandeur.

 
Andrei Trukhanovich:

Si l'on en croit les chiffres, la différence est de plus de deux ordres de grandeur.

J'ai cité les chiffres de ma grande EA, que je cours dans l'Optimiseur. Mais il semble avoir commencé à comprendre où se trouvent les freins. Voici un conseiller expert simple.

#include <MT4Orders.mqh>

//#define VIRTUAL_TESTER // Запуск в виртуальном торговом окружении
//#include <fxsaber\Virtual\Virtual.mqh>

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

input int Offset = 10000;
input int inFakeRange = 0;

void OnTick()
{
  static bool FirstRun = true;
  static int Sign = 1;
  
  if (FirstRun)
    FirstRun = (OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - Offset * _Point, 0, 0, 0) == -1);
  else if (OrderSelect(0, SELECT_BY_POS))  
  {
    OrderModify(OrderTicket(), OrderOpenPrice() + Sign * _Point, 0, 0, 0);
    
    Sign = -Sign;
  }    
}

Il est presque impossible d'attendre son profilage sur les ticks - cela prend trop de temps. C'est pourquoi je l'ai lancé en mode Optimiseur.

optimization finished, total passes 11
optimization done in 0 minutes 55 seconds
shortest pass 0:00:04.300, longest pass 0:00:06.442, average pass 0:00:05.058


Si je décommente les deux lignes mises en évidence et que je définis le paramètre d'entrée Virtual = true, cela devient ainsi.

optimization finished, total passes 11
optimization done in 0 minutes 07 seconds
shortest pass 0:00:00.355, longest pass 0:00:01.208, average pass 0:00:00.590


La différence est d'un ordre de grandeur. Le profileur montre une différence encore plus grande. Je fais tout uniquement par pips et par ticks réels.

Raison: