Librerie: Rapporto rapido MT4Ordini - pagina 3

 
Forester #:

Quale browser? Quante transazioni? Io ne ho 100.000 e ci vogliono circa 10 secondi per pensare, ma si vede.

Chrome. 40K linee. Dal secondo clic a volte appare il grafico. La formazione grafica del fatturato carica maggiormente la CPU.

 
Варианты улучшения:
  • Si può provare a caricare il report in un file binario e a leggerlo nel browser, forse può funzionare con un numero elevato di righe. Ma poi dovremo selezionare manualmente il file binario a causa delle restrizioni di sicurezza. In altre parole, non sarà possibile aprire automaticamente il report subito dopo il test.
In questo caso, invece, è possibile aprirlo tramite un file. Non ci sono problemi con l'apertura automatica.

.
  • Penso che sia possibile caricare le operazioni non solo tramite MT4Orders, ma anche da un normale codice MQL5.

Sarà difficile.

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

Cromo. 40K linee. Dal secondo clic a volte appare il grafico. La formazione grafica del fatturato carica maggiormente la CPU.

Provare con Mozilla. Mostra e aumenta fino a 100 000. Ho provato a 700 000 - si vede, ma non può più zoomare, consuma tutta la memoria.

.
fxsaber #:
Qui viene fatto attraverso un file. Non ci sono problemi con l'apertura automatica.

Ci vorranno un paio di giorni. Lo rimanderò se 5 milioni non saranno sufficienti. Non è rilevante per ora.

fxsaber #:
Sarà dura.

Anche nel cassetto. Aggiungi una riga

#include <MT4Orders.mqh>
più facile)
 
Forester #:

se 5 milioni non sono sufficienti.

Perché lavorare con dichiarazioni html come questa?

 
A proposito, la libreria è al 90% multipiattaforma: funziona su MT4 e MT5. C'è un po' di lavoro da fare per farla funzionare anche su MT4.
 
Non è necessario modificare questa libreria per ottenere la dichiarazione html dei conti bloccati del servizio Segnali.
 
fxsaber #:
A proposito, la libreria è al 90% multipiattaforma: funziona su MT4 e MT5. C'è un po' di lavoro da fare per farla funzionare su MT4.
Se qualcuno lo metterà a punto, aggiornerò il codice per renderlo disponibile a tutti.

.
fxsaber #:
Qui si opera attraverso un file. Non ci sono problemi con l'apertura automatica.

Si crea un file di testo JavaScript, che viene richiamato dalla pagina HTML (a proposito, non è possibile salvarlo in un file separato, ma aggiungerlo al codice della pagina, come nella mia versione).
Ho descritto una variante di salvataggio dei dati non in un file di testo, ma in un file binario. Non può essere caricato automaticamente come file JavaScript, perché non si tratta di codice JS; è necessario selezionare questo file sul disco per iniziare a leggerlo. Forse allora sarà possibile leggere più di 5,6 milioni di righe.

fxsaber #:

Perché lavorare con statistiche html come queste?

Per ora non ce n'è bisogno. Ma se dovesse sorgere la necessità, c'è un piano su come farlo.

fxsaber #:

Non me ne ero accorto. Purtroppo questo google.charts è molto lento e scomodo rispetto ad highcharts.

Ho cambiato con highchart. Si è rivelato migliore: google.charts si è bloccato a 700.000 transazioni, mentre highchart le ha visualizzate senza freni speciali ed è stato in grado di ingrandire le singole transazioni.

È possibile scegliere Ordinal - passo uniforme (come nei report dei tester di MetaQuotes), o Logarithmic - scala logaritmica (può essere utile se si ha una crescita esponenziale del saldo). Dopo aver modificato questi elementi, è necessario fare nuovamente clic sul grafico desiderato per applicare l'opzione selezionata.
 
Forester #:
Se qualcuno lo finalizza, aggiornerò il codice per renderlo disponibile a tutti.
#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

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

#endif // #ifndef __MQL5__

#define  REPORT_BROWSER            // Aprire automaticamente il rapporto nel browser. Richiede una DLL.
#include <MT4Orders_QuickReport.mqh> // https://www.mql5.com/it/code/47816

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

Sono passato a highchart. Si è rivelato migliore: google.charts si è bloccato a 700.000 transazioni, mentre highchart le ha visualizzate senza freni speciali ed è stato in grado di ingrandire le singole transazioni.

È bello!

È possibile scegliere Ordinal - passo uniforme (come nei report dei tester di MetaQuotes), o Logarithmic - scala logaritmica (può essere utile se si ha una crescita esponenziale del saldo). Dopo aver modificato questi elementi, è necessario fare nuovamente clic sul grafico desiderato per applicare l'opzione selezionata.

Utile.


La cronologia sembra essere interrotta.

 
fxsaber #:
Grazie per il codice. L'ho aggiunto a \MT4Orders_QuickReport.mqh
.
fxsaber #:
La cronologia sembra essere interrotta.


Solo il rapporto del tester MQ aveva questo problema. Quello virtuale non ce l'aveva.
Ho inserito tutte le operazioni, comprese quelle di limite, nell'array per il grafico. Non cambiano l'equilibrio, quindi non interferiscono molto.

È risultato che il tester MQ trasferisce gli ordini limite cancellati nell'archivio con un certo ritardo:

Ordine

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

è entrato nella storia 2 tick dopo. Avrebbe dovuto essere dopo 00:03:59.331, tick 00:03:59.380 mancato, spostato nella storia al tick 00:03:59.430.
Ordine

123 1005 2023.05.29 00:03:59.331 2023.05.29 00:03:59.380
è entrato nell'archivio 1 tick dopo. Ci sono altri esempi nello screenshot qui sopra.
.


L'orario di chiusura è corretto, ma a quanto pare i limiti sono in un array separato e il trasferimento alla cronologia non viene elaborato a ogni tick.

Nel vostro tester virtuale, tutto è chiaro: (l'array è condiviso e viene inviato alla cronologia in base al proprio tick)

Ho rimosso l'output dei limiti sui grafici, ora queste barre con l'orario sbagliato non ci sono più.