MT5 et la vitesse en action - page 70

 
Veuillez ajouter la fonctionnalité requise.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Nouvelle version de MetaTrader 5 build 2650 : Chargement des graphiques en arrière-plan et améliorations dans le profileur de code MQL5

fxsaber, 2020.11.04 16:50

Malheureusement, ils n'ont pas ajouté de fonctions permettant de réduire les fenêtres des graphiques, du terminal, de Market Watch, etc. Il a été prouvé précédemment que minimiser ces fenêtres réduit la charge du CPU.

Et arrêter l'affichage des données dans la fenêtre Market Watch et autres, lorsque la fenêtre Terminal n'est pas visible. Par exemple, lorsque l'application actuelle (par exemple, le navigateur) est active et maximisée.


Le besoin de la barbe est de déterminer quel graphique est actuellement sélectionné. Les gens sont obligés d'utiliser des solutions WinAPI croustillantes.

Активный график (ID активного графика)
Активный график (ID активного графика)
  • 2014.10.20
  • www.mql5.com
Доброго времени суток! Нужно элементарно определить ID активного графика (того что выбран в данный момент...
 

Oui, MetaTrader VPS a des ordres de grandeur moins de latence (émissions de latence) et plusieurs fois plus de ressources que les VPS ordinaires des fournisseurs d'hébergement.

La raison en a été expliquée à plusieurs reprises.

La garantie d'une latence nulle dans les fils d'exécution ne peut exister dans les architectures de processeurs actuelles (toutes). Les histoires de" systèmes d'exploitation en temps réel" restent des mythes, il n'est pas nécessaire de les mentionner.

 
fxsaber:

Je vois ce qui se passe avec les éjections simples, merci pour les explications détaillées. À ce stade, cependant, nous ne discutons pas de SymbolInfoTick, mais de décalages d'une nature différente, qui se précipitent sur presque chaque tick.

Il s'agit uniquement de vos mesures d'émissions uniques - elles ne sont plus acceptées ou prises en compte. Votre analyse entière a été construite uniquement sur les émissions.

Les autres questions ne peuvent être prises en compte que si le scénario est clairement et complètement décrit dans un seul commentaire, sans que l'on puisse dire "en fait, il s'agit d'autres commentaires" et sans que l'on puisse parler de comptage à commande unique.

 
Renat Fatkhullin:

D'autres questions ne peuvent être prises en compte que si le scénario est clairement et complètement décrit dans un seul commentaire, sans que l'on dise "en fait d'autres commentaires" et sans que l'on se lance dans le comptage à commande unique.

Vous trouverez ici les détails, y compris les commentaires dans le code source.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

MT5 et la vitesse en action

fxsaber, 2020.11.05 07:42

Qui utilise le VPS de MQ, veuillez partager les résultats des programmes suivants.

  1. Conseiller expert qui attrape les décalages OnTick/OnBook.
  2. Conseiller expert qui attrape les tics avec le temps.
  3. Unscript qui mesure le temps d'exécution moyen de Sleep(1).
 

Il existe une plateforme appelée deltix (sans vouloir en faire la publicité). Lorsque j'ai parlé aux développeurs (je voulais le connecter pour l'arbitrage il y a quelque temps), ils m'ont expliqué la même chose à propos des retards uniques, que c'était normal et qu'il fallait regarder la moyenne...

Ceci est d'ailleurs, sans aucune pierre dans la brèche de quiconque

 

Étant donné que des valeurs aberrantes uniques se produisent inévitablement, il est logique d'avoir des fonctions régulières qui renvoient un tableau de l'ensemble du Market Watch et un tableau de toutes les positions/ordres actuels. Similaire à MarketBookGet.

Pour l'instant, les cycles doivent être exécutés. C'est TRES cher.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

MT5 et la vitesse en action

fxsaber, 2020.10.07 12:41

La nécessité pratique vous pousse à l'écrire de cette façon.

// Возвращает время Обзора рынка в миллисекундах.
long TimeCurrentMsc()
{
  long Res = 0;
  
  MqlTick Tick;
  
  for (int i = SymbolsTotal(true); i >= 0; i--) 
  {
    const string Symb = SymbolName(i, true);
    
    if (SymbolInfoTick(Symb, Tick) && (Tick.time_msc > Res))
      Res = Tick.time_msc;
  }

  return(Res);
}

Je ne sais pas pourquoi j'ai essayé d'entrer l'EA dans MQL5, malgré les demandes répétées de le faire.

 
Slava:

Il n'y aura pas d'accélération. Présentez vos calculs, au moins en chiffres bruts, en prouvant l'accélération multiple.

Une course aux ressources ? Création incontrôlée de nouveaux flux ? Des conflits pour rien ?

Voulez-vous des ralentissements inexpliqués ?

Dans le modèle basé sur les événements, tous les événements se sont toujours déroulés en formation, un par un. Chewed up - mâché.

Pas d'accélération du traitement des événements, dans une architecture asynchrone ? Vous êtes sérieux ?
Traitement accéléré des programmes utilisateurs, notamment de leurs gestionnaires. C'est de ça que je parle.

Je comprends que vous essayez de minimiser l'utilisation des fils. Mais l'une des alternatives consiste à exécuter chaque gestionnaire dans un thread séparé.
Pas de création incontrôlée de fils de discussion. Dans un programme utilisateur, il n'y a que quelques handlers, chacun d'entre eux doit être lancé dans son propre thread au début du programme.
Et vous synchronisez les événements entre les gestionnaires avec des mutex ou autre.

Mais si les fils sont un problème pour vous, comme vous l'avez mentionné, il existe un modèle d'événement qui vous permet de travailler dans un seul fil.Traitement des événements, dans une boucle d'événements avec une tâche en cours d'exécution.
La boucle d'événements, bien qu'elle s'exécute séquentiellement, mais les tâches dans cette boucle sont traitées en parallèle !
C'est ce que je veux dire, tous les gestionnaires du programme s'exécutent dans cette boucle d'événements, alors tous les événements seront asynchrones et arriveront simultanément en temps réel.
Autrement dit, les mêmes événements dans OnTrade etOnBookseront appariés.
Veuillez demander comment fonctionne une boucle d'événement dans d'autres langues.
Si la boucle d'événement existe déjà dans le terminal, il suffit de l'appliquer aux gestionnaires dans les programmes. C'est tout.
 
Roman:
Chaque gestionnaire doit être exécuté dans un thread séparé.

Le problème n'est en aucun cas résolu. Les programmes MQL deviendront beaucoup plus compliqués si différents threads ont accès en lecture/écriture aux variables internes, par exemple.

 
fxsaber:

Le problème n'est en aucun cas résolu. Les programmes MQL deviendront plus compliqués d'un ordre de grandeur, si l'accès en lecture/écriture aux variables internes à partir de différents threads, par exemple.

Les programmes MQL ne deviendront pas plus compliqués, c'est juste un casse-tête de synchronisation pour les développeurs. Qu'ils ne sont pas prêts à résoudre, bien sûr.
Ou une architecture initiale du projet bloquée et non conçue pour ce modèle.
Et personne ne réécrira le projet pour un nouveau modèle, bien sûr.
Le modèle de boucle d'événement est mieux adapté aux gestionnaires. C'est ce que j'essayais de dire.
Et ce modèle existe très probablement déjà dans le terminal depuis un certain temps, il n'a simplement pas été appliqué aux manipulateurs.

 
Roman:

Les programmes MQL ne seront pas plus compliqués...

Je suggère que c'est la fin de la théorisation, qui ne se croisera jamais avec la pratique ici.

Raison: