Bibliotheken: MultiTester - Seite 44

 

Forum zum Thema Handel, automatische Handelssysteme und Testen von Handelsstrategien

Testen von 'CopyTicks'

fxsaber, 2024.02.26 12:41 Uhr

Wenn CopyTicks für 60 Sekunden hängen bleibt und den Fehler 4403 zurückgibt, versuchen Sie, den Zugangspunkt zum Server zu ändern. Auch wenn der Ping dorthin ungünstiger ist.

In diesem Sinne ist die automatische Auswahl eines Zugangspunkts durch das Terminal gefährlich.

Ohne diesen Indikator zu starten (eine Instanz für das gesamte Terminal), verlasse ich das Kampfterminal nicht mehr, wo die Arbeit mit CopyTicks läuft.

#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/de/code/26132

#property indicator_chart_window
#property indicator_plots 0

input int inIntervalAlert = 5; // Fehler-Timeout-Intervall (sec)
input int inMaxPoints = 5;     // Anzahl der ersten Serverpunkte

int OnCalculate( const int rates_total, const int prev_calculated, const int, const double &[] )
{
  static ulong StartTime = GetTickCount64();
  const ulong CurrTime = GetTickCount64();
  
  if (!prev_calculated)
  {
    Alert("Restarted!");
    
    StartTime = CurrTime;
  }
  else if (CheckCopyTicks() != ERR_HISTORY_TIMEOUT)
    StartTime = CurrTime;
  else if (CurrTime - StartTime > (ulong)inIntervalAlert * 1000)
  {
    static int Pos = 0;
    
    const int ServerPoint = Pos++ % inMaxPoints;
        
    Alert("CopyTicks error (timeout > " + (string)(CurrTime - StartTime) +
          " ms). Trying (" + (string)Pos + ") to switch to the " +
          (string)(ServerPoint + 1) + "/" + (string)inMaxPoints + " server point.");

    MTTESTER::SetServerPoint(ServerPoint);
  }

  return(rates_total);
}

int CheckCopyTicks( const string Symb = NULL )
{
  MqlTick Tick;
  MqlTick Ticks[];
  
  ResetLastError();
  
  if (SymbolInfoTick(Symb, Tick))
    CopyTicks(Symb, Ticks, COPY_TICKS_ALL, Tick.time_msc - 1000000, 1);
    
  return(_LastError);
}


2024.10.29 16:07:24.802 CopyTicksHelper (EURUSD,M1)     Alert: CopyTicks error (timeout > 5015 ms). Trying (8) to switch to the 3/5 server point.
2024.10.29 16:07:25.909 CopyTicksHelper (EURUSD,M1)     Alert: Restarted!


Der Indikator führt dazu, dass alle laufenden Expert Advisors/Skripte den entsprechenden Timeout-Fehler auf einmal beenden. Und dann arbeiten sie normal weiter.

 
fxsaber #:

Wenn ich diesen Indikator nicht ausführe (eine Instanz für das gesamte Terminal), verlasse ich nicht mehr das Kampfterminal, in dem die Arbeit mit CopyTicks stattfindet.



Der Indikator zwingt alle laufenden Expert Advisors/Skripte, den entsprechenden Timeout-Fehler auf einmal zu beenden. Und dann arbeiten sie normal weiter.

Bitte nennen Sie mir echte Fälle, in denen Sie ständig mit CopyTicks in einem Expert Advisor arbeiten müssen. Ich benutze es wirklich nur in OnInit(), um einige historische Ticks zu erhalten, um digitale Filter auszuführen. In MQL4 musste ich mehrere Minuten warten, bis sich die Puffer füllten.

 
Alexey Volchanskiy #:

Bitte nennen Sie mir echte Fälle, in denen ein Expert Advisor ständig mit CopyTicks arbeiten muss.

Überspringen Sie keine Ticks (und verdoppeln Sie sie nicht) im Real, wie es im Tester geschieht. Der Expert Advisor auf Real erhält genau die gleiche Abfolge von Kursdaten, die er auch im Tester erhält, wenn Sie sich entscheiden, ihn auf dem vergangenen Intervall in der Zukunft laufen zu lassen.

 

Ich muss ein kompletter Idiot sein oder etwas übersehen.

Wenn ich einen EA habe, den ich einen einzelnen nicht-visuellen Test (nicht-Optimierung) von jedem Tag für ein Jahr ausführen möchte... So wird jeder Tag mit den hartcodierten Parametern getestet, wie würde ich es tun? Könnte jemand bitte ein kurzes Tutorial wie schreiben.

1. Bibliothek herunterladen - Installationsanleitung

2. Schreiben Sie diesen Code, um Ihren EA nach dem Namen in Ihrem EA auszuwählen und so und so eine Datei.

3. Wählen Sie hier Ihr Start- und Enddatum

4. Geben Sie hier den Zeitraum und die Länge jedes Backtests an.

5. Fügen Sie diese zusätzlichen Codes hinzu, damit alles richtig funktioniert, bringen Sie Ihre #includes an die richtige Stelle usw.

6. Legen Sie die Ergebnisse für jeden täglichen Backtest fest und speichern Sie sie in einer CSV-Datei.

Etc etc etc etc

Ich weiß nicht, wie ich diese Lösung implementieren soll, die anscheinend speziell für @fxsaber entwickelt wurde. Ich habe alle Ihre kurzen Beispiele gelesen und bin den Code in jeder Datei durchgegangen, aber ich kann nirgendwo eine Dokumentation finden, die Anwendungsfälle oder eine Schritt-für-Schritt-Anleitung beschreibt.


