MT5 et la vitesse en action - page 24

 
Artyom Trishkin:

Très probablement après la prochaine version (actuellement en version bêta).

Merci
 
Artyom Trishkin:

Très probablement après la prochaine version (actuellement en version bêta).

N'y aura-t-il pas une multitude d'offres ?

 

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.08.13 04:36

  1. Allez sur le compte de démonstration MetaQuotes-Demo avec un historique de transactions relativement long.
    1. Si votre compte de démonstration a peu d'historique de trading, alors autorisez l'auto-trading et exécutez en parallèle le script OrderSend-Test2.ex5 (dans la pièce jointe, le code source).

Cet ancien script montre de nombreux freins si vous l'exécutez sur un graphique MQ-Demo et ajoutez plus de symboles commerciaux à Market Watch (j'en avais 100).

Journal du terminal.

2020.09.04 17:51:33.112 Trades  '34510052': cancel order #702851395 buy stop 0.01 EURCAD at 1.55852
2020.09.04 17:51:33.512 Trades  '34510052': accepted cancel order #702851395 buy stop 0.01 EURCAD at 1.55852
2020.09.04 17:51:33.514 Trades  '34510052': cancel #702851395 buy stop 0.01 EURCAD at market done in 401.845 ms

La suppression de la transaction en cours a eu lieu en 401ms. Les développeurs ont accès aux journaux du serveur de négociation et peuvent voir combien de temps l'exécution y a duré. Par exemple.

Chacun peut le reproduire sur son site.


Juste au cas où, voici à quoi ressemble un ordre de transaction avec des résultats.

2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Alert: EURCAD 702851395 Request executed 401.915 + 0.003 (0) ms.
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.action = TRADE_ACTION_REMOVE (8)
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.magic = 0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.order = 702851395
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.symbol = EURCAD
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.volume = 0.0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.price = 0.0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.stoplimit = 0.0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.sl = 0.0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.tp = 0.0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.deviation = 0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.type = ORDER_TYPE_BUY (0)
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.type_filling = ORDER_FILLING_FOK (0)
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.type_time = ORDER_TIME_GTC (0)
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.expiration = 1970.01.01 00:00:00
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.comment = 
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.position = 0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.position_by = 0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Result.retcode = 10009
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Result.deal = 0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Result.order = 702851395
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Result.volume = 0.0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Result.price = 0.0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Result.bid = 0.0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Result.ask = 0.0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Result.comment = Request executed 401.915 + 0.003 (0) ms.
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Result.request_id = 6133
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Result.retcode_external = 0


Ping.

2020.09.04 17:51:57.567 AccountInfoString(ACCOUNT_SERVER) = MetaQuotes-Demo
2020.09.04 17:51:57.567 TerminalInfoInteger(TERMINAL_PING_LAST) = 74808


Le script a fonctionné pendant environ 10 minutes.


Je ne me soucie pas de ces ralentissements. Je veux juste savoir où et ce que je peux ajuster pour améliorer la situation. Est-ce le Terminal ou le serveur de trading ? En général, les développeurs ont toutes les possibilités de reproduire et, si on le souhaite, de comprendre.

Особенности исполнения торговых приказов MT5
Особенности исполнения торговых приказов MT5
  • 2020.02.06
  • www.mql5.com
Анализировал с владельцем MT5-сервера тормоза торговых приказов. Запускался OrderSend-Test2.mq5 в том же месте, где MT5-сервер стоит. Т.е. нулевой пинг. Демо, все внутри. Изучались логи MT5-сервера (2170) и MT5-клиента (2280). Логи сервера не буду приводить, просто словами опишу. Думаю, результаты буду интерсны всем, т.к. это поможет раскрыть...
 
fxsaber:

Cet ancien script montrera de nombreux freins si vous l'exécutez sur un seul graphique MQ-Demo et si vous ajoutez plus de symboles commerciaux à Market Watch (j'en avais 100).

Je me souviens de cette affaire

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

Nouvelle version de la plateforme MetaTrader 5 build 1880 : Calcul de l'historique complet des instruments synthétiques

A100, 2018.07.25 21:55

La charge doit être prise en compte dans tous les cas :

J'ai un ordinateur lent... et j'en ai une très lente... Alors... Si j'ajoute 63 symboles à Market Watch sur un ordinateur super lent et que j'appuie sur F10 après cela, MetaTrader se bloque complètement (un redémarrage est nécessaire)... alors que dans tous les autres modes, il fonctionne bien

J'ai essayé d'utiliser F10 mais cela n'a pas bougé pendant au moins un an - bien qu'il s'agisse d'une version 32 bits.

 
A100:

Je me souviens d'un cas comme celui-ci

Le nombre de caractères dans la Revue des marchés n'est pas déterminant pour jouer les freins. C'est juste la façon dont je l'ai fait dans le mien.

C'est facile à reproduire.
2020.09.04 18:25:06.131 Trades  '34510052': buy limit 0.01 USDPLN at 3.77653
2020.09.04 18:25:06.202 Trades  '34510052': accepted buy limit 0.01 USDPLN at 3.77653
2020.09.04 18:25:06.202 Trades  '34510052': order #702911224 buy limit 0.01 / 0.01 USDPLN at 3.77653 done in 70.966 ms
2020.09.04 18:25:06.202 Trades  '34510052': cancel order #702911224 buy limit 0.01 USDPLN at 3.77653
2020.09.04 18:25:06.274 Trades  '34510052': accepted cancel order #702911224 buy limit 0.01 USDPLN at 3.77653
2020.09.04 18:25:06.274 Trades  '34510052': cancel #702911224 buy limit 0.01 USDPLN at market done in 71.859 ms
2020.09.04 18:25:06.274 Trades  '34510052': buy stop 0.01 USDPLN at 3.79653
2020.09.04 18:25:06.481 Trades  '34510052': instant sell 0.1 NZDSGD at 0.91421, close #702903930 buy 0.1 NZDSGD 0.91462
2020.09.04 18:25:06.982 Trades  '34510052': accepted buy stop 0.01 USDPLN at 3.79653
2020.09.04 18:25:07.030 Trades  '34510052': order #702911229 buy stop 0.01 / 0.01 USDPLN at 3.79653 done in 755.302 ms
2020.09.04 18:25:07.030 Trades  '34510052': accepted instant sell 0.1 NZDSGD at 0.91421, close #702903930 buy 0.1 NZDSGD 0.91462
2020.09.04 18:25:07.030 Trades  '34510052': deal #681898561 sell 0.1 NZDSGD at 0.91421 done (based on order #702911234)
2020.09.04 18:25:07.031 Trades  '34510052': cancel order #702911229 buy stop 0.01 USDPLN at 3.79653
2020.09.04 18:25:07.031 Trades  '34510052': order #702911234 sell 0.1 / 0.1 NZDSGD at 0.91421 done in 550.273 ms
2020.09.04 18:25:07.103 Trades  '34510052': accepted cancel order #702911229 buy stop 0.01 USDPLN at 3.79653
2020.09.04 18:25:07.103 Trades  '34510052': cancel #702911229 buy stop 0.01 USDPLN at market done in 72.558 ms
2020.09.04 18:25:07.103 Trades  '34510052': instant buy 0.01 USDHUF at 297.871 (deviation: 100)
2020.09.04 18:25:07.130 Trades  '34510052': instant sell 0.01 GBPCAD at 1.73255, close #702904086 buy 0.01 GBPCAD 1.73271
2020.09.04 18:25:07.174 Trades  '34510052': accepted instant buy 0.01 USDHUF at 297.871 (deviation: 100)
2020.09.04 18:25:07.174 Trades  '34510052': deal #681898572 buy 0.01 USDHUF at 297.871 done (based on order #702911246)
2020.09.04 18:25:07.175 Trades  '34510052': order #702911246 buy 0.01 / 0.01 USDHUF at 297.871 done in 72.051 ms
Il n'y a que 1ms entre les deux heures locales rouges, qui devraient en fait être de 550ms (OrderSend consécutif). Apparemment, les clichés d'impression ont un effet ici aussi.
 
Renat Fatkhullin:

Pour le bien de votre position, un autodafé serait-il envisageable ?

// Демонстрация тормозов HistorySelect.
#include <fxsaber\Benchmark.mqh> // https://c.mql5.com/3/321/Benchmark.mqh

input int inAlertTime = 1; // Нижний порог в миллисекундах

#define _B2(A) _B(A, inAlertTime)

const bool Init = EventSetTimer(1);

