Diskussion zum Artikel "Ein manuelles Chart- und Handelswerkzeug (Teil III). Optimierungen und neue Werkzeuge"

 

Neuer Artikel Ein manuelles Chart- und Handelswerkzeug (Teil III). Optimierungen und neue Werkzeuge :

In diesem Artikel werden wir die Idee des Zeichnens von grafischen Objekten auf Charts mit Hilfe von Tastenkombinationen weiterentwickeln. Der Bibliothek wurden neue Werkzeuge hinzugefügt, darunter eine gerade Linie, die durch beliebige Scheitelpunkte gezeichnet wird, und eine Reihe von Rechtecken, die die Auswertung der Umkehrzeit und des Levels ermöglichen. Außerdem zeigt der Artikel die Möglichkeit, den Code zu optimieren, um die Leistung zu verbessern. Das Implementierungsbeispiel wurde umgeschrieben, sodass Shortcuts neben anderen Handelsprogrammen verwendet werden können. Erforderliche Code-Kenntnisse: etwas höher als die eines Anfängers.

Die erste Funktion bezieht sich auf den Effekt der Linienverschiebung bei kleineren Zeitrahmen. Wenn Sie Linien auf die übliche Art und Weise zeichnen, wird beim Wechsel zwischen den Zeitrahmen etwas Ähnliches erscheinen:

D1-Linie endet H4-Linie endet

Der linke Rand der Linie, der genau mit einem Extremum bei D1 zusammenfällt, ist bei H4 nach links verschoben und fällt somit nicht mit dem Extremum zusammen. Dies ist ein offensichtlicher Effekt, da das Extremum eines Tages nicht auf den Tagesanfang fallen muss. Wenn Sie beim manuellen Zeichnen eine höhere Genauigkeit benötigen, können Sie die Linie ungefähr zeichnen und dann zu niedrigeren Zeitrahmen wechseln, um die Kanten anzupassen.

Diese Lösung bietet sich an, wenn Sie nur einen oder zwei Charts haben. Was aber, wenn Sie 20 davon haben? Oder sogar 100? Das kann lästig sein.

Da das Programm über eine automatische Zeichenfunktion verfügt, können wir diese Aufgabe dem Programm anvertrauen, wenn wir jedes Objekt zeichnen.

Autor: Oleh Fedorov

 

Es gibt einige Probleme beim Kompilieren der englischen Version. In der Datei "Utilites.mqh" hat der Übersetzer das Leerzeichen durch etwas anderes ersetzt.

Wenn Sie also beim Kompilieren die Fehlermeldung "Declaration without type" sehen, machen Sie einen Doppelklick auf den String mit dieser Meldung - die IDE wird diesen String im Editor öffnen. Dann müssen Sie EIN falsches Symbol auswählen (wie üblich wird es zwischen dem Hauptcode und den Kommentaren sein) und Strg+H drücken oder Suchen -> Ersetzen im Hauptmenü wählen.

In der oberen Zeile (Suchen) fügt die IDE das "falsche" Symbol ein, und in der unteren Zeile (Ersetzen) müssen Sie ein einfaches Leerzeichen einfügen. Dann drücken Sie die Taste "Replace all"...

Nun, die letzte Operation ist Kompilieren(Strg+F7).

Wie man Fehler behebt ""

Ich werde versuchen, die richtige Datei so bald wie möglich an den Moderator zu schicken.

 

Hallo. Tolles Tool, das Sie erstellt haben. Ich bin auch ein Handbuch und war auf der Suche nach einem solchen.

Aber ich habe normalerweise mehrere Fenster (Zeitrahmen) eines Tools auf mehreren Monitoren geöffnet.

Gibt es eine Möglichkeit für MQL, diese
gezeichneten Objekte auf allen geöffneten Fenstern eines Tools erscheinen zu lassen? Zum Beispiel, wie es in Tigertrade und anderen Plattformen gemacht wird.

Sie haben z.B. bei 5m gezeichnet, und die gleiche Ebene erscheint im Fenster mit 1m.

Ich bin überrascht, dass es keine solchen Werkzeuge in MQL gibt.


Ich danke Ihnen sehr

 
okskreen61 #:

Hallo. Sie haben ein tolles Werkzeug geschaffen. Ich bin auch ein Hand-Trucker und war auf der Suche nach einem von diesen.

Aber ich habe normalerweise mehrere Fenster (Zeitrahmen) eines Tools auf mehreren Monitoren geöffnet.

Gibt es eine Möglichkeit für MQL, diese
gezeichneten Objekte auf allen geöffneten Fenstern eines Werkzeugs erscheinen zu lassen? Zum Beispiel, wie es in Tigertrade und anderen Plattformen gemacht wird.

Ich habe z.B. eine Ebene bei 5m gezeichnet, und die gleiche Ebene erscheint im Fenster mit 1m.

Es ist überraschend, dass es in MQL keine solchen Werkzeuge gibt.


Ich danke Ihnen vielmals.

Der einfachste Weg ist, eine Vorlage zu machen. Außerdem habe ich etwas ähnliches irgendwo in kodobase gesehen (entweder in Form eines Indikators oder eines Skripts)...
 

