Automatische Überprüfung der Produkte auf dem Markt (Fragen und Vorschläge) - Seite 6

 
Andrey Khatimlianskii:

Ja, in der Tat, ich habe "@global_initializations" vergessen.

Es stellt sich heraus, dass das Zeichnen von Balken und Indikatorpuffern selbst so lange dauert?

Und wie lange dauert es, wenn Sie zur Freigabe kompilieren und den Visualisierer im gleichen Intervall laufen lassen, indem Sie direkt zum Ende scrollen ("skip to...")?

Und wie lange?

 
Prostocar:
Hallo Hallo, ich habe meinen Market im Terminal verloren ich kann keine Expert Advisors und Indikatoren aus dem Market installieren Neuinstallation des Terminals hat nicht geholfen sowie zuvor gekaufte Produkte auf dem Market werden nicht aktualisiert wer weiß wie man das Problem löst

Sie haben meine Frage immer noch nicht beantwortet:

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Automatisierte Produktprüfung auf dem Markt (Fragen und Anregungen)

Vladislav Andruschenko, 2019.10.10 18:35


Überprüfen Sie die Version des Internet Explorers. Es besteht der Verdacht, dass sie nicht funktioniert.

Sie können es im Terminal, im Fenster Tools, auf der Registerkarte Log überprüfen.


Die zweite Frage: Mit welchem Server verbinden Sie sich? Versuchen Sie, sich mit MetaQuotes-Demo zu verbinden.

 
MetaQuotes Software Corp.:

Aus den Protokollen des Autovalidators geht hervor, dass der Test auf M1 das monatliche Intervall nicht in einer Stunde durchlaufen kann.

Bei H1 besteht derselbe Indikator den Test innerhalb weniger Minuten.

Suchen Sie den Grund in Ihrem Code.

Der Grund dafür liegt wahrscheinlich eher im Autovalidator. Ich konnte herausfinden, dass das Problem irgendwie mit der Verarbeitung der Tick-Historie zusammenhängt.

Wenn das erste Ereignis OnCalculate verarbeitet wird, versucht der Indikator, die Historie der Ticks für den letzten Tag zu laden, indem er die Funktion CopyTicksRange ausführt. Wenn jeder Balken mindestens einige Ticks erhält, wird die empfangene Historie gezeichnet und dann werden die Ticks online verarbeitet. Wenn einige Verlaufsbalken keine Ticks erhalten haben, gibt der OnCalculate-Handler 0 zurück und startet einen 5-Sekunden-Timer. Bei den nächsten Ereignissen OnCalculate versucht der Indikator weiterhin, den Verlauf der Ticks zu laden. Im OnTimer-Handler wird der Timer gestoppt, und wenn alle OnCalculate-Aufrufe die Historie 5 Sekunden lang nicht laden konnten, wird die Aktualisierungsanforderung mit demChartSetSymbolPeriod(0, NULL, 0)-Aufruf durchgeführt.

Beachten Sie, dass alles asynchron ausgeführt wird und es keine logischen Hänger gibt. Im schlimmsten Fall, wenn wir davon ausgehen, dass die Datenbank der Ticks aus irgendeinem Grund nicht verfügbar ist, erhalten wir eine Reihe von Auffrischungen mit einer Periode von 5 Sekunden. Der Indikator wird in diesem Fall jedoch gar nicht berechnet, da keine Daten vorliegen. Der Einfluss der Auffrischung wurde untersucht, er ist nicht vorhanden - siehe Kommentar unten.

Dieser Code funktioniert bei mir online auf verschiedenen Servern, verschiedenen Charakteren/Zeitrahmen und im Testprogramm.

Derselbe Code scheint irgendwo im Autovalidator zu hängen. Beim Herumstöbern (was bei normalen Rückmeldungen, Protokollen usw. nicht der Fall sein sollte) habe ich Folgendes gefunden.

Wenn Sie den Kommentar für die Tick-Historie auskommentieren, wird der Indikator normalerweise automatisch ungültig.

Da es viele geschichtsanfordernde Faktoren gibt, kann ich nicht genau sagen, woran und in welcher Kombination der Autovalidator "hängt":

  • CopyTicksRange in Abwesenheit von History Ticks (aber auch wenn sie abwesend sind, berechnet der Indikator nicht und gibt sofort die Kontrolle an die Umgebung zurück, die Online-Ticks "ticken" weiterhin frei, ich habe eine solche Situation emuliert - keine Hänger);
  • Zeitschaltuhr;
  • ChartSetSymbolPeriod (als Stresstest habe ich den Indikator mit dieser Aktualisierung im extremen Modus laufen lassen (bei jedem Tick) und es führt zu keiner Verlangsamung oder spürbaren CPU-Last, diese Anforderung ist auch asynchron);
  • Ich habe einen Zähler für fehlgeschlagene Aktualisierungen hinzugefügt, um sie nach einer bestimmten Anzahl von Versuchen (5) zu stoppen, aber das hat keine Auswirkungen auf den Erfolg.

Wenn die Aktualisierung vom OnTimer-Handler angefordert wird, schlägt die automatische Validierung fehl. Wenn die Aktualisierung an OnCalculate übergeben wird, ist die automatische Validierung erfolgreich. Es gibt also einen indirekten Hinweis darauf, dass der Aufruf von ChartSetSymbolPeriod aus OnTimer eine negative Auswirkung hat. Ich habe absichtlich eine solche Kombination im Testgerät laufen lassen - ohne Probleme. Offensichtlich unterscheidet sich der Autovalidator von dem öffentlich zugänglichen Tester.

