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

 
Ein wichtiger Punkt - werden Objekte nicht erstellt oder gezeichnet? Können die Eigenschaften von nicht gezeichneten Objekten gelesen werden?
 
Hier ist eine neue Überraschung - das Zeichnen von Pfeilen ändert nicht die Zeit des Laufs, das ist interessant.
Die Zeit beträgt ca. 4 Minuten, sie hat sich nicht wirklich verändert.

2006.07.08 19:35:45 HistoryChannells EURUSD,M30: deinitialisiert<br / translate="no"> 2006.07.08 19:35:45 HistoryChannells EURUSD,M30: Deinit() läuft
2006.07.08 19:35:45 PM HistoryChannells EURUSD,M30: Optimierte Algorithmuszeit 261281 ms
2006.07.08 19:31:24 HistoryChannells EURUSD,M30: initialisiert
2006.07.08 19:31:19 HistoryChannells EURUSD,M30: erfolgreich geladen
2006.07.08 19:31:11 Kompilieren von 'HistoryChannells'
 
Ein wichtiger Punkt - werden Objekte nicht erstellt oder gezeichnet? Können die Eigenschaften von nicht gemalten Objekten gelesen werden? <br / translate="no">


Objekte werden erstellt - ich habe es extra überprüft, man kann sogar die Eigenschaft des "unsichtbaren" Pfeils sehen. Hier ist der Code:
     centerLR=BestChannels[0][2]*(lastBar-1)+BestChannels[0][3]; ObjectCreate("up "+UpArrowCounter,OBJ_ARROW,0,Time[lastBar-1],centerLR+BestChannels[0][5]);
      ObjectSet("up "+UpArrowCounter,OBJPROP_ARROWCODE,158); ObjectSet("up "+UpArrowCounter,OBJPROP_COLOR,Red);
      ObjectCreate("down "+DownArrowCounter,OBJ_ARROW,0,Time[lastBar-1],centerLR-BestChannels[0][5]); ObjectSet("down"+DownArrowCounter,OBJPROP_ARROWCODE,158); ObjectSet("down "+DownArrowCounter,OBJPROP_COLOR,Red); UpArrowCounter++; DownArrowCounter++;



aber hier ist die Zeichnung:

 
Hmmm... es stellt sich heraus, dass es mein Fehler war, ich muss es morgen überprüfen. Das ist genug für heute.
 
Ja, ich habe es auch mit diesem Code überprüft
 for (i=0; i<50000;i++) { obj_name = i; ObjectCreate(obj_name,OBJ_TREND,0,Time[0],i,Time[1],i); ObjectSet(obj_name, OBJPROP_STYLE, DRAW_NONE);
    j = ObjectGet(obj_name, OBJPROP_PRICE1); Print(j); } for (i=0; i<50000;i++) { obj_name = i; ObjectDelete(obj_name); }


 
<br / translate="no">
Bilder sollten nur in lateinischen Schriftzeichen und vorzugsweise im *.png-Format sein (gif wird nicht über einen Link in diesem Forum angezeigt).


