eine Handelsstrategie auf der Grundlage der Elliott-Wellen-Theorie - Seite 273

 
<br / translate="no"> Die Hearst-Berechnung für 3000 Takte in MQL4 hat mich etwa 40 Millisekunden gekostet. Wahrscheinlich meinen wir unterschiedliche Dinge (Wort "Berechnung"), daher wäre es gut, wenn Sie mir den Algorithmus Ihrer Berechnung im Allgemeinen (vorzugsweise) oder den Code in MathCad (falls erforderlich, kann ich auch Matcad verwenden) schicken könnten.

Irgendetwas stimmt mit den Berechnungen auf jeden Fall nicht. Meine E-Mail lautet rosh AT metaquotes DOT ru.


Ich habe mich vielleicht wieder falsch ausgedrückt. Ich meinte nicht eine Probe - 600 Zählungen für 20 Minuten. Grob gesagt 500 Iterationen, d.h. erste Probe für die tote Zone [0; 100], zweite [0; 101], dann [0; 102], [0; 103].... [0; 600]. Außerdem handelt es sich um MathCAD, und Produkte dieser Klasse sind nicht die besten, wenn es um optimale Berechnungen geht. Die Entwickler haben erst in Version 13, die ich benutze, eine ernsthafte Optimierung eingeführt. Davor konnte selbst die numerische Lösung einer einfachen Gleichung viel Zeit in Anspruch nehmen.

Meine Berechnung des Indexes weicht etwas von den verfügbaren Quellen ab, wobei ich nicht von der klassischen Ideologie von Hearst abweiche. Mit anderen Worten: Ich kann nicht sagen, dass ich Statistiken nach Namen berechne. :о) Der Algorithmus selbst ist optimal geschrieben, geprüft und erneut geprüft.

PS: Vielen Dank für Ihre Bereitschaft zu helfen. Es ist sehr gut möglich, dass dies erforderlich sein wird. Ich werde den Algorithmus weitergeben, wenn ich in naher Zukunft einen besseren Mechanismus implementieren kann. Ich habe ein paar Ideen.
 
<br/ translate="no"> Die Hearst-Berechnung für 3000 Takte in MQL4 hat mich etwa 40 Millisekunden gekostet. Wahrscheinlich meinen wir unterschiedliche Dinge damit (das Wort Berechnung), wenn Sie mir also in allgemeinen Worten Ihren Berechnungsalgorithmus (vorzugsweise) oder Code in MathCad (falls nötig, werde ich auch Matcad verwenden) schicken können.


Es gibt eine ganze Reihe von Algorithmen. Ich habe in meinem Archiv eine Berechnung des Singularitätsspektrums gefunden. Sie wird in vielen Büchern konzeptionell beschrieben, z. B. von Feder, Bozhokin und vielen anderen. Die Anzahl der Iterationen für eine Stichprobe ist recht anständig. Insbesondere wird ein iterativer Prozess der Potenzierung durchgeführt, um die "Bewegung" zu schätzen, die jedes Intervall beiträgt, wodurch verschiedene Arten des Signalverhaltens aufgedeckt werden (z. B. tragen "Jetzt"-Intervalle mit größeren Abweichungen vom Trend mehr "Bewegung" bei usw.).

Sie können alles nachlesen, aber ich möchte Sie an das Hauptmerkmal erinnern - der Alpha-Wert, bei dem F(alpha) das Maximum erreicht, ist der verallgemeinerte Hurst-Index (manchmal auch der Skyline-Parameter)


Berechnung für die Stichprobe von 500 Stichproben. Der verallgemeinerte Hurst-Index ist gleich 0,6.


Und hier ist die Reihe selbst (bis zur senkrechten roten Linie), für die die Berechnung durchgeführt wurde, und was später geschah.



