Vergleich von gleitendem Durchschnitt (und anderen Indikatoren) und Fehler - Seite 3

 
Dina Paches:

Danke, Artyom, aber leider hat sich herausgestellt, dass es auch Grenzen haben kann.

Ich hoffe, ich habe niemanden umgebracht?
 
Artyom Trishkin:
Ich hoffe, Sie haben niemanden umgebracht.

Nein. Das hat nichts mit meiner Umgebung zu tun.)

 
Dina Paches:

Ich weiß es nicht. Das hat nichts mit meiner Umgebung zu tun).

Und was ist mit einer Wanze? Nein? Schade... ;)
 
Artyom Trishkin:

Nun, erstens ergibt die Differenz zweier normalisierter Werte letztendlich einen nicht normalisierten Wert. Sie müssen die normalisierte Differenz überprüfen.

Zweitens, wenn Sie Crossovers innerhalb eines Balkens abfangen wollen, nehmen Sie die Werte aller Ticks auf dem Nullpunkt und dem ersten Balken - Sie werden eine Menge abfangen ... ...werden Sie ein wahres Vergnügen erleben...

Wenn Sie durch die Eröffnung eines Balkens testen, sollte der Expert Advisor natürlich die Eröffnung eines neuen Balkens verfolgen und im Nachhinein auf Überkreuzungen prüfen.

Entscheiden Sie zunächst für sich selbst, ob Sie bei der Eröffnung des Balkens oder bei jedem Tick handeln, und schreiben Sie dann Ihren Code. Prüfen Sie sie also auf die gleiche Weise.

Erstens habe ich im ersten Beitrag geschrieben, dass ich nur bei Bareröffnung handle. Der Handel mit Zecken hat eine gewisse Raffinesse. Sie können ein Signal erhalten, aber es wird kein Crossover auf dem Diagramm angezeigt, da es nur zu bestimmten Kursen gezeichnet wird (Eröffnungs-, Schlusskurs usw.). Sie wird nicht von Zecken gezeichnet. Erklären Sie in diesem Fall dem Laien, dass es zwar keinen Crossover auf dem Chart gibt, aber weil er spezifisch für das Zeichnen von Muwings bei der Visualisierung nur durch weit auseinander liegende Werte ist (wiederum Eröffnungs- und Schlusskurse, etc. - Annäherung, falls Sie dieses Wort schon einmal gehört haben) und nicht nach Ticks. Zweitens ist die Differenznormierung unsinnig. Sie werden NIEMALS im Voraus wissen, auf welches Vorzeichen Sie normalisieren müssen, um nicht genau 0 zu erhalten (dummerweise werden nicht alle signifikanten Stellen abgeschnitten). Ich beschäftige mich seit geraumer Zeit mit dem Programmieren, und in diesem Zusammenhang verstehe ich auch recht gut etwas von Computermathematik (in meinem Hauptberuf - Modellierung von Physik, wo ich ständig mit der Genauigkeit von Berechnungen zu kämpfen habe). In der Tat ist die Normalisierung im Allgemeinen eine große Vereinfachung, wenn Sie sich nicht mit den Feinheiten der Mathematik, den Fehlern usw. befassen wollen. Wenn Sie sich für einen solchen Guru halten und nicht bereit sind, sich die Mühe zu machen, das ganze Thema sorgfältig zu lesen und dann Schlussfolgerungen zu ziehen, dann ist das eine Sache. Wenn das nicht der Fall ist und Sie auch bei der Eröffnung eines neuen Balkens handeln, dann testen Sie Ihren Roboter auf dem Balken vom 29.07.2015 um 3:20 Uhr mit den Parametern der beiden SMAs 5 und 34, die auf den Schlusskurs angewandt werden, auf einem Zeitrahmen von einer Minute. Das ist genau die Situation, in der sich die Muvings innerhalb desselben Balkens zweimal kreuzen. Und diese Situation ist unrealistisch, wenn man nicht auf Basis von Ticks handelt. Wird Ihr Handelsroboter beide Signale empfangen? Und was am wichtigsten ist: Die Antwort auf die Frage, warum bei ein und demselben Balken die Differenz der Muwings (oder vielmehr ihre Anfangswerte) zu verschiedenen Zeiten nicht gleich ist, wurde noch nicht gegeben (nur Alexey Lebedev hat es versucht, vielen Dank dafür, aber es ist nur eine Vermutung...). Und es ist unmöglich, diese Frage zu beantworten, ohne die Prinzipien der iMA-Funktion zu kennen.