Vielen Dank für die Codierung, was wir alle wollten und brauchten Ihre eine Legende Liebe einige Ihrer Kommentare wie "!Did", wenn jemand Sie bittet, etwas zu beheben

 
CheckInputs - нахождение аварийных проходов при Оптимизации советника
CheckInputs - нахождение аварийных проходов при Оптимизации советника
  • www.mql5.com
Во время Оптимизации советника некоторые проходы могут завершаться аварийно. Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий Новая версия платформы MetaTrader 5
 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Bibliotheken: MultiTester

fxsaber, 2022.12.12 13:20

Manchmal muss man das Gleiche auf funktionierenden Terminals tun. Automatisierung dieser Aktion unten auf dem Beispiel.

Als Ergebnis, ein Klick gesammelt Daten aus allen Terminals. Dank MTTESTER::RunEX5 - läuft EX5 auf dem gewünschten Terminal (portable).

Anwendung.

МультиТерминальный скрипт.
МультиТерминальный скрипт.
  • www.mql5.com
Здесь будет представлен новый вид MQL5-программ - мультитерминальный скрипт: скрипт, который сам запускается на всех открытых MT5-терминалах. Пример. Первым таким скриптом стал CustomReport по причине
 

Das Skript zeigt an, welche der laufenden Terminals portabel sind.

#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/de/code/26132
  
void OnStart()
{
  HANDLE Handles[];
  
// Alle Terminals durchlaufen
  for (int i = MTTESTER::GetTerminalHandles(Handles, false); (bool)i--;)
    Print("\"" + MTTESTER::GetTerminalPath(Handles[i]) +
          "\" - " +(MTTESTER::IsPortable(Handles[i]) ? "portable." : "NOT portable."));
}
 

Hallo

ich muss ein Skript(das sich in \MQL5\Scripts\ befindet ) ausführen, indem ich auf ein Objekt klicke, das durch einen Indikator (der sich in \MQL5\Indicators\ befindet)erstellt wurde (nicht durch Hotkeys).

Ich habe versucht, MTTESTER::RunEX5 zu verwenden, aber es treten viele grundlegende Fehler auf. Was mache ich falsch?

Ich habe "MultiTester_Example1" und "MultiTester_Example2" in \MetaQuotes\Terminal\D..5\MQL5\Experts\fxsaber\MultiTester eingegeben.

Ich habe "MultiTester.mqh" und alle anderen .mqh-Dateien in \MetaQuotes\Terminal\D..5\MQL5\Include\fxsaber\MultiTester

Folgende Fehler habe ich erhalten

in EX1:

'sinput' - unerwartetes Token Ex1.mq5 3 1

'=' - illegale Zuweisung Ex1.mq5 3 23

sinput' - unerwartetes Token Ex1.mq5 4 1

=' - illegale Zuweisung Ex1.mq5 4 23

sinput' - unerwartetes Token Ex1.mq5 5 1

=' - illegale Zuweisung Ex1.mq5 5 24

sinput' - unerwartetes Token Ex1.mq5 6 1

'=' - illegale Zuweisung Verwendung Ex1.mq5 6 31


in EX2:

Ereignisbehandlungsfunktion nicht gefunden Ex2.mq5 1 1


in MultiTester.mqh:

Ausdruck nicht boolesch TesterSettings.mqh 104 37

Ausdruck nicht boolesch TesterSettings.mqh 118 39

'SetTesterSettings' - nicht deklarierter Bezeichner MultiTester.mqh 43 13

')' - Ausdruck erwartet MultiTester.mqh 43 31

SetTesterSettings' - nicht deklarierter Bezeichner MultiTester.mqh 51 10

')' - Ausdruck erwartet MultiTester.mqh 51 28


in Task.mqh:

Datei 'C:\Users\...\...\....\...\Terminal\D0...75\MQL5\Include\fxsaber\TesterCache\TesterCache.mqh' nicht gefunden Task.mqh 5 11

'TESTERCACHE' - Deklaration ohne Typ Task.mqh 80 38

.

.

.

siehe Vorlage Instanziierung 'MTTESTER::TASK::GetMaxFitnessPos<unbekannt>' Task.mqh 244 29


 
Asa Social #:

Ich muss ein Skript(in \MQL5\Scripts\) ausführen , indem ich auf ein Objekt klicke, das durch einen Indikator (in \MQL5\Indicators\) erstellt wurde (nicht durch Hotkeys).

Siehe das Beispiel hier.

Ich habe versucht, MTTESTER::RunEX5 zu verwenden, aber es treten viele grundlegende Fehler auf. Was mache ich falsch?

Unkompilierter Code kann technisch gesehen nicht in Codebase veröffentlicht werden. Das Problem liegt auf Ihrer Seite.
Библиотеки: Expert - Попробуйте использовать ChartApplyTemplate. Запустите советник на всех чартах, где уже есть запущенный советник.
Библиотеки: Expert - Попробуйте использовать ChartApplyTemplate. Запустите советник на всех чартах, где уже есть запущенный советник.
  • 2017.08.28
  • Automated-Trading
  • www.mql5.com
После этого задать ему нормальное значение через ChartSetInteger. Если же нужно еще и советник запустить на том же чарте. а оттуда запускать на нужном уже нам чарте советник. Библиотека работает без DLL - полностью удовлетворяет требованиям Маркета
 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Bibliotheken: MultiTester

fxsaber, 2022.12.12 13:20

MTTESTER::RunEX5 - führt EX5 auf dem gewünschten Terminal aus (portable).

portable-Beschränkung entfernt.