Ich bin nicht ins "Geschäft" eingestiegen (obwohl es sehr interessant ist), weil ich einige Dinge noch nicht begriffen habe, nämlich die Methode zur Beseitigung lokaler Trends. Die Verwendung unterschiedlicher Methoden führt zu unterschiedlichen Merkmalen der Reihen. Eine weitere Besonderheit ist, dass es anständige Proben erfordert.

zu Rosh, solandr

Ich habe eine Frage für die Zukunft. Ich bin besorgt über die Tatsache, dass der Expert Advisor für eine objektiv lange Zeit "außer Betrieb" sein wird und daher nicht in den Prozess der Überwachung der laufenden Aufträge eingebunden ist. Ich nehme an, dass der Aufruf des Skripts auch nicht helfen wird - der Expert Advisor wird warten, bis das Skript ausgeführt wird. Also fragte ich mich, ob ich eine externe (oder globale, was ist besser?) Variable einführen sollte, zum Beispiel:

extern string SIGNAL_FORECAST



Wenn ich ein Signal erhalte, dass es aus irgendeinem Grund keine Prognose gibt, setzt der Expert Advisor den entsprechenden Wert dieses Parameters mit der Anforderung für seine Ausführung. Zu diesem Zeitpunkt liest ein Indikator (er macht keine Vorhersagen, sondern hat Berechnungsfunktionen) diese Variable ständig aus. Sobald sie einen Prognoseausführungsauftrag erhält, initialisiert sie die Berechnung, schreibt aber vorher "Berechnung gestartet" in die Variable. Nach der Ausführung "Berechnung abgeschlossen". Im Expert Advisor ist zu lesen, dass die Berechnung unter .... durchgeführt wird.

Wird das alles funktionieren? D.h. der Expert Advisor wird theoretisch von der Aufgabe entlastet, alles zu berechnen?

 
Hallo Sergej. Mir scheint, dass dies am besten in Form von Expert+Expert- oder Expert+Script-Bündeln geschehen kann. Die zweite Option ist meiner Meinung nach vorzuziehen.
Expert Advisor führt die Berechnungen durch und speichert das Signalflag und die relevanten Parameter in einer Reihe von globalen Variablen, sobald das Signal empfangen wird. Das Skript öffnet die Aufträge gemäß den erhaltenen Anweisungen und führt sie aus. Das Skript läuft in einer Endlosschleife, wobei sich die Frequenz dieser Schleife je nach Situation ändert. Der Expert Advisor läuft natürlich erst nach Abschluss der Berechnungen, beim Eintreffen eines Ticks.

Der Indikator ist hier nicht geeignet, weil (soweit ich weiß) seine Berechnungen unterbrochen werden, wenn ein neuer Tick kommt.

Auf jeden Fall habe ich beschlossen, genau diesem Schema zu folgen.
 
Experten, Skripte und Indikatoren werden in MT4 parallel berechnet, d.h. gleichzeitig mit der entsprechenden Aufteilung der verfügbaren CPU-Ressourcen. Sie können 2 Expert Advisors organisieren, von denen einer mehrere Stunden lang Berechnungen durchführt, während der andere ein Executor ist, der über globale Variablen des Terminals die Ergebnisse des vorherigen Berechnungszyklus des ersten Expert Advisors erhält und die notwendigen Handelsoperationen durchführt. Beide Expert Advisors arbeiten unabhängig voneinander (in Bezug auf die Ausführung). Der erste Expert Advisor wird beim Eintreffen des ersten Ticks für einige Stunden gestartet, der zweite wird bei jedem neuen Tick oder z.B. nach einer bestimmten Zeitspanne (im Falle einer Endlosschleife mit der notwendigen Pause) gestartet.
 
Hallo Sergej. Meiner Meinung nach ist es am besten, wenn Sie es als Expert+Expert- oder Expert+Script-Bündel machen. Die zweite Option ist meiner Meinung nach vorzuziehen. <br/ translate="no">.