Es ist alles so gemacht, ich sage im Editor-Fenster wird es normal angezeigt, und sobald ich die Schaltfläche "Hinzufügen" oder "Speichern" drücken, je nachdem, was ich hinzufügen oder ändern Sie die Nachricht, die es verschwindet und sogar verschwindet, dass ich getippt :(
 
Ok, ich bin den umgekehrten Weg gegangen (sie haben angefangen, mich für 30 Sekunden wegzuschicken, obwohl 10 Minuten warten auch nicht hilft :( ), aber egal, ich wollte nur zeigen, dass ich im Moment einen Juden habe, aber das ist wahrscheinlich nicht relevant
 
Hier ist eine neue Überraschung - das Zeichnen von Pfeilen verändert die Laufzeit nicht, was interessant ist.

Je nachdem, wie ich den hier beschriebenen Algorithmus ausführe, beträgt die Ausführungszeit entweder 0 oder 16 ms. Ich vermute, dass der Algorithmus in einigen Fällen kontinuierlich ausgeführt wird, während er in anderen Fällen unterbrochen wird und der gesamte Terminalzyklus ausgeführt wird (weil sich die Zahlen stabil wiederholen). Kann die Auslosung analog dazu nicht erst nach dem Ende der Berechnungen erfolgen?
 
Vladislav 02.06.06 11:26 <br / translate="no"> Was die praktische Umsetzung bzw. die zugrundeliegenden Methoden betrifft, so ist alles ganz einfach: Die quadratische Funktion hat Koeffizienten, die man optimal auswählen muss - die Regression liefert eine lineare, genauere Schätzung für ihre Konstruktion. Und dementsprechend können Sie abschätzen, bis zu welchen Grenzen (Amplitudenspannen) in der Taylor-Erweiterung (Konstruktion der quadratischen Form) dieser Koeffizient verwendet werden kann. Was die anderen Koeffizienten betrifft, so sollten Sie selbst nachdenken. Und um das Minimum der potentiellen Energie zu finden, muss man nicht die Flugbahn des Preises kennen, sondern - was viel wichtiger ist - den Potentialgradienten ;). Das heißt, der dynamische Zustand seines Null-Potentials - man muss etwas für das Null-Potential zählen. Und all dies reicht aus, um abzuschätzen - eine direkte Differenzierung ist nicht erforderlich.
Im übertragenen Sinne, "an den Fingern", unter Anwendung geometrischer Bilder:
Stellen Sie sich vor, dass eine Kugel auf einer Fläche (analog zu einem unwegsamen Gelände) rollt (das ist der Preis). Man muss nicht die Feinheiten der Ballkonstruktion kennen, um die Anziehungspunkte der Flugbahn des Balls zu bestimmen. Viel nützlicher ist es, die Eigenschaften dieses "unwegsamen Geländes" zu kennen.

Wladislaw 14.06.06 21:06
Ganz richtig - ich habe sogar darüber geschrieben, dass das Minimum des potenziellen Energiefunktionals als eines der Kriterien für die Kanalauswahl dient. Und es ist eine Eigenschaft der Potenzialität des Preisfeldes, während ich nicht nach der Trajektorie selbst suche, da (wiederum) alle Trajektorien, die in das Konfidenzintervall passen, für eine gegebene Wahrscheinlichkeit als gleichwertig betrachtet werden müssen. Das heißt, dass die Konstruktion von Projektionen zunächst auf die Auswahl der Stichprobe und dann auf die lineare Algebra zurückgeht.

In Fortsetzung des Themas, über das ich bereits auf Seite 33 geschrieben habe, hatte ich eine weitere Idee über das Finden eines Kanals mit minimaler potentieller Energie in einer Reihe von aufeinanderfolgenden Kanälen, die die bereits genannten Bedingungen erfüllen. Was erhalten wir, wenn wir einen linearen Regressionskanal konstruieren? Wir haben eine durch ihre Grenzen begrenzte Region, innerhalb derer sich der Preis nach Belieben bewegen kann. Die einzige Bedingung, die erfüllt ist, ist die, dass der Preis innerhalb dieses Kanals bleibt. Außerdem sagte Vladislav , dass alle Trajektorien, die in das Konfidenzintervall fallen, bei einer bestimmten Wahrscheinlichkeit als gleichwertig angesehen werden müssen. Dann gehen wir davon aus, dass sich der Preis während seiner Bewegung durch eine quadratische Funktion bewegen könnte - d.h. wir verstoßen nicht gegen die obige Aussage. Zumal diese Aussage von der Annahme ausgeht, dass das Preisfeld potenziell ist. Das heißt, wir können für jeden Zeitpunkt (und für jede Stichprobe) eine annähernde Parabel bilden und sagen, dass der Preis auf der Grundlage dieser Stichprobe eine solche Flugbahn hatte, um die er sich in dieser Stichprobe bewegte. Bildlich gesprochen handelt es sich dabei um eine parabolisch abfallende Mulde und eine Kugel mit mehreren Inhomogenitäten auf ihrer Oberfläche. Was können wir nun als den dynamischen Zustand des Nullpunktspotentials annehmen? Da die Kugel vom Anfang des Kanals zu seinem Ende rollt, indem sie sich entlang unserer bedingten schrägen Parabelrinne bewegt, liegt das Minimum der potentiellen Energie für diese Rinne natürlich zum aktuellen Zeitpunkt auf der Bahn dieser Rinne, und folglich wirkt zum aktuellen Zeitpunkt die Kraft (das Potentialgefälle) auf die Kugel ein, die sie auf die Bahn der Parabelrinne verschiebt (Preis). Wie findet man nun den Betrag und die Richtung dieser Steigung? Es ist ganz einfach: Finden Sie die Parabel nach der ISC-Methode und ermitteln Sie dann die Differenz zwischen dem aktuellen Kurs und dieser Parabel (Minimum des Potenzials). Natürlich kann dieser Unterschied sowohl positiv als auch negativ sein. Da der gewählte lineare Regressionskanal der "wahre" Kanal für die Vorhersage sein muss, sollte die Stichprobe sowohl die bekannten Konvergenzbedingungen (RMS<SCO2/3) als auch alle anderen Bedingungen erfüllen, die diese Konvergenz bestätigen. Vladislavs Erwähnung des Minimums der potentiellen Energiefunktion führte mich auf die Idee, dass es dafür notwendig ist, dass die Summe der potentiellen Gradienten für den Kanal, in dem wir diese parabolischen Annäherungstäler bauen, auf denen die Kugel rollt und die die beste Beschreibung unseres unwegsamen Geländes sind, so klein wie möglich sein sollte. Natürlich habe ich sofort versucht, diese Annahme in der Praxis zu überprüfen, und ich teile die Ergebnisse auf diesem Link https://c.mql5.com/mql4/forum/2006/07/min_poten_energy.zip

Was sehen wir auf diesen Diagrammen? Wir können den Kanal einer linearen Regression sehen, der mit der Methode des minimalen RMS in einer Serie gezeichnet wurde, die ich derzeit in meinem Expert Advisor verwende. Auf einem separaten Diagramm zeichnen wir die algebraische (d.h. ich führe die Summierung der Gradienten unter Berücksichtigung ihrer Vorzeichen (+/-) durch) Summe der Gradienten des Kugelpotentials in Bezug auf die für die aktuelle Probe konstruierte Parabellinie. Der Einfachheit halber kann ich sagen, dass hier absolut derselbe Ansatz verwendet wird wie bei der Bestimmung des Hurst-Koeffizienten, mit dem Unterschied, dass anstelle der Annäherung an den linearen Regressionskanal eine Parabel (quadratische Funktion) verwendet wird, und dass die Parabel selbst für alle aktuellen Stichproben konstruiert wird, einschließlich des berechneten Balkens, für den der potenzielle Gradient gesucht wird. Nur für den Fall, dass ich Sie daran erinnere, dass wir zur Ermittlung des Hurst-Koeffizienten eine Stichprobe genommen haben, die den aktuellen Balken nicht enthält.
Die blaue vertikale Linie zeigt das lokale Minimum der algebraischen Summe der Potenzialgradienten für den Kanal an, das genau an diesem Balken beginnt. Wenn Sie sich die Charts von EURUSD und USDCHF genau ansehen, können Sie feststellen, dass die lokalen Tiefststände genau (+/-1 Balken) mit den lokalen Höchst- und Tiefstständen der Kurse übereinstimmen. Den Fehler von 1 bar führe ich auf die Besonderheiten der Probenvorbereitung zurück. Ich wähle (O+H+L+C)/4 Balkenwerte als Beispiel. Wahrscheinlich sollten wir in diesem Fall selektiv entweder Hoch oder Niedrig wählen, was einen Fehler bei der Bestimmung des Kanals mit der geringsten potenziellen Energie definitiv ausschließen würde. Und dann werden die Kanäle in der Serie genau mit denen übereinstimmen, die in dem von Vladislav für USDCHF gezeigten Bild zu sehen sind. Nun, ich werde versuchen, diese Annahme in meinem EA umzusetzen. Ich denke, das kommt der von Vladislav verwendeten und von ihm mitgeteilten Methode der Kanalwahl sehr nahe.

PS: Das Diagramm zeigt das Modul " algebraische Summe der Gradienten" (zur Verdeutlichung). Zur Berechnung des Gradientenpotenzials auf dem aktuellen Balken erstellen Sie eine Parabel für die Probe vom Beginn des Kanals bis zum aktuellen Balken, einschließlich des berechneten Balkens selbst. D.h. wenn Sie 100 Balken auswählen, müssen Sie 97 Parabeln berechnen, denn um eine Parabel mit der ANC-Methode zu bilden, müssen Sie mindestens 4 Proben haben (das habe ich heute experimentell herausgefunden ;o)). Dementsprechend nehme ich einfach die Steigung des Potentials auf den ersten 3 Balken als gleich Null an. Rosh, ich denke, hier können Sie die Berechnungsalgorithmen optimieren, denn die Berechnung einer Parabel dauert einige Male länger als die Berechnung eines linearen Regressionskanals ;o))).
 