P.S. Nur zum Plaudern: Ich glaube, es gibt spezielle Threads im Forum, wenn man nicht zum Kern des Problems vordringen will.

 
Dina Paches:

Danke, Artyom, aber leider hat sich herausgestellt, dass es auch Grenzen haben kann.

Natürlich danke ich für den Rat, aber ich kann die Hilfe selbst lesen. Und noch einmal: Computermathematik ist nicht an eine bestimmte Programmiersprache gebunden. Es sind genau die Rechenfehler, mit denen Sie zu kämpfen haben.
 
gammaray:
...

Erfinden Sie das Hyperboloid immer wieder neu. Bei mir funktioniert es immer und wird korrekt gezählt. Ach ja, tut mir leid, ich bin kein Guru in Ihrer Rechenmathematik, ich erfinde keinen Mist - ich mache Programme für MT4 und MT5. Und Sie werden immer schlauer, wenn Sie nicht hören wollen, was man Ihnen sagt (und es geht nicht um ein Lehrbuch).

Ich wiederhole: Wenn Sie bei der Eröffnung eines neuen Balkens handeln, stellt sich die Frage, warum Sie ein Kreuz innerhalb des Balkens benötigen (ist das für Sie von Bedeutung? Wenn ja, werde ich Sie beraten, wie Sie es tun können, wenn nicht - vergessen Sie es).

Ich werde meinen Roboter nicht für Ihre Zeitreihen verwenden - ich habe den Handel mit MAHs schon vor langer Zeit aufgegeben. Und die Tatsache, dass MAEs die Null-Linie überzeichnen, wenn sie mit allen Preisen außer dem Eröffnungskurs berechnet werden, ist selbst einem Schuljungen bekannt. Wozu müssen Sie jemandem erklären, dass es da war und jetzt weg ist, wenn Sie bei der Eröffnung einer Kerze handeln? Also bei der Eröffnung und die Daten von der MAA nehmen.

Wo haben Sie das Problem gefunden? Hier ist Ihr Kreuz:


Können Sie mir einen Code nennen, mit dem ich diese Kreuzung korrekt identifizieren kann?

 
Artyom Trishkin:

Erfinden Sie das Hyperboloid immer wieder neu. Bei mir funktioniert es immer und wird korrekt gezählt. Oh, ja, tut mir leid, ich bin kein Guru in Ihrer Rechenmathematik, ich erfinde keinen Mist - ich mache Programme für MT4 und MT5. Und du wirst immer schlauer, weil du nicht hören willst, was man dir sagt (und es geht nicht um ein Lehrbuch).

Ich wiederhole: Wenn Sie bei der Eröffnung eines neuen Balkens handeln, stellt sich die Frage: Wozu brauchen Sie ein Kreuz innerhalb des Balkens (spielt das für Sie eine Rolle? Wenn ja, gebe ich Ihnen Tipps, wie Sie es machen können, wenn nicht - vergessen Sie es).

Ich werde meinen Roboter nicht für Ihre Zeitreihen verwenden - ich habe den Handel mit MAHs schon vor langer Zeit aufgegeben. Und die Tatsache, dass MAEs die Null-Linie überzeichnen, wenn sie mit allen Preisen außer dem Eröffnungskurs berechnet werden, ist selbst einem Schuljungen bekannt. Wozu müssen Sie jemandem erklären, dass es da war und jetzt weg ist, wenn Sie bei der Eröffnung einer Kerze handeln? Also bei der Eröffnung und die Daten von der MAA nehmen.

Wo haben Sie das Problem gefunden? Hier ist Ihr Crossover:


Können Sie einen Code vorschlagen, mit dem diese Kreuzung korrekt identifiziert werden kann?