void OnTimer()
{
  static MqlTradeRequest Request = {0};
  static MqlTradeResult Result = {0};

  if (Request.tp) // Если позиция выставлена - меняем тейк.
  {
    static bool Flag = false;

    Request.action = TRADE_ACTION_SLTP;
    Request.tp += (1 - ((Flag = !Flag) << 1)) * _Point;
        
    if (Result.order)
      Request.position = Result.order;
  }
  else // Иначе выставляем позицию.
  {
    Request.action = TRADE_ACTION_DEAL;
    Request.symbol = _Symbol;
    Request.volume = 0.1;
    Request.price = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
    Request.tp = Request.price + 1000 * _Point;         
  }

  if (OrderSend(Request, Result))
    _B2(HistorySelect(0, INT_MAX)); // В каком месте самострел?
}


Résultat sur b2592 MQ-Demo.

2020.09.04 23:30:32.661 Alert: Time[Test6.mq5 35: HistorySelect(0,INT_MAX)] = 5 ms.
2020.09.04 23:30:33.681 Alert: Time[Test6.mq5 35: HistorySelect(0,INT_MAX)] = 5 ms.
2020.09.04 23:30:34.655 Alert: Time[Test6.mq5 35: HistorySelect(0,INT_MAX)] = 5 ms.
2020.09.04 23:30:35.674 Alert: Time[Test6.mq5 35: HistorySelect(0,INT_MAX)] = 5 ms.
2020.09.04 23:30:36.657 Alert: Time[Test6.mq5 35: HistorySelect(0,INT_MAX)] = 5 ms.
2020.09.04 23:30:37.668 Alert: Time[Test6.mq5 35: HistorySelect(0,INT_MAX)] = 5 ms.
2020.09.04 23:30:38.661 Alert: Time[Test6.mq5 35: HistorySelect(0,INT_MAX)] = 5 ms.
2020.09.04 23:30:39.666 Alert: Time[Test6.mq5 35: HistorySelect(0,INT_MAX)] = 5 ms.

Il y a un décalage sur chaque appel.

 
Également au sujet des retards

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

Bugs, bugs, questions

A100, 2020.08.31 15:55

J'ai un très bon timeframe, surtout pour EURUSD, la croix se déplace très lentement en suivant le curseur, il suffit de déplacer le curseur en diagonale douce pour le reproduire. Il peut être utilisé dans d'autres périodes. Il n'y avait pas de tel délai avant

Et tous les tracés manuels (tendance, Fibonacci, etc.) sont également lents.

Tous les paramètres sont par défaut :

  • Serveur : MetaQuotes-Demo
  • Historique : disponible depuis le 01.01.1971
  • Délai précis : aucun
  • Nombre maximal de barres dans la fenêtre : 100000
  • Type de graphique : chandeliers
  • Réduction de l'échelle du graphique : Maximum

Symbole, période bars latence
EURUSD, Mounthly 597 aller à
EURUSD, Hebdomadaire
2590 Vérifiez
EURUSD, Quotidien

12797

pas de

Une sorte de dépendance inverse : moins il y a de barres, plus c'est lent.

Sur les graphiques mensuels et hebdomadaires, par exemple l'EURGBP (où il n'y a pas d'historique aussi profond), aucun retard.

 
A100:

Une sorte de relation inverse : plus les barres sont basses, plus le rythme est lent.

Il est plutôt direct - plus la TF est élevée, plus le délai est long.

Apparemment, cela est dû au calcul précis des coordonnées par le TF inférieur. Il y a eu un problème avec l'obtention des indices des barres incluses dans la barre hebdomadaire/mensuelle que nous recherchons.

ps : tout fonctionne pour moi, même nombre de barres

 
Andrey Khatimlianskii:

Plutôt comme une ligne droite - plus la TF est élevée, plus le retard est important.

Apparemment, en raison du calcul précis des coordonnées sur le TF inférieur. Quelque part, ils se sont trompés en incluant les indices des barres dans la barre hebdomadaire/mensuelle requise.

ps : tout fonctionne pour moi, même nombre de barres

Bien sûr, aucun EAs/indicateurs/scripts ne sont en cours d'exécution - uniquement une création manuelle. La latence indiquée est reproductible sur toute tablette moderne moyenne à 64 bits. Si vous avez un ordinateur i7, je suppose que vous n'avez pas rencontré ce retard.
 
A100:
Naturellement, aucun expert/indicateur/script n'est en cours d'exécution - uniquement des constructions manuelles. La latence indiquée est reproductible sur toute tablette moderne moyenne de 64 bits. Si vous avez un ordinateur i7, je suppose que vous n'avez pas rencontré ce retard.

J'aurais probablement dû préciser qu'une tablette était utilisée.

J'ai un i5

Raison: