Fehler, Irrtümer, Fragen - Seite 2504
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
Leute, gebt uns ein paar Informationen. Wofür verwenden Sie Alignment?
Das ist Waschbär-orientierte Programmierung!
Leider kann man nicht darauf verzichten ;)
Das ist Waschbär-orientierte Programmierung!
Leider kann man nicht darauf verzichten ;)
Dessen bin ich mir bewusst. Ich bitte Sie nicht, mich über OOP zu belehren. Ich habe gefragt, wer die Anpassung zu welchem Zweck nutzt.
Leute, könnt ihr mir ein paar Informationen geben? Wofür verwenden Sie Alignment?
Das alles ist in einer Multi-Thread-Umgebung sehr nützlich, wie ich sehe. Was hat das MKL damit zu tun? Ich weiß nicht, die Frage wurde gestellt, also bin ich hängen geblieben.
Und im Allgemeinen - das sind die Grundlagen, ein Grundverständnis ist für jeden anständigen Programmierer notwendig.
ZS: Nun, es gibt hier eine Menge Geschwindigkeitsfanatiker, wenn sie anfangen, alles intelligent auszurichten, sollten sie noch schneller fliegen, zumindest theoretisch.Leute, gebt uns ein paar Informationen. Wofür verwenden Sie Alignment?
Vict:
ZS: Nun, es gibt hier eine Menge Geschwindigkeitsfans, wenn sie anfangen, es richtig zu machen, sollte es noch schneller gehen, zumindest theoretisch.
Im Allgemeinen habe ich nicht einmal das erwartet:
Der Code ist etwas zu kompliziert - ich habe versucht, das Element zu treffen, das nicht in die Cache-Zeile passt, und direkt darauf zu hämmern, aber es ist fehlgeschlagen (es wäre wahrscheinlich machbar, wenn ich wollte, aber mir wurde langweilig), und ich habe den Code nicht viel geändert. Aber das ist noch beeindruckender - nur einer von 16 Zusammenbrüchen erfolgt über ein Element, das nicht in die Cache-Zeile fällt, trotzdem ergibt es ein vernünftiges Ergebnis.
SZY: In diesem Fall ist es objektiver, RIGHT_ALIGNED zu machen, indem man zwei kurze Zeilen einfügt, anstatt eine einzige zu entfernen (so erreichen wir zwei Aktualisierungen der Cache-Zeile für beide Fälle). Der Geschwindigkeitszuwachs ist bescheidener, aber immer noch etwa 1,5-mal so groß.
Übrigens, in mql ist der Standardwert für pack 1, sozusagen.
Nach dem vorherigen Beitrag zu urteilen, ist es vielleicht sinnvoll, 8 ausdrücklich für alle Strukturen und Klassen vorzuschreiben.
Ich kann den Fehler nicht beheben.
Ich habe das Zickzack aus der Metatrader-Lieferung genommen, um den Fehler zu demonstrieren. Dem Code wurden zusätzliche Puffer hinzugefügt, die aus meinem Programm stammen. In diesem Code sind keine Manipulationen mit zusätzlichen Puffern vorgesehen. Sie dienen nur dazu, den Fehler zu demonstrieren.
Dieser Zickzackkurs wurde auf dem H1-Zeitrahmen des EURUSD aufgezeichnet. Schließen Sie das Terminal. Alle generierten Zeitreihen für EURUSD wurden aus der Historie gelöscht. D.h. ich habe alle *.hcc und *.hc Dateien des Währungspaares EURUSD gelöscht. Dies wurde getan, um das Laden von .hcc-Dateien und die Erzeugung von .hc-Dateien aus einem sauberen Blatt sicherzustellen.
Nach dem Start des Terminals sehen Sie auf dem EURUSD-Chart eine Reihe von Artefakten. Mit diesen Artefakten kann nicht umgegangen werden.
Ich füge den geänderten Code des Zickzacks in Form von Text und in Form einer Datei bei.
Ich möchte Sie darauf hinweisen, dass die Parameter des Zickzacks über #propert angegeben werden.
Alle anderen Puffer werden nicht durch #propert gesetzt, da alles, einschließlich der Zickzack-Puffer, dynamisch geändert wird.
Bitte helfen Sie den Terminalentwicklern, diesen Fehler zu beheben.
Bild mit Artefakten:
Ich kann den Fehler nicht beheben.
Ich habe das Zickzack aus der Metatrader-Lieferung genommen, um den Fehler zu demonstrieren. Dem Code wurden zusätzliche Puffer hinzugefügt, die aus meinem Programm stammen. In diesem Code sind keine Manipulationen mit zusätzlichen Puffern vorgesehen. Sie dienen nur dazu, den Fehler zu demonstrieren.
Dieser Zickzackkurs wurde auf dem H1-Zeitrahmen des EURUSD aufgezeichnet. Schließen Sie das Terminal. Alle generierten Zeitreihen für EURUSD wurden aus der Historie gelöscht. D.h. ich habe alle *.hcc und *.hc Dateien des Währungspaares EURUSD gelöscht. Dies wurde getan, um das Laden von .hcc-Dateien und die Erzeugung von .hc-Dateien aus einem sauberen Blatt sicherzustellen.
Nach dem Start des Terminals sehen Sie auf dem EURUSD-Chart eine Reihe von Artefakten. Mit diesen Artefakten kann nicht umgegangen werden.
Ich füge den geänderten Code des Zickzacks in Form von Text und in Form einer Datei bei.
Ich möchte Sie darauf hinweisen, dass die Parameter des Zickzacks über #propert angegeben werden.
Alle anderen Puffer werden nicht durch #propert gesetzt, da alles, einschließlich der Zickzack-Puffer, dynamisch geändert wird.
Bitte helfen Sie den Terminalentwicklern, diesen Fehler zu beheben.
Bild mit Artefakten:
Alle Puffer müssen initialisiert werden.
Befindet sich auf dem Balken kein Wert im Puffer, muss er explizit in den Puffer geschrieben werden. Mit anderen Worten: Wenn der berechnete Wert in den Puffer ausgegeben werden soll, schreiben Sie ihn in den Puffer, andernfalls schreiben Sie einen leeren Wert.
Im Allgemeinen habe ich das gar nicht erwartet:
Bei meinen eigenen Versuchen habe ich keinen merklichen Unterschied festgestellt.
Wenn anstelle von
Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests
Wanzen, Wanzen, Fragen
Vict, 2019.07.09 07:17
Data data[32768];
machen.
Es gibt eine 6-fache Verlangsamung!
Alle Puffer müssen initialisiert werden.
Befindet sich auf dem Balken kein Wert im Puffer, muss er explizit in den Puffer geschrieben werden. D.h., wenn der berechnete Wert in den Puffer ausgegeben werden soll, schreiben wir ihn in den Puffer, ansonsten schreiben wir einen leeren Wert.
Entschuldigung, ich habe die Initialisierung übersehen. Ich habe es in meinem Programm, habe es aber in dem Beispiel übersehen.
Im Anhang finden Sie eine Datei mit der Initialisierung. Die Wirkung ist dieselbe.
Die Frage an die Entwickler bleibt bestehen. Bitte beheben Sie diesen Fehler.
-------------
Meiner Meinung nach geschieht Folgendes. Wenn das Programm zusammen mit dem Terminal gestartet wird, ist die Größe der Zeitreihe entweder gleich Null oder hat einen Mindestwert.
Das Programm wird auf dem vorhandenen Stück der Geschichte initialisiert. Aber wenn die Größe der Zeitreihe erhöht wird, werden Speicherfragmente, die die Initialisierung nicht durchlaufen haben, für Pufferarrays verwendet. Infolgedessen haben wir diesen Effekt.
Ich habe versucht, diesen Effekt mit Ereignissen des Terminals zu behandeln. Trotzdem erscheinen die Artefakte nur für den Bruchteil einer Sekunde. Und das ist nicht gut. Ein solches Programm darf nicht freigegeben werden.
Hier ist die Lösung für dieses Problem. Nach der Speicherzuweisung für Puffer sollten Sie diesen Speicher sofort löschen. Aber wie können wir das tun? Ich habe eine solche Funktion auf der Seite der Entwickler von Terminalanwendungen nicht gefunden.