object_text einem Anfänger helfen
Seite 1 von 572 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: object_text einem Anfänger helfen

  1. #1
    Würde jemand sehr freundlich etwas Licht darauf werfen.
    Im Folgenden wird der Text Opn: auf dem Bildschirm auf den aktuellen Balken in MT4 gelegt

    Aber was ich brauche ist, dass der Text jeden Tag um 9 Uhr in der Bar ist.

    Ich kann nicht finden, was ich anstelle von CurrentTime tun muss, um es zu erreichen.
    Oder vielleicht gibt es eine bessere Methode.
    Vielen Dank im Voraus für jede Hilfe.

    datetime uelleZeit;
    {
    ObjectCreate (AtOpen, OBJ_TEXT, 0,0,0);
    ObjectMove (AtOpen, 0, CurrentTime, Hoch [1]);
    ObjectSetText (AtOpen, Opn:, 10, Calibri, clrWhite);
    }

  2. #2

    Zitat Zitat von ;
    Würde jemand sehr freundlich etwas Licht darauf werfen. Das Folgende setzt den Text Opn: auf dem Bildschirm auf den aktuellen Balken in MT4. Aber was ich brauche ist, dass der Text jeden Tag um 9 Uhr in der Bar ist. Ich kann nicht finden, was ich anstelle von CurrentTime tun muss, um es zu erreichen. Oder vielleicht gibt es eine bessere Methode. Vielen Dank im Voraus für jede Hilfe. datetime uelleZeit; {ObjectCreate (AtOpen, OBJ_TEXT, 0,0,0); ObjectMove (AtOpen, 0, CurrentTime, Hoch [1]); ObjectSetText (AtOpen, Opn:, 10, Calibri, clrWhite); }
    Jedes Diagrammobjekt muss einen eindeutigen Namen haben. Hier ist ein Beispielskript, das Sie im Debugger ausführen können, um durchzusehen, was gerade läuft. Hinweis: Ich verwende die Klasse std library
    https://www.mql5.com/en/docs/standar...hartobjecttextum es einfacher zu machen .. Code #property strict # include lt; ChartObjects \ ChartObjectsTxtControls.mqhgt; void OnStart () {int object_count = 0; für (int i = Balken-1; igt; = 0; i--) {if (TimeHour (Zeit # 91; i # 93 == 9 TimeMinute (Zeit # 91; i # 93 == 0) {Zeichenfolge Objektname = __ Objektname __ Zeichenfolge ( Objektanzahl); CChartObjectText Text; if (text.Create (0, Objektname, 0, Zeit # 91; i # 93;, Hoch # 91; i # 93; 10 * _Point)) {text.Anchor (ANCHOR_LEFT); Text.Angle (90); text.Description (lt; ----- OPEN ----- lt; lt; text.Color (clrDarkOrange); text.Font (Consolas); text.FontSize (9); text.Detach (); }}}}

  3. #3
    Vielen Dank Nicholschen. Ich werde das Skript wie vorgeschlagen durcharbeiten. Ihre Hilfe wird sehr geschätzt.

  4. #4

    Zitat Zitat von ;
    Vielen Dank Nicholschen. Ich werde das Skript wie vorgeschlagen durcharbeiten. Ihre Hilfe wird sehr geschätzt.
    Hi teabreak, hast du Fortschritte gemacht? Das Lernen von Code ist die Mühe wert. Nicholshen, vielen Dank für die OOP-Beispiele hier und anderswo (Mach weiter!). Ich habe mich ein bisschen damit beschägt und ein paar hilfreiche Dinge gelernt. Fragen zu teabreak: Q: Willst du nur 1 Marker auf dem Chart, für den letzten passenden Balken? Oder mehrere Marker, wie Nicholschens? (Nicholschens Beispiel macht das später, Ihr Versuch ist der erstere, weil Sie nur einen Objektnamen AtOpen_Text verwendet haben). F: Welchen Zeitrahmen für Diagramme? lt; = H1, oder möchten Sie, dass eine H4-Leiste den Pfeil anzeigt? (Die, die die 9 Uhr Zeit enthält). (Es ist am besten, die Startzeit für den Balken zu berechnen, der MarkAtTime enthält. Dann funktioniert es für alle TF-Diagramme von M1 bis H4 für diesen täglichen Marker). F: Wann möchten Sie es anzeigen? Immer um 9 Uhr jeden Tag? Oder zur Startzeit der Bar, die die 9 Uhr Zeit umfasst? (Ich gehe davon aus, dass Ersteres das Beste ist). F: Wenn der letzte 9-Uhr-Balken angezeigt wird, wird er zunächst zum Preis des vorherigen Balkens Hoch [1] angezeigt. Ist es nicht besser, wenn High [0] High [1] überschreitet? (Sonst wird es über der 9-Uhr-Leiste sein). Und ein Vorschlag: Was auch immer Sie entscheiden, der beste Code sollte tun, was auch immer es gerade einmal tut, und nicht dasselbe immer und immer wieder wiederholen. (Diese Anforderung macht Code schwieriger zu schreiben, ist es aber wert). Nicholschenhens schnelles Beispiel lässt jeden Tick und jeden Balken laufen, also ist es ineffizient (aber er weiß das absolut, also kritisiere ich nicht!). In seinem Code könnte der Anfangspunkt von Bars-1 für die for-Schleife stattdessen ein Limit sein, das ist: extern int MaxBars = 0;/0 = unbegrenztes int limit = MathMin (Balken, Balken-prev_calculated);/Wobei prev_calculated mit OnCalculate () {... return (prev_calculated) im neuesten Codingstil ist; } if (limit == Balken) limit--;/Verhindere Array außerhalb des Bereichs, wenn (MaxBarsgt; 0) limit = MathMin (limit, MaxBars);/für (int i = limit; igt; = 0; i--) {...} Erstmal durch, limit = Bars-1 (oder, ist MaxBars). Danach ist es normalerweise 0 bis ein neuer Balken kommt, dann ist es 1 für nur einen Tick. Beachten Sie, dass es schwierig sein kann, nur mit i == 1 oder i == 0 umzugehen. Manchmal schreibe ich einen einzigartigen Code-Block nur für i == 0, nur um den Kontext eines neuen Balkens zu behandeln, anstatt den gleichen aktuellen Balken zu wiederholen. (In Bezug auf Limit habe ich gerade einen Fehler in einem meiner eigenen CPU-intensiven Programme entdeckt, wo ich glaubte, Limit zu verwenden (meistens 1 oder 0), aber ich habe ihn versehentlich auf Bars-1 zurückgesetzt, und es war unglaublich langsam es, und überladen meine CPU mit einer Reihe von verschwendeten Berechnungen. Fixed it!). ROTATED TEXT DISPLAY MT4 Fehler: Unabhängig von OOP oder regulären C-style-Code, Fyi, ein Problem, das Sie möglicherweise entdeckt haben, ist ein OBJ_TEXT-Objekt bei 90-Grad hat ein Problem aufgrund eines Fehlers mit MetaTrader4 (b1090). Ich beobachtete das, als der Kurs höher stieg, also würde der Text ganz oben auf dem Chart stehen. Der um 90 Grad gedrehte Text verschwindet vollständig, wenn ein Teil des Textes außerhalb oder außerhalb des Bildschirms angezeigt wird. Ändere es stattdessen auf 270 Gradund es funktioniert meistens gut. Dieser vertikale Text verschwindet möglicherweise, wenn die linkenrechten Kanten des Diagramms überlappt werden, aber das ist hoffentlich selten, solange Sie die Diagrammverschiebung verwenden (Dadurch entsteht ein leerer Raum rechts vom letzten Balken; ich bevorzuge ihn trotzdem) . Der Fehler ist einfach zu reproduzieren: Zeichnen Sie jeden Text manuell mit einer relativ langen Beschreibung. Ändern Sie in der Registerkarte Parameter für die Objekteigenschaften Winkel in Grad zu 90.0. Ziehen Sie den Text einfach nach oben oder unten, bis ein Teil die obere oder untere Grenze berührt und der Text vollständig verschwindet. Mach es 270 und es funktioniert viel besser für obenunten. Mach es 115 und es verschwindet für alle vier Kanten! Mach es 315 und es funktioniert für alle vier Kanten. Ich habe den Fehler MetaQuotes gemeldet. Wir werden sehen, wie lange es dauert, sie zu reparieren. Aus diesem Grund ist es eine gute Idee, (auch) einen Pfeil zusammen mit dem Text bei 270 zu erstellen. Pfeile über dem Preis sollten immer sichtbar sein, auch wenn der Preis einen neuen Höchstwert erreicht. Wenn der Text aufgrund einer Überlappung mit einer Kante verschwindet, haben Sie immer noch eine Markierung auf dem Diagramm.

  5. #5
    Hey pips4life Zunächst einmal vielen Dank, dass du dir die Zeit genommen hast zu antworten. Es ist sehr großzügig von Ihnen, einem Anfänger zu helfen. Anstatt Code durchgängig zu lernen, bestand meine Herangehensweise darin, genug Verständnis dafür zu bekommen, nur um meine Trading-Ideen umzusetzen. Diese Ideen sind für mich begrenzt, so dass in der Theorie ein paar spezifische grundlegende Verfahren ausreichen sollten. Kurz gesagt, ich habe Code im Allgemeinen nicht als das Ding selbst angesehen, sondern als das, was einen an das Ding bringt, wie das Sprichwort sagt. Irgendwann hoffend, MQL auf diesem Weg gründlicher zu lernen. Aus diesem Grund fand ich deinen Beitrag extrem hilfreich und die Qs, die du am relevantesten gesammelt hast und weiterhin Code an meinen Handel anpasste, anstatt Code zu lernen, um irgendeine Art von Handel zu betreiben, wenn du siehst, was ich meine .... A : Ich möchte bei 9 und 1700 nur einen Textmarker an das Diagramm anpassen. A: Nur in einem Zeitrahmen. A: Am Ende der 9 und 1700 Bars. A: Ein sehr guter Punkt! Vielen Dank. Ich brauche den Text wirklich, um bei den Highs der 9 und 1700 Bars zu sein, wenn sie schließen. Ich stimme völlig zu, ich möchte, dass diese beiden Text-Ereignisse nur einmal vorkommen. Im Moment mache ich alles unter void OnTick () - Funktion, so dass meine instinktive Antwort darauf wäre, eine Variable zu verwenden, um die Tage zu steuern, so dass alle Ereignisse nur zwischen 9 und 1700 laufen können, und eine andere Variable, um die Text-Ereignisse zu steuern. so dass jede Variable beim ersten Auftreten ihrer jeweiligen Ereignisse um 0 zu 1 inkrementiert wird und bei 1700 für den nächsten Tag auf 0 zurückgesetzt wird. Darüber hinaus arbeite ich jetzt an Ihrem for-Schleife-Beispiel, das eine viel umfassendere Lösung vorschlägt. Glücklicherweise möchte ich keinen Text drehen, aber vielen Dank für die Aufmerksamkeit. Ich finde nicht, dass MQL der einfachste CompilerIDE ist, mit dem man arbeiten kann, also nichts, das entmutigender ist als ein Systemfehler. Ich stimme Ihnen sehr zu, das Lernen von Code ist es wert. Die Hilfe, die Sie selbst und Nicholshen geben, ist für Leute, die wie ich starten, von unschätzbarem Wert und ich denke, es kann auch dem erfahreneren Schüler helfen, einige Grundlagen gleichzeitig zu überprüfen. Der F1-Knopf ist in Ordnung, aber es dauert nicht lange, bis ein Neuling mit dem Tech-Talk drin steckenbleibt. Nochmals vielen Dank euch beiden sehr für die Hilfe.

  6. #6
    1 Anhang (e)
    Zitat Zitat von ;
    {quote}, vielen Dank für die OOP-Beispiele hier und anderswo (Mach weiter!)
    Nun, da Sie gefragt haben, ist hier ein Test für ein Projekt, an dem ich arbeite, um Diagrammprofile aus DiagrammstudienObjekten zu erstellen, die alle Zustände in Dateien speichernladen, anstatt die Vorlagen zu hacken. Dieses Beispiel enthält einige erweiterte Entwurfsmuster und ist ein gutes Beispiel für Vererbung, Polymorphie und das Verwalten zirkulärer Abhängigkeiten. Der beste Weg, um einzutauchen, ist ein Break-Point bei OnInit und hineindurch ihn hindurch ...
    https://www.tradingintuitive.com/att...5583912874.rar

  7. #7
    1 Anhang (e)
    Zitat Zitat von ;
    Hey pips4life Zunächst einmal vielen Dank, dass du dir die Zeit genommen hast zu antworten. Es ist sehr großzügig von Ihnen, einem Anfänger zu helfen. Anstatt Code durchgängig zu lernen, bestand meine Herangehensweise darin, genug Verständnis dafür zu bekommen, nur um meine Trading-Ideen umzusetzen. Diese Ideen sind für mich begrenzt, so dass in der Theorie ein paar spezifische grundlegende Verfahren ausreichen sollten. Kurz gesagt, ich habe Code im Allgemeinen nicht als das Ding selbst angesehen, sondern als das, was einen an das Ding bringt, wie das Sprichwort sagt. Irgendwann hoffend, MQL auf diesem Weg gründlicher zu lernen ....
    Dies sollte den Trick machen.
    https://www.tradingintuitive.com/att...6180098658.mq4

  8. #8
    wow danke für deinen code Nicholschen. So eine große Hilfe. Ich denke, ich sollte herausfinden können, warumwie die Prozesse und Funktionen funktionieren, aber nicht in der Lage sind, eine Beschreibung für die Rolle zu finden, die der lt; und das GT; Spielen Sie in Ihrer Zeile #include lt; ChartObjects \ ChartObjectsTxtControls.mqhgt; Bitte, würdest du es erklären?

  9. #9

    Zitat Zitat von ;
    wow danke für deinen Code. So eine große Hilfe. Ich denke, ich sollte herausfinden können, warumwie die Prozesse und Funktionen funktionieren, aber nicht in der Lage sind, eine Beschreibung für die Rolle zu finden, die der lt; und das GT; Spielen Sie in Ihrer Zeile #include lt; ChartObjects \ ChartObjectsTxtControls.mqhgt; Bitte, würdest du es erklären?
    Stellen Sie sich die Include-Direktive als Kopier- und Einfügemechanismus vor. Es weist den Compiler buchstäblich an, diese Datei zu nehmen und ihren Inhalt genau an dieser Stelle einzufügen. Wenn das Include spitze Klammern verwendet, greift es auf Dateien von einem absoluten Pfad zu (Include-Verzeichnis), und bei MQL ist dies immer der MQL \ Include-Ordner. Wenn Sie also den Code sehen wollten, würden Sie zum Include-Ordner gehen und den Unterordner und die Datei öffnen, um die Definitionen zu sehen. Sie können Dateien auch in Anführungszeichen einschließen, die den Compiler anweisen, die Datei im relativen Pfad zu suchen.
    http://en.cppreference.com/w/cpp/preprocessor/include

  10. #10
    Ich habe vergessen hinzuzufügen, dass der einfachste Weg, um aus dem Code anderer Leute zu lernen, der eingebaute Debugger ist.
    https://www.metatrader5.com/en/metae...elopment/debugSie möchten zum Beispiel einen Unterbrechungspunkt bei OnInit setzen und den Step-In-Button verwenden und dem Programm den ganzen Weg folgen. Wenn das Programm irgendwelche Bibliotheksdateien verwendet, öffnet der Debugger automatisch diese Dateien und bringt Sie zu der Codezeile, die gerade ausgeführt wird. Eingefügtes Video

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
Die tradingintuitive Webseite verwendet Cookies
Wir nutzen Cookies, um Ihnen das Webseitenerlebnis bestmöglich anbieten zu können. Durch weitere Nutzung der Webseite erlauben Sie die Nutzung von Cookies. Für weitere Details und wie Sie ggf. diese Einstellungen verändern können, lesen Sie bitte unsere Datenschutzbestimmung. Lesen Sie mehr