Die zweite Variante hat den Nachteil, dass das gleiche Skript bei jedem weiteren Start des Terminals manuell an das Diagramm übergeben werden muss. Wir werden dessen sehr schnell überdrüssig werden. Es ist besser, die erste Variante zu verwenden. Sie könnten auch genau die gleiche Endlosschleife in der Funktion start() organisieren wie im Skript.
 
an Yurixx, Solandr

Vielen Dank für den Ratschlag. Ich arbeite schon lange nicht mehr mit MT, bei meinen Recherchen habe ich vergessen, dass Skripte in einer Schleife laufen können und auch an zwei Expert Advisors habe ich nicht gedacht.

Andererseits kann man aber auch keinen Tester auf ein solches Astrolabium setzen, oder? Obwohl es wahrscheinlich nicht so entscheidend ist.

Nochmals vielen Dank. :о)))
 
Was passiert, wenn Sie ein Skript über den Indikator ausführen? In diesem Fall werden die Berechnungen durch neu eintreffende Daten für den Indikator unterbrochen.
 
2 grasn:
Dennoch ist Ihre Berechnungszeit zu lang. Ich denke, in dieser Situation wäre es besser, sie außerhalb von MT zu machen (immerhin ist C 17 Mal schneller als MQL4). Ich weiß nicht, ob Matcad C-Code generieren kann, aber das wäre sehr praktisch. Das Ergebnis wird in eine Datei geschrieben und vom Expert Advisor gelesen. Diese Datei kann eine Art Schritt-für-Schritt-Anleitung für den Expert Advisor sein (generell hat mich der Datentransfer zum MT bisher nicht sonderlich interessiert, vielleicht gibt es andere Wege). Nachdem Sie die "Anweisung" für ein bestimmtes Zeitintervall geschrieben haben, können Sie den Tester verwenden. Aber wird der Tester die Kombination Expert Advisor+Expert oder Expert Advisor+Skript unterstützen? Ich vermute, dass dies nicht der Fall sein wird.
 
Übrigens, soweit ich weiß, werden die Berechnungen jetzt nicht unterbrochen. Sie wird mit den Datenwerten zu Beginn der Berechnung durchgeführt, wonach das Terminal zu neuen Daten springt.
 
aufrichtig

2 grasn:
Dennoch ist Ihre Berechnungszeit zu lang. Ich denke, in dieser Situation wäre es besser, sie außerhalb von MT zu machen (immerhin ist C 17 Mal schneller als MQL4). Ich weiß nicht, ob Matcad C-Code generieren kann, aber es wäre nützlich. Das Ergebnis wird in eine Datei geschrieben und vom Expert Advisor gelesen. Diese Datei kann eine Art Schritt-für-Schritt-Anleitung für den Expert Advisor sein (generell hat mich der Datentransfer zum MT bisher nicht sonderlich interessiert, vielleicht gibt es andere Wege). Nachdem Sie die "Anweisung" für ein bestimmtes Zeitintervall geschrieben haben, können Sie den Tester verwenden. Aber wird der Tester die Kombination Expert Advisor+Expert oder Expert Advisor+Skript unterstützen? Ich vermute, dass dies nicht der Fall sein wird.


Das stimmt, die Berechnungszeit ist ziemlich lang, ich werde mich darum kümmern. MathCAD kann keinen C-Code generieren, aber MathLab kann es (wenn sie natürlich nicht lügen :o) Die Tests in MT werden benötigt, um mehr oder weniger geerdete Ergebnisse aus Handelssicht zu erhalten (und nicht mehrere Prognosetests in MathCAD, obwohl positiv). Nach dem Testen in MT werde ich darüber nachdenken, was als Nächstes zu tun ist, einschließlich der Verlagerung der Berechnungen auf einen separaten Server, über das, was ich zuvor geschrieben habe. Aber es ist wie beim Klettern: Je mehr Knoten im Seil, desto schlimmer ist es.
Grund der Beschwerde: