Bibliotheken: MultiTester - Seite 35

 
fxsaber #:

Vielen Dank für Ihre Hilfe beim Testen! Aktualisiert MTTester.mqh gebucht.

Herzlichen Dank für die Bibliothek

 
MTTester.mqh ist wieder aktualisiert worden. Dieses Mal werde ich Ihnen sagen, was war der Kampf mit.
#include <fxsaber\Benchmark\Benchmark.mqh>  // https://www.mql5.com/de/code/31279
#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/de/code/26132

const bool Init = EventSetTimer(3);

void OnTimer()
{
  if (MTTESTER::IsReady()) // Wenn die Start-Taste bereit ist, gedrückt zu werden
    Print(_B(MTTESTER::ClickStart(), 1)); // Ob die Starttaste gedrückt wurde und wie lange dies gedauert hat.
}

Dieser Expert Advisor drückt alle drei Sekunden auf die Schaltfläche Start, wenn er nicht auf Stop steht. Ich habe es geschafft, es zu drücken - wahr, sonst - falsch.


Standard-Situation.

Drücken Sie Start - die Berechnung beginnt.

Alert: Bench_Stack = 0, 1 <= Time[Test.mq5 9 in OnTimer: MTTESTER::ClickStart()] = 125248 mcs.
true
Alert: Bench_Stack = 0, 1 <= Time[Test.mq5 9 in OnTimer: MTTESTER::ClickStart()] = 123327 mcs.
true

Dieser Vorgang dauert ~125 ms.


Das ist keine Seltenheit.

Drücken Sie Start - entweder wird die sofortige Berechnung gestartet oder der Tester meldet, dass er die Berechnung nicht durchführen kann (z. B. FromDate >= ToDate).

Alert: MTTester.mqh: Start->Stop - is not detected!
Alert: Bench_Stack = 0, 1 <= Time[Test.mq5 9 in OnTimer: MTTESTER::ClickStart()] = 1001401 mcs.
true
Alert: MTTester.mqh: Start->Stop - is not detected!
Alert: Bench_Stack = 0, 1 <= Time[Test.mq5 9 in OnTimer: MTTESTER::ClickStart()] = 1004102 mcs.
true

Dieser Vorgang dauert etwa eine Sekunde. Die Bibliothek gibt einen Alarm aus, meldet aber true - die Schaltfläche wurde gedrückt.


Seltene Situation.

Start wird nicht gedrückt. Dies kann nur durch einen Neustart des Terminals behoben werden.

Ich habe keine Protokolle über diese Situation. Es dauert <10 Sekunden, um eine solche Situation zu erkennen. Es wird eine Meldung wie diese erscheinen.

problem with Start-button!

Return false - die Taste wurde nicht gedrückt.

 
MTTester.mqh aktualisiert.
 
fxsaber #:

Das ist eine seltene Situation.

Start wird nicht gedrückt. Dies kann nur durch einen Neustart des Terminals behoben werden.

Ein entfernter WinServer-Rechner machte kontinuierlich Hunderte von einzelnen Durchläufen, ohne dass es zu Fehlern kam.


Sobald ich mich per RDP bei diesem Rechner anmeldete, hörte die Start-Taste auf zu klicken. Die Abhilfe besteht wie immer darin, das Terminal neu zu starten.

Es scheint, dass dieses Verhalten etwas mit ähnlichen Anmeldungen an dem Rechner zu tun hat. Sie können sich dutzende Male über RDP anmelden - alles funktioniert einwandfrei. Aber einige Anmeldungen werden für den Tester fatal.


Diejenigen, die auf den Start-Bug stoßen - achten Sie auf den Zusammenhang zwischen der Anmeldung am Rechner und dem Start-Button.


ZY Zufall oder nicht, WinServer bot an, seine Updates während dieser Anmeldung an der Maschine zu überprüfen.

 

Gute Bibliothek.
Ist es möglich, anzugeben, welche *.set-Datei mit Parametereinstellungen programmatisch für den Test übergeben werden soll?

Standardmäßig werden nur die gleichen Einstellungen verwendet, was nicht sehr praktisch ist.

 
sergego18 #:

Ist es möglich, die *.set-Datei mit den Parametereinstellungen für den Test programmatisch zu übergeben?

Beispiel.
 
fxsaber #:
Beispiel.

Danke.
Ist es besser, die Einstellungen in einer einzigen Zeile zu übergeben, in der die Zeilen durch das Zeichen \n getrennt sind.

oder ein Array von Zeilen wie im Beispiel?

Und ist es möglich, die Einstellungen in der

MTTester Klasse statische Methode Run

static bool Run( const string ExpertName = NULL,

const string Symb = NULL,

const ENUM_TIMEFRAMES period = PERIOD_CURRENT,

const datetime iBeginTime = 0,

const datetime iEndTime = 0 )

einen Parameterstring (oder ein Array von Strings) hinzufügen, der die *.set EA-Einstellungen angibt?

 
sergego18 #:

Vielen Dank.
Ist es besser, die Einstellungen in einer einzigen Zeile zu übergeben, wobei die Zeilen durch das Zeichen \n getrennt sind?

oder ein Array von Zeilen wie in dem Beispiel?

GetSettings ist CTRL+C im Tester.

SetSettings ist CTRL+V im Tester.

Sehen Sie nach, mit welchen Daten CTRL+C/V funktioniert.


Und ob es möglich ist, in der

MTTester Klasse statische Methode Run

Ich verwende diese Methode nicht. Sie bleibt als Geschichte.


Das Beispiel zeigt alle MTTESTER-Methoden, die benötigt werden.

 
sergego18 #:

Ist es möglich, die *.set-Datei mit den Parametereinstellungen für den Test programmatisch zu übergeben?

Validate arbeitet mit vollwertigen ini-Dateien des Testers und einer reduzierten Version - set-Dateien für den Tester.

Wenn Sie viele ini/set-Dateien ausführen müssen, macht Validate das von Haus aus. Benutzen.

 
fxsaber #:

Validate arbeitet mit vollwertigen Tester-ini-Dateien und einer abgespeckten Version - set-files for Tester.

Wenn Sie viele ini/set-Dateien ausführen müssen, kann Validate das von Haus aus. Verwenden.

Danke.
Ich habe in diesem Kommentar eine Lösung gefunden, bei der die Set-Datei im erforderlichen Format als String-Array geladen wird.

https://www.mql5.com/ru/forum/318305/page34#comment_51842356

Ich habe auch ersetzt

typedef bool (*INITDEINIT)( void );

Zeiger der Callback-Aufrufe bei der Initialisierung und Deinitialisierung jedes Laufs

durch die Schnittstelle

Schnittstelle InitDeInit {

bool RunInit();

bool RunDeInit();

};

das in dem Erben

einer Klasse ähnlich der Struktur SETTINGS

und damit in der Methode RunInit().

Ich lade die Set-Datei des gewünschten Tools.

typedef bool (*INITDEINIT)( void ); - dieser Zeiger erlaubt es nicht zu wissen, welches Werkzeug initialisiert/de-initialisiert wird, daher ist es besser, einen Zeiger auf die Schnittstelle zu verwenden, da Zeiger auf Methoden noch nicht von MQL unterstützt werden.

Bei diesem Ansatz besteht keine Notwendigkeit, die Methode MTTester::Run zu ändern.



Библиотеки: MultiTester - Обновил платформу MetaTrader 5 build 3550 улучшения и исправления Fxsaber.
Библиотеки: MultiTester - Обновил платформу MetaTrader 5 build 3550 улучшения и исправления Fxsaber.
  • 2024.01.21
  • Yuriy Bykov
  • www.mql5.com
You can add this draft function for reading settings from file to string array. автоматическим торговым системам и тестированию торговых стратегий. Validate умеет запускать последовательно много ini-задайний