Unisciti alla nostra fan page
- Visualizzazioni:
- 38
- Valutazioni:
- Pubblicato:
- 2025.04.03 11:15
-
Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance
Questa libreria consente di leggere/scrivere file tst - formato MT5-Tester a passaggio singolo.
Alcune varianti di utilizzo
Forum sul trading, sui sistemi di trading automatico e sul test delle strategie di trading
fxsaber, 2019.10.04 07:18 pm.
Se si apre il formato dei file tst e si colloca la cartella cache del Tester nella sandbox, è possibile creare prodotti di mercato di un nuovo tipo, che saranno analizzatori/correttori dei risultati del Tester.
Ad esempio, sarà possibile scrivere un Market-combine che mostra tutti i singoli passaggi disponibili nella cache.
- Si selezionano quelle necessarie con il mouse e viene mostrata la statistica combinata.
- Pulisce la cache dai passaggi non necessari.
- Calcola il portafoglio ottimale con i coefficienti di ponderazione appropriati a partire dalle passate.
- Mostra i migliori intervalli di trading per ogni passaggio.
- Offre una propria visualizzazione interattiva delle statistiche, compresi i filtri.
- Calcola il MM ottimale.
- Per ogni posizione di copertura nello storico mostra OrderOpenPriceBest (il miglior prezzo di apertura durante la durata della posizione), OrderClosePriceBest (simile), OrderOpenPriceLength (per quanto tempo il prezzo non è stato peggiore di OrderOpenPrice durante la durata della posizione), OrderClosePriceLength (simile), OrderProfitBest (il massimo profitto possibile di una posizione simile durante la durata della posizione originale).
- Mostra l'efficienza di ogni posizione di copertura.
- Calcola il risultato quando la latenza è abilitata.
- Calcola il risultato con diverse impostazioni di esecuzione degli ordini (se scorrono, ecc.) e commissioni.
- Mostra il risultato del TS su una diversa cronologia di tick.
- ...
Non è necessario lanciare il Tester per implementare ogni elemento.
Tutto questo può essere fatto ora, se si inserisce la cartella cache nella sandbox tramite mklink. È necessario solo il formato tst.
Chiunque ne senta la forza dovrebbe iniziare a scrivere un prodotto del genere. Mi unirei volentieri al team dei suoi sviluppatori e lo acquisterei. La nicchia è completamente vuota.
Se cache-folder non viene messo in sandbox, potrebbe esserci una maggiore possibilità che prodotti simili appaiano al di fuori dell'ecosistema MQ, in quanto scritti in altri linguaggi.
Esempi.
#include <fxsaber\SingleTesterCache\SingleTesterCache.mqh> // Dati del tester a passaggio singolo. void OnStart() { SINGLETESTERCACHE SingleTesterCache; // Creato un oggetto tester cache. SingleTesterCache.Set(); // Inserite la vera storia dell'offerta. // ..\.\.\MQL5\Files/Test.tst. Print(SingleTesterCache.Save("Test.tst")); // Scrivere in un file che può essere importato nel Tester. }
Questo script raccoglie la cronologia di trading dei conti reali in formato tst. Viene importato nel Tester come segue.
Il risultato è simile a questo.
Le soluzioni DLL non possono essere inserite nella KB, quindi di seguito è riportato il codice sorgente di un altro script, che non è incluso nella consegna della KB.
#include <fxsaber\SingleTesterCache\SingleTesterCache.mqh> // Dati del tester a passaggio singolo. #include <Graphics\Graphic.mqh> #include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/it/code/26132 #define MIN_WIDTH 10 // Creare un grafico. string GraphPlot( const double &Y1[], const double &Y2[], int Width = 0, int Height = 0, const ENUM_CURVE_TYPE Type = CURVE_NONE, const string CurveName1 = NULL, const string CurveName2 = NULL, string ObjName = NULL ) { Width = Width ? Width : (int)::ChartGetInteger(0, CHART_WIDTH_IN_PIXELS); Height = Height ? Height : (int)::ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS); ObjName = (ObjName == NULL) ? __FUNCTION__ : ObjName; CGraphic Graphic; const bool Res = (::ObjectFind(0, ObjName) >= 0) ? Graphic.Attach(0, ObjName) : Graphic.Create(0, ObjName, 0, 0, 0, Width, Height); if (Res) { const int Size1 = ::ArraySize(Y1); const int Size2 = ::ArraySize(Y2); Graphic.CurveAdd(Y1, ((Type == CURVE_NONE) && Size1) ? ((Width / Size1 < MIN_WIDTH) ? CURVE_LINES : CURVE_POINTS_AND_LINES) : Type, CurveName1); Graphic.CurveAdd(Y2, ((Type == CURVE_NONE) && Size2) ? ((Width / Size2 < MIN_WIDTH) ? CURVE_LINES : CURVE_POINTS_AND_LINES) : Type, CurveName2); Graphic.CurvePlotAll(); Graphic.Update(); } return (Res ? Graphic.ChartObjectName() : NULL); } void OnStart() { uchar Bytes2[]; if (MTTESTER::GetLastTstCache(Bytes2) != -1) // Se fosse possibile leggere l'ultimo record della cache di una singola esecuzione { const SINGLETESTERCACHE SingleTesterCache(Bytes2); // Inserirlo nell'oggetto corrispondente. SingleTesterCache.SaveSet(NULL, true, "Created by " + __FILE__); // Salvare il file impostato con i dettagli. double Balance[]; double Equity[]; // Stampare il grafico del saldo e del patrimonio netto. if (SingleTesterCache.GetBalance(Balance) && SingleTesterCache.GetEquity(Equity)) GraphPlot(Balance, Equity, 1200, 500, CURVE_NONE, "Balance", "Equity"); Print(SingleTesterCache.Header.ToString()); // Emette l'intestazione di un singolo passaggio. Print(SingleTesterCache.Summary.ToString()); // Statistica. Print(SingleTesterCache.Inputs); // Parametri di ingresso. } }
Questo script preleverà automaticamente i dati dell'ultimo singolo passaggio e ne fornirà i dati, compreso un grafico di equilibrio/patrimonio.
Ringraziamenti.
Grazie agli sviluppatori per aver creato le cache di Tester e per avermi aiutato a decomprimere i suoi formati.
Tradotto dal russo da MetaQuotes Ltd.
Codice originale https://www.mql5.com/ru/code/27611

Questo Expert Advisor (EA) implementa una strategia di arbitraggio triangolare tra tre coppie di valute: EURUSD, USDJPY ed EURJPY

These are some #define statements that are useful to perform operations in your EA. You only need to assign the name of your variables at the beginning of the file, and then let the other #define statements do the work. In order to use this file, add #include <DEFINE_statements.mqh> to the first line in your EA file.

Calendario - analisi fondamentale sulla storia e in tempo reale.

Rilevare l'inizio di una nuova barra o candela nel gestore dell'evento OnTick() di un Expert Advisor.