Unisciti alla nostra fan page
- Visualizzazioni:
- 97
- Valutazioni:
- Pubblicato:
-
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
Triangular Arbitrage
Questo Expert Advisor (EA) implementa una strategia di arbitraggio triangolare tra tre coppie di valute: EURUSD, USDJPY ed EURJPY
Esempi tratti dal libro "Reti neurali per il trading algoritmico con MQL5"
Il libro "Reti neurali nel trading algoritmico con MQL5" è una guida completa, che copre sia le basi teoriche dell'intelligenza artificiale e delle reti neurali sia gli aspetti pratici della loro applicazione nel trading finanziario utilizzando il linguaggio di programmazione MQL5.
Calendario
Calendario - analisi fondamentale sulla storia e in tempo reale.
Rilevamento dell'inizio di una nuova barra o candela
Rilevare l'inizio di una nuova barra o candela nel gestore dell'evento OnTick() di un Expert Advisor.



