und werden Sie Mitglied unserer Fangruppe
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Bewerten Sie es im Terminal MetaTrader 5
- Ansichten:
- 29
- Rating:
- Veröffentlicht:
- 2025.04.03 11:15
-
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
Diese Bibliothek ermöglicht das Lesen/Schreiben von tst-Dateien - MT5-Tester single pass format.
Einige Varianten der Verwendung
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
fxsaber, 2019.10.04 07:18 Uhr.
Wenn sie das Format der tst-Dateien öffnen und den Cache-Ordner des Testers in die Sandbox legen, ist es möglich, Marktprodukte eines neuen Typs zu erstellen, die Analysatoren/Korrektoren der Testergebnisse sein werden.
Zum Beispiel ist es möglich, eine Markt-Kombination zu schreiben, die alle im Cache verfügbaren Einzelpässe anzeigt.
- Man wählt die benötigten Pässe mit der Maus aus, und es werden die kombinierten Statistiken angezeigt.
- Es bereinigt den Cache von unnötigen Pässen.
- Berechnet das optimale Portfolio mit geeigneten Gewichtungskoeffizienten aus den Pässen.
- Zeigt die besten Handelsintervalle für jeden Durchgang an.
- Bietet eine eigene interaktive Visualisierung der Statistiken, einschließlich Filter.
- Berechnet das optimale MM.
- Zeigt für jede Hedge-Position in der Historie OrderOpenPriceBest (der beste Eröffnungskurs während der Laufzeit der Position), OrderClosePriceBest (ähnlich), OrderOpenPriceLength (wie lange der Preis während der Laufzeit der Position nicht schlechter als OrderOpenPrice war), OrderClosePriceLength (ähnlich), OrderProfitBest (der höchstmögliche Gewinn einer ähnlichen Position während der Laufzeit der ursprünglichen Position).
- Zeigt die Effizienz der einzelnen Hedge-Positionen.
- Berechnet das Ergebnis, wenn die Latenzzeit aktiviert ist.
- Berechnet das Ergebnis bei verschiedenen Auftragsausführungseinstellungen (ob sie gleiten, etc.) und Provisionen.
- Zeigt das Ergebnis des TS für eine andere Tick-Historie.
- ...
Sie brauchen den Tester nicht zu starten, um jeden Punkt zu implementieren.
All das kann man jetzt machen, wenn man den Cache-Ordner über mklink in die Sandbox legt. Man braucht nur noch tst-format.
Wer die Kraft in sich spürt, sollte vielleicht anfangen, ein solches Produkt zu schreiben. Ich würde mich gerne dem Team der Entwickler anschließen und es kaufen. Die Nische ist völlig leer.
Wenn cache-folder nicht sandboxed wird, steigt die Wahrscheinlichkeit, dass ähnliche Produkte außerhalb des MQ-Ökosystems erscheinen, da sie in anderen Sprachen geschrieben werden.
Beispiele.
#include <fxsaber\SingleTesterCache\SingleTesterCache.mqh> // Daten des Prüfers im Einzeldurchgang. void OnStart() { SINGLETESTERCACHE SingleTesterCache; // Erstellt ein Tester-Cache-Objekt. SingleTesterCache.Set(); // Geben Sie die wahre Geschichte der Ausschreibung an. // ..\.\.\MQL5\Files/Test.tst. Print(SingleTesterCache.Save("Test.tst")); // Schreiben Sie sie in eine Datei, die in den Tester importiert werden kann. }
Dieses Skript fasst die Handelshistorie eines echten Kontos im tst-Format zusammen. Es wird wie folgt in den Tester importiert.
Es stellt sich in etwa so dar.
DLL-Lösungen können nicht in KB platziert werden, daher finden Sie hier den Quellcode eines anderen Skripts, das nicht in der KB-Lieferung enthalten ist.
#include <fxsaber\SingleTesterCache\SingleTesterCache.mqh> // Daten des Prüfers im Einzeldurchgang. #include <Graphics\Graphic.mqh> #include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/de/code/26132 #define MIN_WIDTH 10 // Erstellen eines Diagramms. 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) // Wenn es möglich wäre, den letzten Cache-Datensatz eines einzelnen Laufs zu lesen { const SINGLETESTERCACHE SingleTesterCache(Bytes2); // Fahren Sie es in das entsprechende Objekt. SingleTesterCache.SaveSet(NULL, true, "Created by " + __FILE__); // Speichern Sie die eingestellte Datei mit Details. double Balance[]; double Equity[]; // Drucken Sie die Bilanz- und Eigenkapitaltabelle. if (SingleTesterCache.GetBalance(Balance) && SingleTesterCache.GetEquity(Equity)) GraphPlot(Balance, Equity, 1200, 500, CURVE_NONE, "Balance", "Equity"); Print(SingleTesterCache.Header.ToString()); // Ausgabe der Kopfzeile eines einzelnen Durchgangs. Print(SingleTesterCache.Summary.ToString()); // Statistica. Print(SingleTesterCache.Inputs); // Eingabeparameter. } }
Dieses Skript übernimmt automatisch die Daten des letzten Einzeldurchlaufs und gibt deren Daten aus, einschließlich eines Gleichgewichts-/Gleichgewichtsdiagramms.
Danksagungen.
Vielen Dank an die Entwickler für die Erstellung der Tester-Caches und die Hilfe beim Entpacken der Formate.
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/27611

BBMA ZoneZeroLoss Histogram zeigt Handelsbereiche z.b. für "Reentry"-Setup für Risiko Minimierung

Leider musste ich feststellen, dass manche Broker bei der Serverzeitumstellung etwas nachlässig sind, was ich nicht erwartet hatte und was mich sehr überrascht hat. Hier ist ein Skript, mit dem jeder seinen Broker überprüfen kann.

Kalender - Fundamentalanalyse in Geschichte und Echtzeit.

Erkennung des Beginns eines neuen Balkens oder einer neuen Kerze im OnTick()-Ereignishandler eines Expert Advisors.