Die Datei "Utilites.mqh" weist 101 Fehler auf, von denen die folgenden Fehler sind:

'New_Bar_First_Start' - Deklaration ohne Typ Utilites.mqh 80 5

mode' - Komma erwartet Utilites.mqh 80 25

New_Bar_First_Start' - Deklaration ohne Typ Utilites.mqh 1491 26

'mode' - Komma erwartet Utilites.mqh 1491 46

mode' - nicht deklarierter Bezeichner Utilites.mqh 1511 18

Is_Select_On_Create' - nicht deklarierter Bezeichner Graphics.mqh 307 45

Print_Warning_Messages' - nicht deklarierter Bezeichner Graphics.mqh 249 8

Print_Warning_Messages' - nicht deklarierter Bezeichner Graphics.mqh 361 8

CMouse' ist keine Klasse, Struktur oder Vereinigung Graphics.mqh 940 26

'Bar' - nicht deklarierter Bezeichner Graphics.mqh 940 34

Bar' - irgendein Operator erwartet Graphics.mqh 940 34

'(' - Semikolon erwartet Graphics.mqh 940 37

')' - Ausdruck erwartet Graphics.mqh 940 38

'allPrefixes' - nicht deklarierter Bezeichner Graphics.mqh 944 37

'[' - Array erforderlich Graphics.mqh 944 48

CMouse' ist keine Klasse, Struktur oder Vereinigung Graphics.mqh 959 6

Below' - nicht deklarierter Bezeichner Graphics.mqh 959 14

Below' - irgendein Operator erwartet Graphics.mqh 959 14

'(' - unausgewogene linke Klammer Graphics.mqh 959 5

')' - Ausdruck erwartet Graphics.mqh 959 20

')' - unerwartetes Token Graphics.mqh 959 21

illegales 'else' ohne passendes 'if' Graphics.mqh 968 3

Variable 'tmp_price' nicht verwendet Graphics.mqh 950 3

Variable 'tmp_time' nicht verwendet Graphics.mqh 954 3

'Simple_Vertical_Style' - nicht deklarierter Bezeichner Graphics.mqh 420 26

Simple_Vertical_Width' - nicht deklarierter Bezeichner Graphics.mqh 422 26

Simple_Horizontal_Style' - nicht deklarierter Bezeichner Graphics.mqh 430 28

Simple_Horizontal_Width' - nicht deklarierter Bezeichner Graphics.mqh 432 28

CMouse' ist keine Klasse, Struktur oder Vereinigung Graphics.mqh 434 14

'Window' - nicht deklarierter Bezeichner Graphics.mqh 434 22

'Window' - irgendein Operator erwartet Graphics.mqh 434 22

')' - unerwartetes Token Graphics.mqh 434 29

'Print_Warning_Messages' - nicht deklarierter Bezeichner Graphics.mqh 439 10

DEBUG_MESSAGE_PREFIX' - nicht deklarierter Bezeichner Graphics.mqh 442 15

allPrefixes' - nicht deklarierter Bezeichner Graphics.mqh 451 9

'[' - Array erforderlich Graphics.mqh 451 20

Print_Warning_Messages' - nicht deklarierter Bezeichner Graphics.mqh 462 10

DEBUG_MESSAGE_PREFIX' - nicht deklarierter Bezeichner Graphics.mqh 464 15

'CMouse' ist keine Klasse, Struktur oder Vereinigung Graphics.mqh 469 39

Preis' - nicht deklarierter Bezeichner Graphics.mqh 469 47

Preis' - irgendein Operator erwartet Graphics.mqh 469 47

'(' - ':' Doppelpunktzeichen erwartet Graphics.mqh 469 52

')' - Ausdruck erwartet Graphics.mqh 469 53

':' - unerwartetes Token Graphics.mqh 469 55

'(' - Ausdruck erwartet Graphics.mqh 469 52

'=' - Operand erwartet Graphics.mqh 469 24

Ausdruck hat keine Wirkung Graphics.mqh 469 57

'CMouse' ist keine Klasse, Struktur oder Vereinigung Graphics.mqh 470 37

'Time' - nicht deklarierter Bezeichner Graphics.mqh 470 45

Time' - irgendein Operator erwartet Graphics.mqh 470 45

'(' - ':' Doppelpunkt-Zeichen erwartet Graphics.mqh 470 49

')' - Ausdruck erwartet Graphics.mqh 470 50

':' - unerwartetes Token Graphics.mqh 470 52

'(' - Ausdruck erwartet Graphics.mqh 470 49

'=' - Operand erwartet Graphics.mqh 470 23

Ausdruck hat keine Wirkung Graphics.mqh 470 54

mögliche Verwendung einer nicht initialisierten Variablen 'Current_Object_Time' Graphics.mqh 478 5

mögliche Verwendung der nicht initialisierten Variablen 'Current_Object_Price' Graphics.mqh 479 5

'Print_Warning_Messages' - nicht deklarierter Bezeichner Graphics.mqh 516 8

