Guarda come scaricare robot di trading gratuitamente
Ci trovi su Twitter!
Unisciti alla nostra fan page
Script interessante?
Pubblica il link!
lasciare che altri lo valutino
Ti è piaciuto lo script? Provalo nel Terminale MetaTrader 5
Visualizzazioni:
23
Valutazioni:
(6)
Pubblicato:
2025.04.04 10:54
Freelance MQL5 Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance

Versione veloce in JavaScript della libreria Report per i comandi di trading in stile MT4 implementati tramite MT4Orders o Virtual.

Funziona fino a 10 volte più velocemente di Report, la dimensione del file NTML è più piccola, può caricare e visualizzare fino a 5,4 milioni di righe di report (screenshot sotto).

Funzionalità: (la stessa di Report)

  • Mostra le operazioni eseguite da MT4, MT5, i loro tester o Virtual tester.
  • Mostra i grafici
  • Apre il file HTML con il report in un browser (richiede l'autorizzazione all'uso della DLL e il comando #define REPORT_BROWSER).

Differenze rispetto a Report:

  • Nel codice laterale di MT5, tutti i dati per il report vengono immediatamente inviati al file come array, senza assemblare le righe con il codice HTML. Ciò comporta un notevole aumento della velocità e una riduzione delle dimensioni del file.

  • Il calcolo delle statistiche, i grafici e la generazione del codice HTML con le righe delle operazioni vengono eseguiti sul lato browser in codice JavaScript. Viene creato un paginatore che mostra la pagina necessaria.

  • I grafici visualizzano le transazioni su una scala temporale piuttosto che su una scala uniforme per numero di transazioni. In questo modo, si può vedere che un Expert Advisor ha effettuato 1000 operazioni nella settimana 1 ed è rimasto inattivo per altre 52 settimane.
    Ecco un esempio illustrativo con 3386 operazioni per 5 anni:
    Numero_vs_Tempo
    Le stesse operazioni sono posizionate su entrambi i grafici.
    Il grafico superiore è costruito con un passo uniforme tra le operazioni (come mostra ora il tester MetaQuotes). Sembra promettente.
    Il grafico inferiore è costruito su una scala temporale e mostra che l'Expert Advisor ha negoziato solo poche settimane in 5 anni. 1 pixel in orizzontale = 1 settimana.
    Secondo il grafico inferiore, è subito chiaro che all'inizio ci saranno 2 anni di inattività, poi l'Expert Advisor farà trading per qualche settimana e poi di nuovo 2,5 anni di inattività. Questo tipo di trading non è così interessante come l'impressione del primo grafico.

  • Il grafico dell'equilibrio con le opzioni senza slippage, senza commissioni, senza commissioni e slippage è stato sostituito da un grafico del profitto (P/L) con le stesse opzioni (senza operazioni di equilibrio).

  • È stato aggiunto un grafico del saldo separato, che mostrerà le operazioni di saldo depositi/prelievi. In questo modo è possibile vedere separatamente il lavoro delle operazioni di trading sul grafico P/L e i loro importi con le operazioni di saldo.

  • Facendo clic su un grafico qualsiasi, si aprirà un grafico interattivo di Google.charts. In esso è possibile ingrandire e vedere le operazioni in dettaglio. 4 grafici P/L con 100.000 operazioni aperte per ~10 secondi.

  • Il grafico del TurnOver è sostituito da un grafico con il P/L degli acquisti e delle vendite e il loro importo. In questo modo è possibile capire se la strategia è rialzista o ribassista. Si può decidere di disattivare una delle direzioni di trading se non è redditizia. Il grafico del prezzo di chiusura dello strumento è mostrato sotto di esso: è comodo seguire come gli acquisti producano profitti quando il tasso sale e le vendite producano perdite, e viceversa quando il tasso scende. Se ci sono più strumenti, i loro prezzi saranno mostrati insieme; è meglio selezionare uno solo degli strumenti tramite un filtro per vedere solo il suo prezzo.

  • Sono stati aggiunti i grafici degli slippage e degli slippage cumulativi all'apertura, alla chiusura e la loro somma, l'idea è stata presa da qui https://www.mql5.com/ru/blogs/post/760817.

  • Ho riorganizzato un po' le colonne del report, ma c'è una casella di controllo che le riorganizza come in Report-e. Se siete più abituati.

  • Quando si lavora in Virtual, è possibile effettuare diverse chiamate a QuickReport e generare report per ogni virtual (se ce ne sono diversi) e/o per ogni tester MT5 reale.

Esempi di utilizzo:

  • semplice con MT4Orders
    #include <MT4Orders.mqh>
    #define REPORT_BROWSER            // Open report in browswer automatically. Require DLL.
    //#includere <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));}//ora corrente nel giorno. 3600 sec in ora
    
    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);
       }
    }
    
  • codice di test di grandi dimensioni

  • semplice con Virtual
    #include <MT4Orders.mqh>
    
    #include <fxsaber\Virtual\Virtual.mqh>
    #define REPORT_BROWSER            // Open report in browswer automatically. Require DLL.
    //#includere <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);}} //mostrare il rapporto per ogni tester
       return(AccountInfoDouble(ACCOUNT_BALANCE)); 
    }
  • descrizione dei parametri della chiamata
    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){...}
    nome_file - nome del file per la registrazione
    is_open_file_in_browser - apre automaticamente il file nel browser al termine del calcolo (è necessaria l'autorizzazione della DLL). I file non verranno aperti automaticamente durante l'ottimizzazione, poiché possono essere diverse migliaia.
    virtual_number - (per lavorare con Virtual) numero del tester virtuale (-1 - verrà determinato automaticamente, 0 - tester MT5, >0 - tester virtuali)
    hide_account_and_name - nascondere il numero e il nome del conto
    common_path - salvare nella cartella comune dei terminali. Per evitare che i file vengano sovrascritti da un altro agente durante l'ottimizzazione, ai nomi dei file viene aggiunto il numero dell'agente (3000, 3001,...). Quando si salva nella cartella del tester (falso), i file vengono salvati nella cartella dell'agente che ha eseguito i calcoli.
    fileANSI - salva in codifica ANSI o in UNICODE. Le dimensioni dei file UNICODE sono 2 volte maggiori e richiedono più tempo per l'elaborazione, quindi se si caricano molti dati, ad esempio 1 GB, è più economico usare ANSI. UNICODE viene aggiunto per la compatibilità con i servizi di terze parti, se necessario.


Esempio di report per 5,4 milioni di transazioni:

(Virtual con report di oltre 100 000 righe sul mio computer mangia tutta la memoria e si blocca, per questo motivo ho realizzato la versione JavaScript).

Esempio di rapporto rapido

Questo report è stato mostrato con Firefox. Chrome si blocca, ha bisogno di file più piccoli.

È possibile caricare più di 5,4 milioni di righe in un file, ma il browser Firefox non riesce a gestirne di più.

Durante il caricamento di questo report, il browser ha utilizzato circa 6GB di memoria (elaborata per circa 1 minuto), poi l'ha liberata, dopodiché il report è stato visualizzato sulla pagina: (Il report utilizza 5-6GB da 80-100 mila righe).

Utilizzo della memoria


Grafico dettagliato con zoom.

Facendo clic su un grafico si apre un grafico interattivo con la possibilità di zoomare per una visualizzazione dettagliata.
Sono disponibili due opzioni:

  1. L'opzione predefinita è quella gratuita di Google.charts
  2. È possibile collegare Highcharts, che come prodotto commerciale è più veloce e conveniente, ma può essere utilizzato gratuitamente solo dai programmatori durante lo sviluppo; quando si rilascia un progetto/prodotto, è necessario acquistare una licenza da rinnovare annualmente. Per saperne di più: https://shop.highcharts.com/

È possibile selezionare Logarithmic - scala logaritmica (può essere utile se la crescita del bilancio è esponenziale). Per Highcharts è possibile selezionare anche Ordinal - passo uniforme (come nei report dei tester di MetaQuotes). Dopo aver modificato questi elementi, è necessario cliccare nuovamente sul grafico desiderato per applicare l'opzione selezionata.

Esempio da Google.chart: (zoom con la rotella del mouse).


Esempio da Highcharts: (modifica della scala selezionando l'area necessaria con il mouse).


Ordini pendenti eseguiti su MT5

Per gli ordini apparsi in seguito all'attivazione di ordini pendenti, il campo Tipo mostra in blu scuro il tipo di ordine pendente (Buy limit, Sell limit, Buy stop o Sell stop), il tempo trascorso dall'impostazione all'attivazione dell'ordine in secondi e il tipo di ordine/posizione attivato. Queste informazioni vengono mostrate solo per i terminali o i tester MT5; i tester virtuali o MT4 non forniscono queste informazioni.



Grafici dei profitti e delle perdite per ora e giorno della settimana.

A differenza del tester MQ, i profitti e le perdite non sono visualizzati nel momento in cui si verificano, ma nel momento in cui si entra in un'operazione. In questo modo è più facile capire che le entrate in una certa ora sono per lo più non redditizie e quindi è sufficiente escludere questa ora per le entrate.
Inoltre, sono stati creati dei grafici sugli acquisti e sulle vendite.


Se si fa clic su uno di questi grafici, vengono visualizzate le tabelle con gli importi esatti per ora e per giorno. Sono presenti anche delle caselle di controllo che possono essere utilizzate per disattivare le ore e i giorni dagli input: i grafici e le tabelle verranno ricostruiti e sarà possibile valutare il risultato senza ulteriori test. È un analogo di BestInterval di Fxsaber, ma più grossolano (con un passo di 1 ora) e senza automazione. L'intervallo M10 è stato aggiunto per ridurre il passo.

Su questi grafici si possono osservare alcuni profitti orari o giornalieri su piccoli periodi di prova. I grafici sopra mostrano un test di 1 mese con una tendenza al rialzo. Quindi l'acquisto è in profitto e la vendita è in perdita. Se aumentate il test a un anno o più, quando passeranno diverse grandi tendenze in entrambe le direzioni, tutto diventerà uniformemente spalmato e di solito non redditizio, quindi è improbabile che possiate spegnere qualcosa e ottenere un cambiamento significativo nel profitto.
Ecco cosa è successo alla stessa strategia con il test di 1 anno: (si dovrebbe spegnere quasi tutto).

Quindi difficilmente potrà diventare la base della vostra strategia.


Filtraggio degli ordini.

Sono stati aggiunti molti filtri per visualizzare gli ordini in base a diversi parametri.


Compra, Vendi, Limite di acquisto, Limite di vendita, Stop di acquisto, Stop di vendita, Saldo - è possibile rimuovere qualsiasi tipo di ordine dal report.
Symbols - mostrerà l'intero elenco degli strumenti utilizzati; è possibile selezionare solo quelli necessari.
Magic - si possono mostrare gli ordini solo con il Magic specificato
Min Lot, Max Lot - si possono selezionare gli ordini con i lotti richiesti
Negative Slippage - si possono mostrare gli ordini con slippage negativo separatamente per gli ordini di apertura o per quelli di chiusura
Swap - si mostrano gli ordini con swap > 0
Min LengthTime - ordini con durata superiore al tempo specificato (specificato in numero di giorni, ore, minuti e secondi)
Max LengthTime - ordini con durata inferiore al tempo specificato
Open Time - orario di apertura dell'ordine da e verso le date specificate
Close Time - orario di chiusura dell'ordine da e verso le date specificate
TP, SL - ordini che si sono conclusi con l'attivazione di TP o SL
Profitti, perdite - ordini in profitto o in perdita (le commissioni e gli swap non sono inclusi, in quanto possono rendere negativo il profitto finale)
Rifiuti - ordini non eseguiti.

Il pulsante Reimposta consente di ripristinare i filtri ai valori predefiniti e di mostrare tutti gli ordini senza filtri.


Opzioni aggiuntive:



  1. È possibile specificare la data di inizio del test forward, dopo il quale verranno calcolate le statistiche del grafico completo, del grafico precedente alla data specificata (BackTest) e del grafico successivo (ForwardTest). I grafici mostreranno una linea verticale in questa data.
  2. Vecchio ordine delle colonne: l'ordine delle colonne sarà riorganizzato come nella libreria dei report.

P.S. Maggiore è il numero di commenti sulle operazioni, minore è il numero di righe visualizzabili. Un report con 5,4 milioni di righe non aveva commenti, tranne "fine del test". Quindi è meglio non inserirli se il report supera i 4 milioni di transazioni.

P.P.S. Funziona sia con MT5 che con MT4. Grazie a fxsaber per la modifica per MT4.

Opzioni di miglioramento:

  • Si può provare a scaricare il report in un file binario e leggerlo nel browser, forse può funzionare con un numero elevato di 5,4 milioni 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.

Tradotto dal russo da MetaQuotes Ltd.
Codice originale https://www.mql5.com/ru/code/47816

Filtro iCHO Trend CCIDualOnMA Filtro iCHO Trend CCIDualOnMA

Strategia basata sull'indicatore standard iCHO (Chaikin Oscillator, CHO) e sull'indicatore personalizzato 'CCIDualOnMA'.

Pannello di tracciamento manuale della posizione Pannello di tracciamento manuale della posizione

Pannello basato sulla classe CDialog. Lavora sul simbolo corrente. Eliminazione, impostazione di Take Profit, impostazione di Breakeven su un gruppo di posizioni

Libreria di base per creare profili di volume Libreria di base per creare profili di volume

Libreria di base per creare profili di volume sul grafico.

Angolo e velocità Angolo e velocità

L'indicatore mostra l'angolo o la velocità media di variazione dei prezzi.