Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Etwas für die Profis unter euch.. (http://www.expert-advisor.com/forum/showthread.php?t=6063)

Thomschy 26.03.18 07:00

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..

traderdoc 26.03.18 09:40

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

next user 26.03.18 16:12

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.

Thomschy 27.03.18 06:12

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..

next user 27.03.18 12:26

Würde mal sagen
Code:

////////////////////////////////////////////////////
// Um restlichen Code zu simulieren, ein bisschen Ressourcen belegen..

int start()
{
if(arrstart[0]!=Bid){
ArrayInitialize(arrstart,(Bid+Ask)*13);
ArrayInitialize(arrstart1,(Bid+Ask)*13);
ArrayInitialize(arrstart2,(Bid+Ask)*13);
ArrayInitialize(arrstart3,(Bid+Ask)*13);
ArrayInitialize(arrstart4,(Bid+Ask)*13);
};
return(0);
}
//////////////////////////////////////////////////////

ist das Problem.
Die Bedingung trifft immer zu und dann "initialisierst" du deine 5 großen Arrays. Hast echt was vor, oder?

traderdoc 27.03.18 14:59

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!

next user 27.03.18 19:27

@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)
kommst? Selbst wenn du deine Arrays nutzen, und sie sogar mit "Bid" belegen würdest, würde ein neuer Tick ja eh dafür sorgen,
das die Bedingung nahezu immer "true" wäre.

Außerdem
Zitat:

// Um restlichen Code zu simulieren, ein bisschen Ressourcen belegen..
ist in dem Zusammenhang echt lustig... :D

Thomschy 27.03.18 20:58

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

next user 27.03.18 21:13

Zitat:

Zitat von Thomschy (Beitrag 40784)
Die Arrays sollen nur die Komplexität des Restcodes simulieren.. So stehts auch im Code.

Habe ich auch so wahrgenommen, allerdings dachte ich, es sei ein Witz. Wozu brauchst du das?

Zitat:

Zitat von Thomschy (Beitrag 40784)
Also kümmert euch nicht darum...

Du hast uns doch dazu "gedrängt", indem du wissen wolltest, WAS dein Ruckeln verursacht...

Zitat:

Zitat von Thomschy (Beitrag 40784)
Versuchts doch noch mal konstruktiv..

Stehst du vorm Spiegel?

Thomschy 27.03.18 21:56

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?


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:15 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