Ich habe das Hyperdoloid nicht erfunden. Wenn ich sie erfinden wollte, hätte ich Sie gar nicht gefragt. Und ich bin nicht schlau, ich gebe Gegenbeispiele (einschließlich der von Ihnen bevorzugten Normalisierung). Bezüglich der Übergänge innerhalb eines Balkens. Die primitivsten TS auf MA offenen Trades an ihrem Schnittpunkt. Bei der nächsten Kreuzung in die entgegengesetzte Richtung wird zunächst der an der alten Kreuzung eröffnete Handel geschlossen und ein neuer, entgegengesetzter Handel eröffnet. Wenn ich einen Crossover verpasse (und im Falle eines Crossovers innerhalb des Balkens ist das zweimal der Fall), dann verpasse ich ein Signal. Und dementsprechend schließe ich den aktuellen Handel nicht. Und mein Roboter hat zwei aktive Trades, obwohl es immer einen Trade in diesem TS geben sollte. Aus diesem Grund ist jede Überschneidung wichtig. Ferner ist der Preis bei der Eröffnung einer Kerze zu beachten. In diesem Fall wird der größte Teil der Crossover-Signale übersehen, wenn wir beispielsweise die MA-Werte zu Schlusskursen nehmen. Ein einfaches Beispiel - wir nehmen den MA-Schlusskurs (es spielt keine Rolle, welchen man für einen neuen Balken nimmt, da er gerade erschienen ist; alle МА-Werte sind gleich). Stellen Sie sich eine Situation vor, in der die MAs irgendwo in der Mitte des soeben erschienenen Balkens gekreuzt werden, aber zum Eröffnungskurs nicht gekreuzt werden. Beim nächsten neuen Balken geht dieser Schnittpunkt ganz verloren, weil wir den Schlusskurs des vorherigen Balkens nehmen (und der hat sich irgendwo zwischen dem Eröffnungs- und dem Schlusskurs gekreuzt). Die Signale kommen nur in dem seltenen Fall, der ursprünglich von mir beschrieben wurde, wenn der MA genau am Schlusskurs des Balkens kreuzt. Das bedeutet, dass, wenn der aktuelle Balken geöffnet ist, bereits eine Einschränkung besteht, dass МА auf die offenen Preise angewendet werden sollte.

Ich habe mich mit dem von mir genannten Beispiel befasst, indem ich eine nicht-strikte Ungleichung eingeführt habe. Versuchen Sie, den Balken in meinem vorherigen Beitrag zu testen (wo es zwei MA Crossovers in einem Balken gibt) und sehen Sie, ob Ihr Roboter diese Crossovers erkennt? Wenn es nur funktioniert, wenn ein Balken erscheint, ist das unmöglich. Nur wenn es nach Zecken funktioniert. Und ich habe bereits die Fallstricke beschrieben, die dort lauern

 

Beim Vergleich zweier reeller Zahlen ist es nie notwendig, etwas zu normalisieren.

Wenn Zahlen wirklich gleich sind, werden sie auch gleich im Speicher abgelegt. Tatsächlich ist es gerade diese Eigenschaft, die die Existenz von Rechenmaschinen ermöglicht.

Daher sind Vergleiche der Form if(a<b) oder if(a==b) in jedem Fall korrekt und es ist keine Normalisierung erforderlich.

Wenn der wissbegierige Geist eines Forschers einen Widerspruch zu dieser Regel findet, bedeutet dies, dass entweder seine Maschine nicht in Ordnung ist oder sein Geist. Einer von beiden.

Hilfe und Dokumentation sollten natürlich zumindest ab und zu gelesen werden (sie wurden auch von Humanoiden wie uns geschrieben), aber es ist notwendig, seine eigenen vernünftigen Überlegungen anzustellen.

 
gammaray:

