[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 312
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
Hallo Programmier-Guru
Können Sie mir bitte sagen, wie ich ein mit der Hintergrundfarbe gefülltes Rechteck in der oberen linken Ecke mit einer kleinen Einkerbung (für die Ästhetik) über dem Diagramm und unter dem vom Experten angezeigten Text zeichnen kann?
Vielen Dank im Voraus
es ist dasselbe... Um es auch zu beschreiben, nur in einer anderen Situation.
War es das nicht?
Artem, mach dir nichts aus, den Code zu schreiben, ja? Oder gib mir das Ding, das du in der Hand hast, und ich beende dieses Elend...
Frage zur Funktionsweise des Testers: Nachdem Sieeinen Test durchgeführt haben, ändern Sie die Parameter (Daten, Währungspaar, Zeitrahmen) und führen den Test erneut aus - er läuft, aber wenn er beendet ist, ändern sich die Informationen in den Registerkarten wie "Diagramm" und "Bericht" überhaupt nicht - alles bleibt vom vorherigen Test erhalten. Der gespeicherte Bericht ist ebenfalls veraltet. Was ist der Grund dafür und wie kann man ihn beheben? Vielleicht gibt es eine Funktion zum Zurücksetzen der Ergebnisse?
Ich habe das Handbuch gelesen, Artikel gelesen, das Forum durchsucht - ich habe keine Hinweise auf ein solches Problem gefunden...
Das sollte nicht so sein, vielleicht haben Sie die Option "Optimierung" aktiviert?
Das sollte nicht der Fall sein, vielleicht haben Sie "Optimieren" angekreuzt?
Oh, das scheint der Fall zu sein: Als ich einen neuen Test durchführte, habe ich nicht bemerkt, dass die Optimierung eingeschaltet war, weil ich dachte, es sei nicht kritisch. Eine etwas seltsame Schnittstellenlösung...
Aber jetzt funktioniert es, vielen Dank!
Ich habe mich nicht eingehend mit der Logik befasst, aber irgendetwas sagt mir, dass es einige unnötige Berechnungen gibt. Vor anderthalb Jahren löste ich das gleiche Problem mit dem Sammeln von Kursen und der Bildung von M1-Kerzenständern mit klarem Schnitt zu Beginn der astronomischen Minute.
Wenn Sie daran interessiert sind, können Sie sich einige Momente der reinen Optimierung Ihres Codes (Datei) ansehen. Wenn wir ernsthaft über Optimierung sprechen, müssen Sie die Laufzeit des Codes messen. ;)
Jetzt versuche ich es auf eine ganz andere Art und Weise, von Grund auf.
Frage an Vadim zum Mapping. Also, äh... Von Grund auf neu begonnen. Wir nehmen das ursprüngliche TF-Ticken:
Im Prinzip gibt es eine sehr einfache Logik: Wir fangen einen Bidask, bilden RateInfo, aber wir setzen die Zeit auf Volume und modellieren Time. Nun, ohne sich darüber Gedanken zu machen, wie man die Zeit simuliert, entfernen wir die Simulation komplett und machen es mit dem Standard TOLHCV und davor setzen wir "wenn mehr als 0 Sekunden seit dem letzten Aufruf von start() vergangen sind". Wenn es in einem anderen Zweig derselben Bedingung weniger war, bearbeiten Sie High-Low und erhöhen Sie Volume. Im Wesentlichen ist es dasselbe wie oben beschrieben, nur dass der Zyklus vollständig entfernt wurde, d. h. wir erhalten eine zweite TF "mit Lücken" (mit fehlenden Sekunden):
Auch die Einstufung "bullish-bearish" wurde komplett gestrichen. Lohnt sich das Glücksspiel? Überprüfen wir, setzen Sie GetTickCount() mit Schrumpfung auf diese Variante und auf die ursprüngliche vom Eigentümer, führen Sie sie gleichzeitig auf einem Diagramm, schauen Sie sich das Protokoll:
wie erwartet. Tick - Original, Sekunden mit Lücken - modifiziert. Bilden Sie nun ein Hilfsarray vor time=TimeCurrent():
Dies ist im Code der Sekunden tf. Für den EA, der auf der Sekunde selbst schwebt, können die Werte von TOLHCV vor x Sekunden dann als ind[GlobalVariableGet("final")]-ind[GlobalVariableGet("final")-x]+1 ermittelt werden, wenn dieses Array natürlich irgendwie übergeben wird. Verwenden wir also das Mapping:
Wir schreiben ein Testskript, das den Mauszeiger über die Sekunden bewegt und dieTOLHCV-Werte von vor x Sekunden liest (nicht die Candlesticks):
Wir lassen den Sekunden-Zeitrahmen laufen. Bei der Initialisierung wird ein Fenster angezeigt
Es gibt 58.572 Mal im Protokoll
und bei der Deinitialisierung zeigt es ein Fenster
В методе "MT4::Memory::SearchIndexOrHandle()" не установлен параметр для поиска в области памяти терминала.
Nun deinitializatsii es später, legte ich das Skript - die Warnung einmal. Ich überschreibe MemoryCreate und MemoryCloseHandle, nichts erscheint (das Skript behält die Meldung), das Protokoll
- und das war's. Logischerweise verwende ich also die Aufrufe in der falschen Reihenfolge oder deklariere sie falsch. Mein Betriebssystem ist WinXP. Vadim, sag mir wenigstens, in welche Richtung ich gehen soll.