Da die identifizierten Bedingungen für das Bestehen der Validierung nicht sehr klar sind (zumindest seltsam) und erfordern, dass der Code aus dem Bauch heraus künstlich komplexer gemacht wird, sind sie für ein Release-Produkt inakzeptabel.

 
Guten Tag, ich bitte um Hilfe, wenn die Autovalidierung einen Fehler über das Fehlen eines Indikators anzeigt, ist der Indikator über die Ressource gesetzt, auf anderen Terminals funktioniert die kompilierte Datei ohne Probleme sowohl im Test als auch auf dem echten Konto. Was könnte das Problem sein?
Dateien:
2yr38jvml4.png  32 kb
 
RODION SLOTIN:
Hallo, ich bitte um Hilfe, während der Autovalidierung ein Fehler über das Fehlen des Indikators, der Indikator ist über Ressource gesetzt, auf anderen Terminals kompilierte Datei funktioniert ohne Probleme sowohl im Test und in Echtzeit. Was könnte das Problem sein?

Versuchen Sie, keine doppelten Endungen und Bindestriche zu verwenden. Dies ist nur eine schnelle Schätzung.

 
RODION SLOTIN:


Können Sie mir sagen, wo genau?

#resource "\\Indicators\\\\guru.ex4"

double SigUp= iCustom(Symbol(),0,"\\Experts\\/SnowyOwl.v1-1.eng.ex4::Indicators\\guru.ex4",Sensitivity,PopUp_Alert,5,0);


Sie sollten es so schreiben (Beispiel):

#resource "\\Indicators\\trend_channel.ex4"

iCustom(Symbol(),0,"::Indicators\\trend_channel.ex4",kstd,bars,shift,0,bars);

und Sie haben hier etwas Unsinniges geschrieben.

 
Der Ordner "Libraries" wird aus irgendeinem Grund ebenfalls im Protokoll aufgeführt. Warum ist das so? Eugene hat den Verweis auf eine Ressource korrekt beschrieben. Es sollte lokal funktionieren (wenn alle Standardordner, MQL4/Experts, MQL4/Indicators). Wenn Sie den lokalen Start reparieren, wird er höchstwahrscheinlich im Autovalidator funktionieren.
 

Hallo.

Ich versuche, mein Produkt in den Markt hochzuladen. Die automatische Validierung ergibt folgenden Fehler:

test on EURUSD,H1 (netting) 2019.05.01 00:00:30 array out of range in 'Anchored VWAP with no Volume.mq5' (387,30) Dies kann jedoch nicht sein. Ich lege den VWAP dort an, wo die Maus den Startpunkt verschiebt. Das Skript lässt sich ohne Fehler kompilieren, und alles funktioniert einwandfrei. Vielleicht kann die automatische Validierung nicht mit Skripten interagieren, bei denen ich den Startpunkt auswählen muss?

Was könnte sonst der Grund sein? Der Indikator bietet die Wahl zwischen einer Anzeige mit oder ohne Volumen. Standardmäßig ist es "ohne", aber vielleicht läuft der Validator durch alle möglichen Parameter und stolpert über die Berechnung mit Volumina auf Währungspaaren. Was ist zu tun?

 
Anton Polkovnikov:

Hallo.

Ich versuche, mein Produkt in den Markt hochzuladen. Die automatische Validierung ergibt folgenden Fehler:

test on EURUSD,H1 (netting) 2019.05.01 00:00:30 array out of range in 'Anchored VWAP with no Volume.mq5' (387,30) Dies kann jedoch nicht sein. Ich lege den VWAP dort an, wo die Maus den Startpunkt verschiebt. Das Skript lässt sich ohne Fehler kompilieren, und alles funktioniert einwandfrei. Vielleicht kann die automatische Validierung nicht mit Skripten interagieren, bei denen ich den Startpunkt auswählen muss?

Was könnte sonst der Grund sein? Der Indikator bietet die Möglichkeit, zwischen einer Anzeige mit oder ohne Volumen zu wählen. Standardmäßig ist es "ohne", aber vielleicht läuft der Validator durch alle möglichen Parameter und stolpert über die Berechnung mit Volumina auf Währungspaaren. Was ist zu tun?

Versuch, kompilierte Dateien (auch EX4/EX5) und DLLs zu importieren

Programme, die über den Markt vertrieben werden, sollten für die Nutzer garantiert sicher sein. Daher wird jeder Versuch, DLLs oder Funktionen aus kompilierten EX4/EX5-Dateien zu verwenden, als Fehler betrachtet. Solche Produkte werden nicht auf dem Markt veröffentlicht.

Wenn Ihr Programm zusätzliche Indikatoren verwenden muss, die nicht mitgeliefert werden, verwenden SieRessourcen.


Anwenden auf benutzerdefinierte Indikatoren über iCustom()

Wenn Ihr Programm Zugriff auf benutzerdefinierte Indikatordaten benötigt, sollten Sie alle erforderlichen Indikatoren inRessourcen platzieren. Die Produkte vom Markt müssen in jeder unvorbereiteten Umgebung einsatzbereit sein, sie müssen also alles enthalten, was Sie in Ihrer EX4/EX5-Datei benötigen. Empfohlene Artikel zu diesem Thema:


https://www.mql5.com/ru/articles/2555#dll_and_libraries_prohibited

 
Anton Polkovnikov:

test on EURUSD,H1 (netting) 2019.05.01 00:00:30 array out of range in 'Anchored VWAP with no Volume.mq5' (387,30) Dies kann jedoch nicht sein.

Das Array außerhalb des Bereichs in Zeile 387 ist das Zeichen 30. Es steht geschrieben. Wir müssen das Array überprüfen.