Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3947
Beiträge: 37722
Benutzer: 6.242
Aktive Benutzer: 419
Links: 80
Wir begrüßen unseren neuesten Benutzer: Marcel83
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 2 Tagen
- Marcel83
vor 5 Tagen
- Megaule
vor 5 Tagen
- faanx
vor 5 Tagen
- baldwinlol
vor 6 Tagen
- adaba

Onlineuser
'Wer ist online' anzeigen Benutzer: 1
Gäste: 43
Gesamt: 44
Team: 0
Team:  
Benutzer:  traderdoc
Freunde anzeigen

Empfehlungen

Werbung

Like Tree2Likes
Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt vor 3 Wochen
Neues Mitglied
 
Registriert seit: Nov 2014
Beiträge: 14
Thomschy befindet sich auf einem aufstrebenden Ast
Standard 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..
Mit Zitat antworten
  #2 (permalink)  
Alt vor 3 Wochen
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.989
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #3 (permalink)  
Alt vor 3 Wochen
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

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.
Mit Zitat antworten
  #4 (permalink)  
Alt vor 3 Wochen
Neues Mitglied
 
Registriert seit: Nov 2014
Beiträge: 14
Thomschy befindet sich auf einem aufstrebenden Ast
Standard

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..
Angehängte Dateien
Dateityp: mq4 test.mq4 (31,4 KB, 8x aufgerufen)
Mit Zitat antworten
  #5 (permalink)  
Alt vor 3 Wochen
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

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?
Mit Zitat antworten
  #6 (permalink)  
Alt vor 3 Wochen
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.989
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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 likes this.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.

Geändert von traderdoc (vor 3 Wochen um 15:11 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt vor 3 Wochen
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

@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...
Mit Zitat antworten
  #8 (permalink)  
Alt vor 3 Wochen
Neues Mitglied
 
Registriert seit: Nov 2014
Beiträge: 14
Thomschy befindet sich auf einem aufstrebenden Ast
Cool

Hallo liebe Leute..

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
Mit Zitat antworten
  #9 (permalink)  
Alt vor 3 Wochen
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Thomschy Beitrag anzeigen
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 anzeigen
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 anzeigen
Versuchts doch noch mal konstruktiv..
Stehst du vorm Spiegel?
Mit Zitat antworten
  #10 (permalink)  
Alt vor 3 Wochen
Neues Mitglied
 
Registriert seit: Nov 2014
Beiträge: 14
Thomschy befindet sich auf einem aufstrebenden Ast
Standard

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?
Mit Zitat antworten
Antwort

Lesezeichen


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +2. Es ist jetzt 16:31 Uhr.



Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2018 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2017 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------