Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ich danke Ihnen für Ihre Antwort.
Ich schreibe einen Indikator... leider geht das Konzept des Indikators davon aus, dass zu dem Zeitpunkt, an dem wir zu OnCalculate kommen, das optimale Paar ausgewählt ist, was verdächtig undurchsichtig klingt.
Im Allgemeinen sollten wir in der Funktion OnCalculate bereits die Ergebnisse von Berechnungen und Analysen verwenden, die in On Init durchgeführt wurden.
Wir können diese Berechnungen nicht auf OnCalculate übertragen, da wir nicht die Zeit haben, alle Berechnungen zwischen zwei benachbarten Ticks durchzuführen...
Alles geht gut und leicht von der Hand.
Verschieben Sie die Analyse in eine separate Funktion und rufen Sie diese von OnCalculate aus auf. Wenn keine Daten vorhanden sind, wird OnCalculate beendet und auf den nächsten Tick gewartet.
Die Tatsache, dass der Blinker tatsächlich nach 1-2 Sekunden anspringt, ist kein Problem. Eine andere Möglichkeit, mit stark abhängigen und asynchronen Prozessen zu arbeiten, ist nicht möglich, sondern nur eine "lazy/ondemand" Initialisierung.
Das funktioniert gut und einfach.
Verschieben Sie die Analyse in eine separate Funktion und rufen Sie diese von OnCalculate aus auf. Wenn keine Daten vorhanden sind, wird OnCalculate beendet und auf den nächsten Tick gewartet.
Die Tatsache, dass der Indikator tatsächlich in 1-2 Sekunden anspringt, ist keine große Sache. Ein anderer Weg, um mit stark abhängigen und asynchronen Prozessen zu arbeiten, ist nicht möglich, nur eine faule/bedarfsabhängige Initialisierung.
Ich danke Ihnen für diesen Tipp. Aus irgendeinem Grund ist mir das noch nicht aufgefallen. Ich werde versuchen, mein eigenes "Pseudo-Init" zu schreiben, obwohl es wenig Hoffnung gibt. Ich habe versucht, in OnInit zu warten, es hat nicht funktioniert, ich bekam LastError 4007
ERR_ARRAY_RESIZE_ERROR
4007
Nicht genügend Speicher, um ein Array neu zu verteilen oder Versuch, die Größe eines statischen Arrays zu ändern
Das Array ist dynamisch, d.h. der 2. Teil der Fehlerdefinition über"an attempt to resize a static array" ist weg, und ich kann mir kaum vorstellen,was "insufficient memoryto redistribute an array"bedeutet.
Ich habe versucht, einen Indikator auf der Grundlage eines anderen Indikators zu erstellen. Der erste Indikator wählt ein Paar aus und der zweite arbeitet mit diesem Paar.
Renats Rat hat mir sehr geholfen, ich hatte Probleme mit der Übertragung von iMA-Werten in benutzerdefinierte Puffer, habe den Code von OnInit in eine andere Funktion verschoben und mit zusätzlichen Prüfungen hat alles funktioniert...jetzt arbeite ich daran.
ZS Bitte geben Sie an, wie Sie Ihre eigenen Beiträge im Forum am besten verfolgen können. Wo kann ich alle an mich gerichteten Beiträge (Antworten auf meine Beiträge) sehen?
Ich habe die Neuerungen des MT5 schon lange nicht mehr verfolgt und werde daher wahrscheinlich eine sehr dumme Frage stellen.
Ich starte die Optimierung eines Standard-Expert Advisors, langsam (volle Suche der Parameter), aber es begrenzt diese volle Suche auf einige 10490....
Log ist voll davon: 2012.07.13 21:48:10 Core 5 genetic pass (494, 2560000) tested with error "cannot initialize expert"
Dann 2012.07.13 21:49:26 Tester genetische Optimierung beendet bei Pass 9353 (von 816310000)
Welcher genetische Pass? Welche genetische Optimierung? Volle Überschreitung, richtig?
Ich habe die Fast-Optimierungsmethode(genetischer Algorithmus) ausprobiert und das Gleiche gesehen.
Welchen Artikel soll ich lesen?).
Ich habe die Neuerungen des MT5 schon lange nicht mehr verfolgt und werde daher wahrscheinlich eine sehr dumme Frage stellen.
Ich starte die Optimierung eines Standard-Expert Advisors, langsam (volle Suche der Parameter) und es begrenzt diese volle Suche auf einige 10490....
Welcher genetische Pass? Welche genetische Optimierung? Voller roher Gewalt, richtig?
In der 32-Bit-Version wird der genetische Modus aktiviert, wenn die Anzahl der Durchläufe 1.000.000 überschreitet. Die 64-Bit-Version hat ein Limit von 100.000.000 für volle Brute-Force. Dies ist in der Hilfe beschrieben.
Auf diese Weise wird den Händlern automatisch geholfen, keine offensichtlichen Fehler zu machen.
Log ist vollgepackt mit einigen: 2012.07.13 21:48:10 Core 5 genetic pass (494, 256000000) getestet mit Fehler "cannot initialize expert".
Sie müssen sich den Code ansehen - oder Sie haben bei der Initialisierung von expert Speicherplatz oder etwas anderes vergessen.
In der 32-Bit-Version wird der Genetikmodus aktiviert, wenn die Anzahl der Durchläufe 1.000.000 überschreitet. Die 64-Bit-Version hat ein Limit von 100.000.000 für einen vollständigen Durchlauf. Dies wird in der Hilfe beschrieben.
Dies geschieht, um den Händlern automatisch zu helfen, keine offensichtlichen Fehler zu machen.
Vielen Dank für Ihre Antwort. 100 000 000 sind für mich ausreichend.
Ich muss mir den Code ansehen - oder der Speicher war unzureichend, oder etwas anderes während der Initialisierung des Expert Advisors.
ExpertMACD standard....
https://www.mql5.com/ru/forum/1111/page775#comment_234266
Von Nutzern mit niedrigen Bewertungen, anscheinend sind die Fehler nicht relevant). Dasselbe gilt für das neue Gebäude.
OrderCalcProfit(ORDER_TYPE_BUY, "USDJPY", 0.01, 0.01, 0.02, profit_USDJPY_1 );
OrderCalcProfit(ORDER_TYPE_BUY, "USDJPY", 0.01, 200.01, 200.02, profit_USDJPY_2 );
Print("gewinn_USDJPY_1=", gewinn_USDJPY_1 ," gewinn_USDJPY_2=", gewinn_USDJPY_2 );
(EURUSD,M15) profit_USDJPY_1=500.0 profit_USDJPY_2=0.05
In der Cross-Variante funktioniert es gut.
Welche Ordner müssen bereinigt werden (Protokolle entfernen, ...usw.), um Platz im Terminalverzeichnis zu schaffen. - natürlich die Skripte, Indikatoren, Eulen) zu verlassen, um Platz im Terminalverzeichnis zu schaffen? Beim Testen und Optimieren von Expert Advisors ist das Terminalverzeichnis 80 GB groß geworden... Es ist Zeit, ihn zu reinigen.
Idealerweise sollten wir etwas ähnliches wie 4 - die Datei clear.bat (löscht alles fremde, einschließlich der Geschichte der Zitate für Symbole, reinigt die Protokolle und bringen sie in Übereinstimmung mit der Installationsversion, natürlich, während die Skripte, Indikatoren und Expert Advisors).
Wenn ja, können Sie mir einen Link zu der Beschreibung der MT5-Ordner geben?
Ich werde vielleicht selbst danach suchen und den Inhalt von Ordnern manuell bereinigen, aber genauso kann ich die Batniches für MT5 schreiben, nur für den Fall, dass es etwas Ähnliches gibt...
Ich danke Ihnen.
Welche Ordner müssen bereinigt werden (Protokolle entfernen, ...usw.), um Platz im Terminalverzeichnis zu schaffen. - natürlich die Skripte, Indikatoren, Eulen) zu verlassen, um Platz im Terminalverzeichnis zu schaffen? Beim Testen und Optimieren von Expert Advisors ist das Terminalverzeichnis 80 GB groß geworden... Es ist Zeit, ihn zu reinigen.
Idealerweise sollten wir etwas ähnliches wie 4 - die Datei clear.bat (löscht alles fremde, einschließlich der Geschichte der Zitate für Symbole, reinigt die Protokolle und bringen es in Übereinstimmung mit der Installationsversion, natürlich, während die Skripte, Indikatoren und Expert Advisors).
Wenn ja, können Sie mir einen Link zu der Beschreibung der MT5-Ordner geben?
Ich kann selbst danach suchen und den Inhalt von Ordnern manuell bereinigen, aber genauso kann ich die gleiche Batch-Datei für MT5 schreiben, nur für den Fall, dass es etwas Ähnliches gibt...
Ich danke Ihnen.
MetaTrader 5 Hilfe → Erste Schritte → Verzeichnis- und Dateistruktur
MetaTrader 5 Hilfe → Erste Schritte → Verzeichnis- und Dateistruktur