А вот и новый сюрприз - рисование стрелочек не меняет времени прогона, это интересно.

Je nachdem, wie ich den hier beschriebenen Algorithmus ausführe, beträgt die Ausführungszeit entweder 0 oder 16 ms. Ich gehe davon aus, dass der Algorithmus in einigen Fällen kontinuierlich ausgeführt wird, in anderen Fällen wird er unterbrochen und ein kompletter Terminalzyklus wird ausgeführt (weil die Zahlen ständig wiederholt werden). Kann die Auslosung analog dazu nicht erst nach dem Ende der Berechnungen erfolgen?



In diesem Link - "MQL4, MQL2, EasyLanguage, Wealth-Lab 3.0 und VC++: Geschwindigkeitsvergleich" - schrieb Renat


Renat 14.01.05 14:18

Einfach, ich konfrontiert mit unzureichenden Verhalten von GetTickCount() mehr als einmal; obwohl, wenn die Ergebnisse von vielen Messungen waren stabil +/- einige kleine Delta, es bestätigt Treue der Tests.


Ja, die Genauigkeit von GetTickCount() springt von 10 auf 16 ms, und wir können damit keine kleinen Zeiträume messen, aber in unserem Fall ist seine Verwendung sinnvoll. Vor allem, wenn sie von fast jedem Code aus so leicht zugänglich ist.