Bibliothèque: MT4Orders QuickReport - page 3

 
Forester #:

Quel navigateur ? Combien de transactions ? J'en ai 100 000 et il me faut environ 10 secondes pour réfléchir, mais cela se voit.

Chrome. 40K lignes. A partir du deuxième clic, le graphique apparaît parfois. C'est la formation Turnover-graphics qui charge le plus le CPU.

 
Варианты улучшения:
  • Vous pouvez essayer de télécharger le rapport dans un fichier binaire et de le lire dans le navigateur, ce qui peut fonctionner avec un grand nombre de lignes. Mais nous devrons alors sélectionner manuellement le fichier binaire en raison de restrictions de sécurité. En d'autres termes, nous ne pourrons pas ouvrir automatiquement le rapport immédiatement après le test.
Ici, l'ouverture se fait par l'intermédiaire d'un fichier. L'ouverture automatique ne pose aucun problème.

.
  • Je pense que vous pouvez non seulement télécharger des transactions via MT4Orders, mais aussi à partir d'un code MQL5 normal.

Ce sera difficile.

MQL5 Ордера истории - Извлечь цену открытия и закрытия каждой транзакции в истории сделок
MQL5 Ордера истории - Извлечь цену открытия и закрытия каждой транзакции в истории сделок
  • 2023.11.20
  • www.mql5.com
Каждая позиция имеет уникальный идентификатор, который присваивается всем сделкам. Идентификатор позиции - это уникальное число, которое присваивается каждой вновь открытой позиции и не изменяется в течение всей ее жизни. Идентификатор позиции указывается в каждом ордере , которая ее открыла
 
fxsaber #:

Chrome. 40K lignes. A partir du deuxième clic, le graphique apparaît parfois. C'est la formation Turnover-graphics qui charge le plus l'unité centrale.

Essayez Mozilla. Il s'affiche et augmente jusqu'à 100 000. J'ai essayé 700 000 - il s'affiche, mais il ne peut plus zoomer, il consomme toute la mémoire.

.
fxsaber #:
Ici, cela se fait par l'intermédiaire d'un fichier. Il n'y a pas de problème d'ouverture automatique.

Cela va prendre quelques jours. Je le reporterai si 5 millions ne suffisent pas. Pas d'intérêt pour l'instant.

fxsaber #:
Ça va être dur.

Également dans le tiroir. Ajouter une ligne

#include <MT4Orders.mqh>
plus facile)
 
Forester #:

si 5 millions ne suffisent pas.

Pourquoi travailler avec de telles déclarations html ?

 
Par ailleurs, la bibliothèque est à 90 % multiplateforme - elle fonctionne sur MT4 et MT5. Il y a un peu de travail à faire pour qu'elle fonctionne aussi sur MT4.
 
Cette bibliothèque n'a pas besoin d'être modifiée pour obtenir le relevé html des comptes bloqués du service Signals.
 
fxsaber #:
Par ailleurs, la bibliothèque est à 90% multiplateforme - elle fonctionne sur MT4 et MT5. Il reste un peu de travail pour la faire fonctionner sur MT4.
Si quelqu'un le finalise, je mettrai à jour le code pour le rendre disponible pour tout le monde.

.
fxsaber #:
Ici, cela se fait par l'intermédiaire d'un fichier. Il n'y a pas de problème d'ouverture automatique.