Ich habe das Hyperdoloid nicht erfunden. Wenn ich etwas erfinden wollte, würde ich hier keine Fragen stellen. Und ich bin nicht schlau, sondern gebe Gegenbeispiele (auch für Ihre Lieblingsnormierung). Bezüglich der Übergänge innerhalb eines Balkens. Die primitivsten TS auf MA offenen Trades an ihrem Schnittpunkt. Bei der nächsten Kreuzung in die entgegengesetzte Richtung wird zunächst der an der alten Kreuzung eröffnete Handel geschlossen und ein neuer, entgegengesetzter Handel eröffnet. Wenn ich einen Crossover verpasse (und im Falle eines Crossovers innerhalb des Balkens ist das zweimal der Fall), dann verpasse ich ein Signal. Und dementsprechend schließe ich den aktuellen Handel nicht. Und mein Roboter hat zwei aktive Trades, obwohl es immer einen Trade in diesem TS geben sollte. Aus diesem Grund ist jede Überschneidung wichtig. Ferner ist der Preis bei der Eröffnung einer Kerze zu beachten. In diesem Fall wird der größte Teil der Crossover-Signale übersehen, wenn wir zum Beispiel die MA-Werte zu Schlusskursen nehmen. Ein einfaches Beispiel - wir nehmen den MA-Schlusskurs (es spielt keine Rolle, welchen man für einen neuen Balken nimmt, da er gerade erschienen ist; alle МА-Werte sind gleich). Stellen Sie sich die Situation vor, dass die MAs irgendwo in der Mitte des neu erschienenen Balkens gekreuzt werden, aber zum Eröffnungskurs werden sie nicht gekreuzt. Beim nächsten neuen Balken geht dieser Schnittpunkt ganz verloren, weil wir den Schlusskurs des vorherigen Balkens nehmen (und die beiden haben sich irgendwo zwischen dem Eröffnungs- und dem Schlusskurs gekreuzt). Die Signale kommen nur in dem seltenen Fall, der ursprünglich von mir beschrieben wurde, wenn der MA genau am Schlusskurs des Balkens kreuzt. Das bedeutet, dass, wenn der aktuelle Balken geöffnet ist, bereits eine Einschränkung besteht, dass МА auf die offenen Preise angewendet werden sollte.

Ich habe mich mit dem von mir genannten Beispiel befasst, indem ich eine nicht-strikte Ungleichung eingeführt habe. Versuchen Sie, den Balken in meinem vorherigen Beitrag zu testen (wo es zwei MA Crossovers in einem Balken gibt) und sehen Sie, ob Ihr Roboter diese Crossovers erkennt? Wenn es nur funktioniert, wenn ein Balken erscheint, ist das unmöglich. Nur wenn es nach Zecken funktioniert. Und dort habe ich bereits die Fallstricke beschrieben

Achten Sie bei jedem Tick auf Überkreuzungen. Was ist das Problem?
 
Andrey Dik:

Beim Vergleich zweier reeller Zahlen ist es nie notwendig, etwas zu normalisieren.

Wenn Zahlen wirklich gleich sind, werden sie auf die gleiche Weise im Speicher abgelegt. Tatsächlich ist es genau diese Eigenschaft, die die Existenz von Rechenmaschinen möglich macht.

Daher sind Vergleiche der Form if(a<b) oder if(a==b) in jedem Fall korrekt und es ist keine Normalisierung erforderlich.

Wenn der wissbegierige Geist eines Forschers einen Widerspruch zu dieser Regel findet, bedeutet dies, dass entweder seine Maschine nicht in Ordnung ist oder sein Geist. Einer von beiden.

Hilfe und Dokumentation müssen sicherlich zumindest manchmal gelesen werden (sie wurden auch von Menschen geschrieben, wie wir es sind), aber man muss eigene vernünftige Überlegungen anstellen.

Wenn beim Vergleich von Zahlen vom Typ Double mit einer der in der Dokumentation vorgeschlagenen Methoden keine Normalisierung erforderlich wäre, würden sich solche Fragen auch nicht stellen.

Und ich muss keine Normalisierung verwenden, um die erforderliche Genauigkeit bei der Auslösung von Bedingungen in meinen Codes zu erreichen. Ganz zu schweigen von der Tatsache, dass die Verwendung der Normalisierung von Werten auf verschiedene Dezimalstellen beim Vergleich, , einfach an sich bequem und erforderlich sein kann, wenn die Vergleichsbedingungen auf der Grundlage der zu lösenden Aufgaben festgelegt werden.

P./S.: Aber im Allgemeinen habe ich es in diesem Thread und davor erwähnt:

Über die Möglichkeit, mit Hilfe der Normalisierung das erforderliche Genauigkeitsniveau von Vergleichen (und/oder Ausgabewerten) und/oder tolerierbaren Fehlern für bestimmte Aufgaben und Zwecke einzustellen, was wiederum unter anderem ermöglicht, dass die Programmbedingungen genau dort und so funktionieren, wie es bei der Vorgabe bestimmter Bedingungen im Code vorgesehen war.