Etwas für die Profis unter euch..
Hallo hallo ich habe ein kleines Problem, vielleicht kennt ihr das auch und habt dafür eine Lösung.
Ich habe im mql4 ein EA Programmiert. Besteht quasi aus einem Button. Wenn man auf den Button klickt erzeugt er eine horizontale Linie, die per Objektmove am Mauszeiger heftet und variabel hin und her verschiebbar ist. Wenn mann dann in den Chart klickt, erzeugt es eine andere horizontale Linie, die dann an die Position gesetzt wird, wo man in den Chart geklickt hat. Die horizontale Linie, die per Objektmove an dem Mauszeiger klebte, löscht sich mit dem Klick in den Chart. Jetzt ist mir aber aufgefallen, dass wenn die horizontale Linie, die am Mauszeiger klebt, und im Chart so frei hin und her bewegt wird, es bei jedem eingehendem Tick, eine kleines ruckeln entsteht. Das Ruckeln nervt sehr. Gibt es dafür eine Lösung? Die Buttons sind im Init und der Rest der Funktion im OnChartEvent.. |
Auch dafür gibt es sicherlich eine Lösung, nur ohne Code werden wir da nicht viel weiterkommen.
Ruckelt die Linie nur, wenn der Mauszeiger steht und es kommt ein neuer Tick und wie lange ruckelt die Linie dann und in welcher Amplitude? Oder ruckelt die Linie nur oder auch, wenn sich der Mauszeiger gerade bewegt und es kommt ein neuer Tick? traderdoc |
Jap, ohne Code keine konkreten Ansätze.
Normal ist das Ruckeln jedenfalls nicht, nutze auch verschiedene Sachen mit Mausbewegung. Habe noch nie ein Ruckeln vernommen. |
Liste der Anhänge anzeigen (Anzahl: 1)
Vielen Dank für eure schnellen Antworten.
Das mit dem Ruckeln ist vielleicht noch nicht richtig erklärt.. Das Ruckeln ist eigentlich kein Ruckeln, sondern wenn ich die Maus bewege, und die Linie gerade an der Maus heftet, und in der Bewegung gerade ein neues Tick kommt, dann bleibt die Linie mal kurz hängen. Also eher ein Ruckeln im Sinne, wenn ich die Maus mit der Linie gerade bewege und ein neues Tick kommt, dann bleibt die Linie kurz stehen.. |
Würde mal sagen
Code:
//////////////////////////////////////////////////// Die Bedingung trifft immer zu und dann "initialisierst" du deine 5 großen Arrays. Hast echt was vor, oder? |
Sorry, aber ich habe selten so einen Zinnober gesehen.
@next_user hat ja schon den Hammer erkannt. Jetzt wollte ich nur kurz sehen, was er mit "Hast echt was vor, oder?" meinte und da hatte ich zu tun selbst beim Sitzen das Gleichgewicht nicht zu verlieren. Wozu in Gottes Namen und Zeus' Hinterteil, braucht man Arrays mit einer Dimension von 30 Millionen??? Und was soll diese eigenartige Initialisierung aller Elemente der 5 gleichgroßen Arrays bringen? Und ja, auch ich frage mich, warum bei jedem ankommenden Tick alle 5 Arrays wieder neu initialisiert werden? Übrigens da liegt auch der Osterhase begraben!! An dieser Stelle hätte völlig ausgereicht: int start() { return(0); } Und wenn Du modernerweise void OnTick() genommen hättest, wäre der Code an der Stelle noch kürzer gewesen: void OnTick() {} Der Compiler müsste eigentlich das ; nach der } vor dem return(0) im start() monieren! Aber das ist ja nur eine Kleinigkeit. Aber was dem Fass den Boden ausschlägt ist ja die Tatsache, dass keines dieser aufgblähten Array in irgendeiner relevanten Programmzeile benutzt werden. So etwas habe ich in meinen 12 Jahren MQL noch nicht gesehen! traderdoc PS. Das ist nix fürs Profis! |
@Thomschy
Neben den schon angesprochenen Punkten würde ich gerne mal wissen, wozu die Arrays gedacht waren. Auch frage ich mich, wie du auf die Bedingung Code:
if(arrstart[0]!=Bid) das die Bedingung nahezu immer "true" wäre. Außerdem Zitat:
|
Hallo liebe Leute..
:D :D :D Die Arrays sollen nur die Komplexität des Restcodes simulieren.. So stehts auch im Code. Also kümmert euch nicht darum, die Arrays haben keinen anderen Sinn. Versuchts doch noch mal konstruktiv.. PS: Und das Thema ist für Profis :p |
Zitat:
Zitat:
Zitat:
|
Ja, das ist ist das Problem mit der Kommunikation. Wenn hier irgendjemand in dem Forum nach Hilfe fragt und ihm dann nur mit unwitzigen Spitzen begegnet wird, sollte man sich nicht wundern, wenn dann mal was zurück kommt ;-)
Der Restcode ist sehr komplex, dass lässt sich leider nicht wirklich ändern. Die Frage ist nun, ob Ihr eine Idee habt, ob man das irgendwie beeinflussen kann, außer den Teil des Codes auszulagern (zum Beispiel in einen Indikator). Vom Programmablauf ist es so, dass es Warteschlangen gibt, in denen die Befehle abgearbeitet werden. Jetzt könnte ich die Frage stellen, ob ich die Warteschlange priorisieren kann oder die Befehle von den ChartEvents in eine andere Warteschlage anhängen kann z.B. ..? Weist du was ich meine? |
Zitat:
|
Das ist auch mehr auf den Traderdoc gemünst.. aber eigentlich auch egal..
Das Problem ist der komplexe Code. Der sich schlecht verschlanken lässt. Ja, hier mal da, geht sicher immer etwas, aber darum geht es mir jetzt nicht. Es ist mehr die Frage ob es auch eine andere Lösung gibt. Hast du so ein ähnliches Problem schon mal gehabt? |
Zitat:
"Die Arrays sollen nur die Komplexität des Restcodes simulieren.." Sorry, ich verstehe diesen Satz nicht. Also erstens kann man bei dem Wort Komplexität geteilter Meinung sein, aber das nur nebenbei. Ich verstehe nicht, was es da zu simulieren gibt. Das Einzige, was Du damit erreichst, ist höchstwahrscheinlich, dass eben bei jedem einkommenden Tick die Linie ruckelt. D.h. ich würde an Deiner Stelle einfach diese komplette Überflüssigkeit weglassen. Und dann berichte uns, ob es immer noch ruckelt. traderdoc |
Hallo Traderdoc,
mir ging es jetzt darum, euch das ruckeln zu demonstrieren. Ohne den Sinnlos-Arrays ruckelt natürlich nix. Die Arrays simulieren quasi nur den komplexen Code. Den wollte ich jetzt nicht mitschicken, um jetzt nicht total zu verwirren. Ich wollte quasi nur den wesentlichen teil darstellen. Du hast jetzt auch keine Idee, ob man die Warteschlange priorisieren kann? |
Zitat:
"Jetzt ist mir aber aufgefallen, dass wenn die horizontale Linie, die am Mauszeiger klebt, und im Chart so frei hin und her bewegt wird, es bei jedem eingehendem Tick, eine kleines ruckeln entsteht. Das Ruckeln nervt sehr. Gibt es dafür eine Lösung?" Das war die Ausgangssituation! Daraufhin schrieben wir, ohne Code, keine Lösung. Dann kam der Code. Da hätte schon mal mindestens der Hinweis kommen müssen, dass diese Arrays nur dazu dienen, um das Ruckeln zu simulieren und nicht uns im Unwissen zu lassen, dass da der eigentliche Code steht. Man kann es eben auch kompliziert machen. Und was soll ich denn anderes sagen, wenn mir unkommentiert dieser Code präsentiert wird. So, nun wissen wir inzwischen, dass in der Funktion start() ein komplexer Code steht, den ja noch keiner kennt, also außer @Tomschy. Dieser Code nun sorgt dafür, dass die Linie ruckelt. Ja, was machen wir nun? Ich würde das wiederholen, was ich am Anfang schrieb. Evtl. ist in dem eigentlichen Code etwas Ähnliches wie bisher drin. Ich verstehe auch nicht, warum der tatsächliche Inhalt der start-Funktion nicht gleich gepostet wurde? Was hast Du denn bei dem geposteten Code für eine Lösung erwartet? Der Hase liegt doch demnach in dem uns bisher verschwiegenen Code. Und daher sage ich - ohne Code - keine Lösung. traderdoc |
Ok, also vergessen wir jetzt einfach mal die ganzen Beiträge zuvor. Du hättest aber gleich mit der wahren Ausgangssituation
ankommen müssen! Also gut, du hast sehr komplexen Code, der die "Warteschlangen" ins glühen bringt und zu einer Verzögerung führt. Nichts gegen dich Thomschy (wirklich nicht!), aber der einzige Grund bei solchen "Lasten", dem ich bisher begegnet bin, ist (ver)komplizierter, nicht ausgefeilter Code oder Berechnungen / Algorithmen, die unnötige Zusätze aufweisen. Vielleicht stimmt das mit deinem Code ja, das er GUT und KOMPLEX genug ist, um eine Verzögerung zu verursachen, aber das können wir natürlich nicht beurteilen. Aber eben genau deshalb können außenstehende keine wirklich relevanten Lösungsvorschläge angeben. "Es gibt Verzögerungen. Der Code ist komplex, geht aber nicht anders ... kann man das beeinflussen?" Ohne Code keine wirkliche Möglichkeit... |
Hmm.. Was soll ich jetzt dazu sagen.. Es tut mir leid.
Den vollständigen Code stelle ich hier nicht rein, weil er vom wesentlichen ablenkt und 6000 Zeilen lang ist. Was hab ich erwartet? Eine Antwort auf meine Fragen und nach meinen Relativierungen und weiteren Erklärungen, irgendwie noch mehr eine Antwort auf meine Fragen. Der Lösungsansatz könnte z.B. sein.. Die Reihenfolge der Warteschlange verändern, bzw. die Priorisierung verändern. Wie macht man das? Z. B. den Code nach NewBar und NewTick sortieren, die Startfunktion während der Erstellung der Linien pausieren lassen, oder den (Linien-)Code in einem separaten Indikator auslagern.. oder was weis ich. Vielleicht habt ihr noch ne Idee..? :confused: |
Zitat:
Zitat:
der Linienpart eine der ausschlaggebenden Gründe für die Verzögerungen. Und da wiederum kann ich mir nicht vorstellen, das da alles komplexe nötig, bzw. sinvoll implementiert ist. Aber wie schon gesagt, ohne das Problem wenigstens genauer beim Namen zu nennen (entsprechend eingrenzen), kann nicht wirklich geholfen werden. Wenn du keinen Code posten willst, ok, aber bei 6000 Zeilen Code kann man die relevanten! Bereiche doch wirklich eingrenzen und dann DARÜBER sprechen! |
Ich weiß, Ihr meint es auch nur gut..
Zitat:
Zitat:
|
Zitat:
Klar wird sich keiner 6000 Zeilen ansehen. @next_user hat es geschrieben, wie es jetzt laufen könnte. Aber ich habe im Gefühl, dass Du erstens auf Deinem Code sitzen bleiben willst und zweitens die Hilfe zur konkreten Lösung Deines Anliegens weit über das übliche Maß einer Forumshilfe hinausgeht. Ich sage es aber auch gleich im Vorfeld, dass ich für eine Honorartätigkeit hier nicht zur Verfügung stehe. traderdoc |
...vielleicht liegt die Lösung ja in einer Ressourcen-schonerenden Programmierung und / oder einem schnellerem Rechner...
|
Zitat:
Ich versuche euch seit Anfang an nett zu begegnen und erkläre nur das Problem, und dass ihr euch nicht auf den Zwischencode stürzen braucht. Um den komplexen Code geht es doch gar nicht. Die Bedingungen habe ich erklärt und sind gegeben. Das ist mir echt zu Kindergarten, traderdoc, mit dir. Rühmst dich mit 12 Jahren MQL-Erfahrung und verweigerst mir schon mal in deinem Ostereierjargon dein Honorartätigkeit. :rolleyes: Das ist total unangebracht solche Äußerungen, total unprofessionell. Es ist kein Problem, wenn du mal nicht zu den Profis gehörst, die einem weiterhelfen können. Aber dann lass fairerhalber diese spitzfindigen und beleidigenden Kommentare. :mad: |
Ok, @Thomschy, das wird mir jetzt wirklich langsam zu viel mit Dir, und ich habe echt keine Zeit hier zu vergeuden. Du hast von Anfang an nicht mit offenen Karten gespielt und dann noch unnötig unsere Zeit in Anspruch genommen. Da reagiere ich sensibel.
Aber ich denke mir gerade, wer über 6000 Zeilen Code schreiben kann, sollte doch so eigentlich professionell genug sein, um den Fehler selber zu finden oder? Dazu wünsche ich Dir viel Erfolg! traderdoc |
Hatte zwar geschrieben
Zitat:
@Thomschy In deinen ersten beiden Posts gibst du uns eine komplett falsche Basis, sagst im dritten dann, das es eben NICHT um den Code geht! Dein 4 Post ist dann endlich das, was dein Threadstart sein sollte, also deine eigentliche Frage. Die bisherigen Posts und die Zeit hätte man sich also komplett sparen können. Da ist es verständlich, das man etwas genervt reagiert, besonders beim Threadtitel. Aber gut, weiter... Zitat:
Zitat:
eine wirklich notwendige "Überlastung", sodass es zu einem Ruckler kommt, gesehen. Daher kann man auch hier durchaus verstehen, das wir davon ausgehen "Hey, den Code kann man ebend DOCH sicherlich verbessern". Zitat:
geposteten MQL-Datei ansehe, bin ich mir noch mehr sicher, das deine 6000 Zeilen verbessert werden können! Aber gut, deine weiteren Posts sagen dann deutlich aus, was du möchtest: "Ich habe komplexen Code. Der kann nicht wirklich verschlankt werden! Ich will auch garnichts über den Code von euch wissen. Ich habe einen Ruckler, der durch "Überlastung" entsteht. Ich will ihn nicht vermeiden, sondern umgehen, was kann ich tun?" Du wirst es sicherlich, besonders den letzten Satz anders sehen, aber genau das ist es! Du willst nicht an die Ursache (dein Code) rangehen, sondern versuchen, diesen Ruckler zu "umgehen"! Dann habe ich dir geschrieben: Zitat:
Zitat:
Wie ich, traderdoc und Adlerauge schon erwähnt hatten, da kann man sicherlich etwas am Code machen... Aber jetzt mal soweit dazu! === === === === === === === === === === === === Um jetzt kurz mal auf deine Fragen (Ansätze) einzugehen:
|
Erstmal Danke für die Aufklärung und die Beantwortung meiner Fragen. Und Entschuldigung dafür, dass ich euch so genervt habe. Es ist wirklich nicht immer leicht die Menschen dahin zu bewegen wo es wesentlich ist, sorry.
Im Ergebnis stehen mehrere Lösungsvarianten im Raum, mehr wollte ich gar nicht. Aber next_user, du hast mich auf die passendste Lösung gebracht, wenn auch unbewusst, trotzdem Danke. :) Thema gelöst. |
Alle Zeitangaben in WEZ +2. Es ist jetzt 02:16 Uhr. |
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum