Voir comment télécharger gratuitement des robots de trading
Retrouvez-nous sur Twitter !
Rejoignez notre page de fans
Un script intéressant ?
Poster un lien vers celui-ci -
laisser les autres l'évaluer
Vous avez aimé le script ? Essayez-le dans le terminal MetaTrader 5
Vues:
151
Note:
(6)
Publié:
MQL5 Freelance Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance

Version JavaScript rapide de la bibliothèque Report pour les commandes de trading de type MT4 implémentées via MT4Orders ou Virtual.

Fonctionne jusqu'à 10 fois plus vite que Report, la taille du fichier NTML est plus petite, peut télécharger et afficher jusqu'à 5,4 millions de lignes de rapport (capture d'écran ci-dessous).

Fonctionnalité : (identique à Report)

  • Affiche les transactions exécutées par MT4, MT5, leurs testeurs ou les testeurs virtuels.
  • Affiche les graphiques
  • Ouvre un fichier HTML avec le rapport dans un navigateur (nécessite l'autorisation d'utiliser la DLL et la commande #define REPORT_BROWSER).

Différences par rapport au rapport :

  • Dans le code latéral de MT5, toutes les données du rapport sont immédiatement envoyées au fichier sous forme de tableau, sans avoir à assembler les lignes avec le code HTML. Cela permet d'augmenter considérablement la vitesse et de réduire la taille du fichier.

  • Le calcul des statistiques, les graphiques et la génération du code HTML avec les lignes de transactions sont effectués du côté du navigateur dans le code JavaScript. Un paginateur est créé, qui affiche la page nécessaire.

  • Les graphiques affichent les transactions sur une échelle de temps plutôt que sur une échelle uniforme par numéro de transaction. Ainsi, nous pouvons voir qu'un conseiller expert a effectué 1000 transactions au cours de la semaine 1 et qu'il est resté inactif pendant 52 semaines.
    Voici un exemple illustratif avec 3386 transactions sur 5 ans :
    Nombre_vs_Temps
    Les mêmes transactions sont placées sur les deux graphiques.
    Le graphique supérieur est construit avec un pas uniforme entre les transactions (comme le montre maintenant le testeur de MetaQuotes). Il semble prometteur.
    Le graphique du bas est construit sur une échelle de temps et montre que l'Expert Advisor n'a négocié que quelques semaines en 5 ans. 1 pixel horizontal = 1 semaine.
    D'après le graphique du bas, il est immédiatement clair qu'il y aura 2 ans d'inactivité au début, puis l'Expert Advisor négociera pendant quelques semaines et ensuite 2,5 ans d'inactivité à nouveau. Ce type de négociation n'est pas aussi intéressant que l'impression donnée par le premier graphique.

  • Le graphique d'équilibre avec les options sans slippage, sans commission, sans commission et sans slippage a été remplacé par un graphique de profit (P/L) avec les mêmes options (sans opérations d'équilibre).

  • Ajout d'un graphique de solde séparé, qui montrera les opérations de solde dépôts/retraits. De cette façon, vous pouvez voir séparément le travail des opérations sur le graphique P/L et leurs montants avec les opérations de balance.

  • Si vous cliquez sur un graphique, une fenêtre interactive Google.charts s'ouvrira. Vous pouvez zoomer et voir les transactions en détail. 4 graphiques P/L avec 100 000 transactions ouvertes pendant ~10 secondes.

  • Le graphique du TurnOver est remplacé par un graphique avec le P/L pour les achats, les ventes et leur montant. De cette façon, vous pouvez comprendre si votre stratégie est haussière ou baissière. Vous pouvez décider de désactiver l'une des directions de trading si elle n'est pas rentable. Le graphique du cours de clôture de l'instrument est présenté en dessous. Il est pratique de suivre comment les achats font des bénéfices lorsque le taux augmente et les ventes des pertes, et vice versa lorsque le taux baisse. S'il y a plusieurs instruments, leurs prix seront affichés ensemble, il est préférable de sélectionner un seul des instruments par le filtre pour ne voir que son prix.

  • Ajout de graphiques de slippages et de slippages cumulés à l'ouverture, à la clôture et leur somme, l'idée a été prise ici https://www.mql5.com/ru/blogs/post/760817.

  • Un peu réarrangé les colonnes du rapport, mais il y a une case à cocher qui les réarrangera comme dans Report-e. Si vous êtes plus habitué.

  • Lorsque vous travaillez en virtuel, vous pouvez faire plusieurs appels à QuickReport et générer des rapports pour chaque testeur virtuel (s'il y en a plusieurs) et/ou réel de MT5.

Exemples d'utilisation :

  • simple avec MT4Orders
    #include <MT4Orders.mqh>
    #define REPORT_BROWSER            // Open report in browswer automatically. Require DLL.
    //#include <Report.mqh>
    #include <MT4Orders_QuickReport.mqh>//
    
    void OnInit(){}
    
    void OnTick(){ strategy (); }
    
    void OnDeinit(const int  reason ){
       QuickReport("report", true);
    }
    
    int TimeHour     ( datetime time ){return((int)((time / 3600) % 24));}/heure actuelle du jour. 3600 sec dans l'heure
    
    void strategy (){
      string Symb = _Symbol;
      MqlTick Tick;
      if (SymbolInfoTick(Symb, Tick)){    
        if(TimeHour(TimeCurrent())<23 && TimeHour(TimeCurrent())>0 ){return;} 
        OrderSend(Symb, OP_BUY,  10, Tick.ask, 0, Tick.bid, Tick.bid,  NULL, 1000);
        OrderSend(Symb, OP_SELL, 10, Tick.bid, 0, Tick.ask, Tick.ask,  NULL, 1000);
       }
    }
    
  • grand code de test

  • simple avec Virtual
    #include <MT4Orders.mqh>
    
    #include <fxsaber\Virtual\Virtual.mqh>
    #define REPORT_BROWSER            // Open report in browswer automatically. Require DLL.
    //#include <Report.mqh>
    #include <MT4Orders_QuickReport.mqh>
    
    double OnTester() { //or OnDeinit()
       for (int v = 0 ; v <= VIRTUAL::Total(); v++){if (VIRTUAL::SelectByIndex(v)){QuickReport("report_"+(string)v, true, v);}} //afficher le rapport de chaque testeur
       return(AccountInfoDouble(ACCOUNT_BALANCE)); 
    }
  • description des paramètres d'appel
    void QuickReport(string file_name, bool is_open_file_in_browser=true, int virtual_number=0, bool hide_account_and_name=false, bool common_path=false, bool fileANSI=true){...}
    file_name - nom du fichier pour l'enregistrement
    is_open_file_in_browser - ouvre automatiquement le fichier dans le navigateur lorsque le calcul est terminé (l'autorisation DLL est requise). Les fichiers ne seront pas automatiquement ouverts lors de l'optimisation, car il peut y en avoir plusieurs milliers.
    virtual_number - (pour travailler avec Virtual) numéro du testeur virtuel (-1 - sera déterminé automatiquement, 0 - testeur MT5, >0 - testeurs virtuels)
    hide_account_and_name - cacher le numéro et le nom du compte
    common_path - enregistrer dans le dossier commun des terminaux. Pour éviter que les fichiers ne soient écrasés par un autre agent pendant l'optimisation, le numéro de l'agent (3000, 3001,...) est ajouté aux noms des fichiers. En cas d'enregistrement dans le dossier du testeur (faux), ils sont enregistrés dans le dossier de l'agent qui a effectué les calculs.
    fileANSI - enregistrer en encodage ANSI ou en UNICODE. La taille des fichiers UNICODE est deux fois plus importante et leur traitement est plus long. Par conséquent, si vous téléchargez beaucoup de données, par exemple 1 Go, il est plus économique d'utiliser l'encodage ANSI. L'UNICODE est ajouté pour des raisons de compatibilité avec des services tiers si vous en avez besoin.


Exemple de rapport pour 5,4 millions de transactions :

("Virtuel" avec un rapport de plus de 100 000 lignes sur mon ordinateur consomme toute la mémoire et se bloque, c'est pour cette raison que j'ai fait une version JavaScript).

Exemple de rapport rapide

Ce rapport a été réalisé avec Firefox. Chrome se bloque, il a besoin de fichiers plus petits.

Plus de 5,4 millions de lignes peuvent être chargées dans un fichier, mais le navigateur Firefox ne peut pas en gérer davantage.

Lors du chargement de ce rapport, le navigateur a utilisé environ 6 Go de mémoire (traitement d'environ 1 minute), puis l'a libérée, après quoi le rapport est affiché sur la page : (Le rapport utilise 5-6 Go à partir de 80-100 000 lignes).

Utilisation de la mémoire


Graphique détaillé avec zoom.

En cliquant sur un graphique, vous ouvrirez un graphique interactif avec ce graphique, avec la possibilité de zoomer pour une visualisation détaillée.
Il existe deux options :

  1. Google.charts, gratuit, est l'option par défaut.
  2. Vous pouvez connecter Highcharts, qui est un produit commercial plus rapide et plus pratique, mais il ne peut être utilisé gratuitement que par les programmeurs pendant le développement ; lors de la publication d'un projet/produit, une licence doit être achetée et renouvelée chaque année. Pour en savoir plus, cliquez sur https://shop.highcharts.com/

Vous pouvez sélectionner Logarithmic - échelle logarithmique (peut être utile en cas de croissance exponentielle des soldes). Pour Highcharts, vous pouvez également sélectionner Ordinal - pas uniforme (comme dans les rapports des testeurs de MetaQuotes). Après avoir modifié ces éléments, vous devez cliquer à nouveau sur le graphique souhaité pour appliquer l'option sélectionnée.

Exemple de Google.chart: (zoom avec la molette de la souris).


Exemple de Highcharts: (changer l'échelle en sélectionnant la zone nécessaire avec la souris).


Ordres en attente MT5 exécutés

Pour les ordres apparus suite au déclenchement d'ordres en attente, le champ Type indique en bleu foncé le type d'ordre en attente (Buy limit, Sell limit, Buy stop ou Sell stop), le temps écoulé entre la mise en place et le déclenchement de l'ordre en secondes et le type d'ordre/position activé(e). Ces informations ne sont affichées que pour le terminal ou le testeur MT5. Les testeurs virtuels ou MT4 ne fournissent pas ces informations.



Graphiques des profits et des pertes par heure et par jour de la semaine.

Contrairement au testeur MQ, les profits et les pertes sont affichés non pas au moment où ils se produisent, mais à l'heure d'entrée dans une transaction. Il est ainsi plus facile de comprendre que les entrées à une certaine heure ne sont généralement pas rentables et qu'il suffit de désactiver cette heure pour les entrées.
En outre, des graphiques sur les achats et les ventes ont été créés.


Si vous cliquez sur l'un de ces graphiques, vous verrez des tableaux indiquant les montants exacts par heure et par jour. Des cases à cocher permettent également de désactiver les heures et les jours des entrées - les graphiques et les tableaux seront reconstruits et vous pourrez évaluer le résultat sans tests supplémentaires. Il s'agit d'un analogue de BestInterval de Fxsaber, mais plus grossier (avec un pas de 1 heure) et sans automatisation. L'intervalle M10 a été ajouté pour réduire le pas.

Certaines hausses de profits horaires ou journaliers sur ces graphiques peuvent être observées sur de petites périodes de test. Les graphiques ci-dessus montrent un test d'un mois avec une tendance à la hausse. L'achat est donc en bénéfice et la vente en perte. Si vous augmentez le test à un an ou plus, lorsque plusieurs grandes tendances dans les deux sens passeront, tout deviendra uniformément dispersé et généralement non rentable, de sorte qu'il est peu probable que vous puissiez désactiver quelque chose et obtenir un changement significatif dans le profit.
Voici ce qu'il est advenu de la même stratégie avec le test d'un an : (vous devriez presque tout désactiver).

Il est donc difficile d'en faire la base de votre stratégie.


Filtrage des ordres.

De nombreux filtres ont été ajoutés pour afficher les ordres en fonction de différents paramètres.


Buy, Sell, Buy limit, Sell limit, Buy stop, Sell stop, Balance - vous pouvez supprimer n'importe quel type d'ordre du rapport.
Symbols - affichera la liste complète des instruments utilisés, vous pouvez sélectionner uniquement ceux qui sont nécessaires.
Magic - vous pouvez afficher les ordres uniquement avec le Magic spécifié
Min Lot, Max Lot - vous pouvez sélectionner les ordres avec les lots requis
Negative Slippage - vous pouvez afficher les ordres avec un slippage négatif séparément pour les ordres d'ouverture ou de fermeture
Swap - affichera les ordres avec des swaps > 0
Min LengthTime - ordres dont la durée est supérieure à la durée spécifiée (spécifiée en nombre de jours, heures, minutes et secondes)
Max LengthTime - ordres dont la durée est inférieure à la durée spécifiée
Open Time - heure d'ouverture de l'ordre à partir et jusqu'aux dates spécifiées
Close Time - heure de clôture de l'ordre à partir et jusqu'aux dates spécifiées
TP, SL - ordres qui se sont terminés avec un déclenchement TP ou SL
Profits, pertes - ordres en profit ou en perte (les commissions et les swaps ne sont pas inclus, ils peuvent rendre le profit final négatif)
Rejects - ordres non exécutés.

Le bouton Réinitialiser vous permet de réinitialiser les filtres aux valeurs par défaut et d'afficher tous les ordres sans filtrage.


Options supplémentaires :



  1. Vous pouvez spécifier la date de début du test à terme, une fois qu'il est appliqué, les statistiques du graphique complet, du graphique avant la date spécifiée (BackTest) et du graphique après celle-ci (ForwardTest) seront calculées. Les graphiques afficheront une ligne verticale à cette date.
  2. Ancien ordre des colonnes - l'ordre des colonnes sera réorganisé comme dans la bibliothèque des rapports.

P.S. Plus il y a de commentaires sur les transactions, plus le nombre de lignes affichées est faible. Un rapport de 5,4 millions de lignes ne comportait aucun commentaire, à l'exception de "fin du test". Il est donc préférable de ne pas les mettre si le rapport comporte plus de 4 millions de transactions.

P.P.S. Fonctionne avec MT5 et MT4. Merci à fxsaber pour la modification pour MT4.

Options d'amélioration :

  • Vous pouvez essayer de décharger le rapport dans un fichier binaire et de le lire dans le navigateur, cela peut peut-être fonctionner avec un grand nombre de lignes (5,4 millions). 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.

Traduit du russe par MetaQuotes Ltd.
Code original : https://www.mql5.com/ru/code/47816

Filtre CCIDualOnMA iCHO Trend Filtre CCIDualOnMA iCHO Trend

Stratégie basée sur l'indicateur standard iCHO (Chaikin Oscillator, CHO) et l'indicateur personnalisé 'CCIDualOnMA'.

Panneau de suivi manuel des positions Panneau de suivi manuel des positions

Panneau basé sur la classe CDialog. Travail sur le symbole actuel. Suppression, réglage du Take Profit, réglage du Breakeven sur un groupe de positions.

Bibliothèque de base pour la création de profils de volumes Bibliothèque de base pour la création de profils de volumes

Bibliothèque de base pour créer des profils de volume sur le graphique.

Angle et vitesse Angle et vitesse

L'indicateur montre l'angle ou la vitesse moyenne de variation des prix.