DEBUG_MESSAGE_PREFIX' - nicht deklarierter Bezeichner Graphics.mqh 518 13

DEBUG_MESSAGE_PREFIX' - nicht deklarierter Bezeichner Graphics.mqh 573 11

DEBUG_MESSAGE_PREFIX' - nicht deklarierter Bezeichner Graphics.mqh 610 11

allPrefixes' - nicht deklarierter Bezeichner Graphics.mqh 672 37

'[' - Array erforderlich Graphics.mqh 672 48

allPrefixes' - nicht deklarierter Bezeichner Graphics.mqh 674 39

'[' - Array erforderlich Graphics.mqh 674 50

implizite Umwandlung von 'unknown' in 'string' Graphics.mqh 674 39

'CMouse' ist keine Klasse, Struktur oder Vereinigung Graphics.mqh 676 19

'Bar' - nicht deklarierter Bezeichner Graphics.mqh 676 27

Bar' - irgendein Operator erwartet Graphics.mqh 676 27

'(' - Semikolon erwartet Graphics.mqh 676 30

')' - Ausdruck erwartet Graphics.mqh 676 31

'CMouse' ist keine Klasse, Struktur oder Vereinigung Graphics.mqh 681 6

'Below' - nicht deklarierter Bezeichner Graphics.mqh 681 14

Below' - irgendein Operator erwartet Graphics.mqh 681 14

'(' - unausgewogene linke Klammer Graphics.mqh 681 5

')' - Ausdruck erwartet Graphics.mqh 681 20

')' - unerwartetes Token Graphics.mqh 681 21

illegales 'else' ohne passendes 'if' Graphics.mqh 687 3

Variable 'levels_descriptions' nicht verwendet Graphics.mqh 666 10

Variable 'time1' nicht verwendet Graphics.mqh 675 12

variable 'time2' nicht verwendet Graphics.mqh 675 19

'Pitchfork_Shiff_Colour' - nicht deklarierter Bezeichner Graphics.mqh 771 23

Pitchfork_Shiff_Width' - nicht deklarierter Bezeichner Graphics.mqh 772 23

Pitchfork_Shiff_Style' - nicht deklarierter Bezeichner Graphics.mqh 773 23

Pitchfork_Reverce_Colour' - nicht deklarierter Bezeichner Graphics.mqh 779 25

Pitchfork_Reverce_Width' - nicht deklarierter Bezeichner Graphics.mqh 780 25

Pitchfork_Reverce_Style' - nicht deklarierter Bezeichner Graphics.mqh 781 25

Pitchfork_Main_Colour' - nicht deklarierter Bezeichner Graphics.mqh 787 25

Pitchfork_Main_Width' - nicht deklarierter Bezeichner Graphics.mqh 788 25

Pitchfork_Main_Style' - nicht deklarierter Bezeichner Graphics.mqh 789 25

CMouse' ist keine Klasse, Struktur oder Vereinigung Graphics.mqh 824 26

Preis' - nicht deklarierter Bezeichner Graphics.mqh 824 34

Preis' - irgendein Operator erwartet Graphics.mqh 824 34

'(' - Semikolon erwartet Graphics.mqh 824 39

')' - Ausdruck erwartet Graphics.mqh 824 40

'CMouse' ist keine Klasse, Struktur oder Vereinigung Graphics.mqh 825 21

'Bar' - nicht deklarierter Bezeichner Graphics.mqh 825 29

Bar' - irgendein Operator erwartet Graphics.mqh 825 29

'(' - Semikolon erwartet Graphics.mqh 825 32

')' - Ausdruck erwartet Graphics.mqh 825 33

'CMouse' ist keine Klasse, Struktur oder Vereinigung Graphics.mqh 829 6

Below' - nicht deklarierter Bezeichner Graphics.mqh 829 14

Below' - irgendein Operator erwartet Graphics.mqh 829 14

'(' - unausgewogene linke Klammer Graphics.mqh 829 5

')' - Ausdruck erwartet Graphics.mqh 829 20

')' - unerwartetes Token Graphics.mqh 829 21

illegales 'else' ohne passendes 'if' Graphics.mqh 833 3

Variable 'base' nicht verwendet Graphics.mqh 827 19

'Short_Level_Length_In_Pixels' - nicht deklarierter Bezeichner Graphics.mqh 1050 6

Short_Level_Length_Pix' - nicht deklarierter Bezeichner Graphics.mqh 1053 20

101 Fehler, 11 Warnungen 101 12


 
Dieser Code ist leider eine einzige Einheit, so dass Sie die Datei Utilites.mqh nur verwenden können, wenn Sie zuvor GlobalVariables.mqh und Mouse.mqh verknüpfen. Dies kann direkt in der Datei Utilites.mqh oder in dem Code geschehen, der die erforderlichen Klassen verwendet. Beachten Sie, dass die Eingabevariablen auch in GlobalVariables.mqh enthalten sind. Wenn Sie diese Parameter während der Ausführung Ihres Codes nicht sehen wollen, können Sie das Wort "input" vor ihnen entfernen, aber die Variablen selbst müssen erhalten bleiben.