Vous créez un fichier texte JavaScript, qui est appelé à partir de la page HTML (d'ailleurs, vous ne pouvez pas l'enregistrer dans un fichier séparé, mais l'ajouter au code de la page, comme dans ma version).
J'ai décrit une variante consistant à enregistrer les données non pas dans un fichier texte, mais dans un fichier binaire. Ce fichier ne peut pas être chargé automatiquement en tant que fichier JavaScript, car il ne s'agit pas de code JS ; vous devrez sélectionner ce fichier sur le disque pour commencer à le lire. Peut-être sera-t-il alors possible de lire plus de 5,6 millions de lignes.

fxsaber #:

Pourquoi travailler avec des statistiques html comme celles-ci ?

Pour l'instant, ce n'est pas nécessaire. Mais si le besoin s'en fait sentir, il existe un plan pour le faire.

fxsaber #:

Je n'avais pas réalisé. Malheureusement, google.charts est très lent et peu pratique par rapport à highcharts.

J'ai changé pour highchart. Il s'est avéré meilleur : google.charts s'est figé à 700 000 transactions, tandis que highchart les a affichées sans freins particuliers et a permis de zoomer sur des transactions individuelles.

Vous pouvez choisir Ordinal - pas uniforme (comme dans les rapports des testeurs de MetaQuotes), ou Logarithmic - échelle logarithmique (cela peut être utile si vous avez une croissance exponentielle de votre solde). Après avoir modifié ces éléments, vous devez cliquer à nouveau sur le graphique souhaité pour appliquer l'option sélectionnée.
 
Forester #:
Si quelqu'un le finalise, je mettrai le code à jour pour qu'il soit accessible à tous.
#ifndef __MQL5__

#property strict

long OrderOpenTimeMsc( void ) { return(OrderOpenTime() * 1000); }
long OrderCloseTimeMsc( void ) { return(OrderCloseTime() * 1000); }

double OrderOpenPriceRequest( void ) {return(OrderOpenPrice()); }
double OrderClosePriceRequest( void ) {return(OrderClosePrice()); }

enum ENUM_ACCOUNT_MARGIN_MODE
{
  ACCOUNT_MARGIN_MODE_RETAIL_NETTING,
  ACCOUNT_MARGIN_MODE_EXCHANGE,
  ACCOUNT_MARGIN_MODE_RETAIL_HEDGING  
};

#define SYMBOL_CUSTOM (-1)

#define ACCOUNT_MARGIN_MODE (-1)
#define ACCOUNT_CURRENCY_DIGITS (-2)

long AccountInfoInteger2( const int Property )
{
  switch (Property)
  {
    case ACCOUNT_MARGIN_MODE:
      return(ACCOUNT_MARGIN_MODE_RETAIL_HEDGING);
    case ACCOUNT_CURRENCY_DIGITS:
      return(2);      
  }
  
  return(AccountInfoInteger(Property));
}

#define AccountInfoInteger AccountInfoInteger2

// string BASEPATH_ = (::TerminalInfoString(TERMINAL_DATA_PATH) + "\MQL4\Files\\\\") ;

#endif // #ifndef __MQL5__

#define  REPORT_BROWSER            // Ouvrir automatiquement le rapport dans le navigateur. Nécessite une DLL.
#include <MT4Orders_QuickReport.mqh> // https://www.mql5.com/fr/code/47816

void OnStart()
{  
  QuickReport("QuickReport", true);
}
 
Forester #:

J'ai changé pour highchart. Il s'est avéré meilleur : google.charts s'est bloqué à 700 000 transactions, tandis que highchart les a affichées sans freins particuliers et a permis de zoomer sur des transactions individuelles.

C'est génial !

Vous pouvez choisir Ordinal - pas uniforme (comme dans les rapports des testeurs de MetaQuotes), ou Logarithmique - échelle logarithmique (cela peut être utile si vous avez une croissance exponentielle de votre solde). Après avoir modifié ces éléments, vous devez cliquer à nouveau sur le graphique souhaité pour appliquer l'option sélectionnée.

Utile.


La chronologie semble être interrompue.

 
fxsaber #:
Merci pour le code. Je l'ai ajouté à \MT4Orders_QuickReport.mqh
.
fxsaber #:
La chronologie semble être cassée.


Seul le rapport du testeur MQ l'avait. Le rapport virtuel ne l'avait pas.
J'ai mis toutes les opérations, y compris les opérations de limite, dans le tableau pour les graphiques. Elles ne modifient pas l'équilibre, donc elles n'interfèrent pas beaucoup.

Il s'est avéré que le testeur MQ transfère les ordres à cours limité supprimés vers l'archive avec un certain retard :

Ordre

99 1005 2023.05.29 00:03:59.281 2023.05.29 00:03:59.331

est entré dans l'histoire 2 ticks plus tard. Aurait dû être après 00:03:59.331, tick 00:03:59.380 manqué, déplacé dans l'histoire à 00:03:59.430 tick.
Ordre

123 1005 2023.05.29 00:03:59.331 2023.05.29 00:03:59.380
est entré dans l'archive 1 tick plus tard. Il y a d'autres exemples dans la capture d'écran ci-dessus.
.


L'heure de clôture est correcte, mais apparemment ils ont des limites dans un tableau séparé et le transfert vers l'historique n'est pas traité à chaque tick.

Dans votre testeur virtuel, tout est clair : (le tableau est partagé et est envoyé à l'historique sur son propre tick)

J'ai supprimé la sortie des limites sur les graphiques, maintenant ces barres avec un temps erroné ne sont plus là.