MQL4 Script - geöffnet bei neuer Balkenfrage - Seite 2
Seite 2 von 573 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 23

Thema: MQL4 Script - geöffnet bei neuer Balkenfrage

  1. #11

    Zitat Zitat von ;
    Ich habe es mit der Bars-Funktion gemacht, bin mir nicht sicher, ob es kugelsicher ist, aber ich denke, es macht auch den Trick
    Beachten Sie, dass diese Methode nicht zuverlässig ist, da MT die ualisierung der Anzahl der Balken stoppt, nachdem die maximale Balkeneinstellung erreicht wurde. Also, das einzige! Zuverlässige Methode ist die Zeit zu überprüfen.

  2. #12

    Zitat Zitat von ;
    {quote} Beachten Sie, dass diese Methode nicht zuverlässig ist, da MT die ualisierung der Anzahl der Balken stoppt, nachdem die Einstellung für die maximale Anzahl an Balken erreicht wurde. Also, das einzige! Zuverlässige Methode ist die Zeit zu überprüfen.
    Ja, einverstanden, definitiv nicht die Bars-Methode. Die zuverlässigste Methode, SeriesInfoInteger zu verwenden und für das LASTBAR_DATE aufzurufen, nach Fehlern zu suchen und bei Fehlern Fehler zu machen und erneut zu fragen, bis die Funktion abgelaufen ist oder ein sauberes Ergebnis angezeigt wird. Hier ist ein Beispiel für eine MTF isNewBar-Funktion ... Code # include lt; Arrays \ ArrayObj.mqhgt; Klasse NewBars: public CObject {ENUM_TIMEFRAMES m_timeframe; datetime m_last_bar_time; public: NewBars (ENUM_TIMEFRAMES tf): m_zeitframe (tf), m_last_bar_time (0) {} bool isNewBar () {uint ms = GetTickCount (); datetime curr; tue {ResetLastError (); curr = (DatumZeit) SeriesInfoInteger (_Symbol, m_timeframe, SERIES_LASTBAR_DATE); } while (_LastError! = ERR_NO_ERROR GetTickCount () - ms lt; 500); if (curr gt; 0 _LastError == ERR_NO_ERROR curr! = m_letzte_Zeit_zeit) {bool res = true; if (m_last_bar_time == 0) res = false; m_last_bar_time = aktuell; Rückgabe Res; } falsch zurückgeben; } bool isMatching (ENUM_TIMEFRAMES tf) {Rückgabe m_timeframe == tf? wahr falsch;} }; bool isNewBar (const ENUM_TIMEFRAMES Zeitrahmen) {statisch CArrayObj tfs; für (int i = tfs.Total () - 1; igt; = 0; i--) {NewBars * tf = dynamische_Ausblendung; NewBars * gt; (tfs.At (i)); if (tf.isMatching (timeframe)) return tf.isNewBar (); } tfs.Add (neue NewBars (Zeitrahmen)); falsch zurückgeben; }

  3. #13
    1 Anhang (e)
    Zitat Zitat von ;
    {quote} Beachten Sie, dass diese Methode nicht zuverlässig ist, da MT die ualisierung der Anzahl der Balken stoppt, nachdem die Einstellung für die maximale Anzahl an Balken erreicht wurde. Also, das einzige! Zuverlässige Methode ist die Zeit zu überprüfen.
    Es wird nicht (ualisierung wird gestoppt) Balken () überschreitet die maximale Anzahl der Balken, wenn die maximale Balkeneinstellung erreicht (und überschritten) wurde

  4. #14

    Zitat Zitat von ;
    {quote} Yup, einverstanden, benutze definitiv nicht die Bars Methode. Die zuverlässigste Methode, SeriesInfoInteger zu verwenden und für das LASTBAR_DATE aufzurufen, nach Fehlern zu suchen und bei Fehlern Fehler zu machen und erneut zu fragen, bis die Funktion abgelaufen ist oder ein sauberes Ergebnis angezeigt wird. Hier ist ein Beispiel für eine MTF isNewBar-Funktion ... #include lt; Arrays \ ArrayObj.mqhgt; Klasse NewBars: public CObject {ENUM_TIMEFRAMES m_timeframe; datetime m_last_bar_time; public: NewBars (ENUM_TIMEFRAMES tf): m_zeitframe (tf), m_last_bar_time (0) {} bool isNewBar () {uint ms = GetTickCount (); Terminzeit...
    Danke, Sie sind sehr freundlich bei der Bereitstellung dieses Beispiels hier und auf meinen anderen Threads. Ich verstehe, was Sie hier getan haben, aber die Linguistik entzieht sich mir immer noch, da ich noch die OO-Seite der MQL4 lernen muss. Ich bin mir auch nicht ganz sicher, ob Ihr Code im Kontext eines Skripts funktioniert, aber ich bin nicht so gut informiert.

  5. #15
    Zitat Zitat von ;
    {quote} Beachten Sie, dass diese Methode nicht zuverlässig ist, da MT die ualisierung der Anzahl der Balken stoppt, nachdem die Einstellung für die maximale Anzahl an Balken erreicht wurde. Also, das einzige! Zuverlässige Methode ist die Zeit zu überprüfen.
    Danke, ich habe widersprüchliche Antworten in verschiedenen Threads gelesen, also war ich mir nicht sicher, aber es funktionierte für mich, also dachte ich mir was zum Teufel

  6. #16
    Zitat Zitat von ;
    {quote} Das geht nicht (ualisierung wird abgebrochen) Bars () überschreitet die maximale Anzahl von Balken in Fällen, in denen die maximale Balkeneinstellung erreicht ist {image}
    Danke für die Antwort, also habe ich Recht, diese Bars-Methode zu verwenden oder nicht? Fühlt sich an, als wäre es einfacher als die Time-Methode und ich mag es, die Dinge einfach zu halten

  7. #17
    Zitat Zitat von ;
    {quote} Danke für die Antwort, also habe ich Recht, diese Bars-Methode zu verwenden oder nicht? Fühlt sich an, als wäre es einfacher als die Time-Methode und ich mag es, die Dinge einfach zu halten
    Keine Methode ist kompliziert: Eingeschlossener Code static datetime _prevTime = 0; datetime _currTime = iTime (NULL, gewünschter Zeitraum, 0); bool _isNewBar = (_prevTime! = _currTime); if (_isNewBar) _prevTime = _currTime;

  8. #18

    Zitat Zitat von ;
    {quote} Keine Methode ist kompliziert: static datetime _prevTime = 0; datetime _currTime = iTime (NULL, gewünschter Zeitraum, 0); bool _isNewBar = (_prevTime! = _currTime); if (_isNewBar) _prevTime = _currTime;
    Danke, ich hatte etwas ähnliches in meinem Skript, aber es hat nicht funktioniert (vorher im ersten Post gepostet), auch wenn ich die RefreshRates () hinzugefügt habe. Ich versuche es erneut mit Ihrem Code, indem Sie ResreshRates () innerhalb und außerhalb der Schleife hinzufügen, damit das Skript neue Informationen erhält.

  9. #19
    Eingefügter Code/--- Globale Variable ----------------------------------------- ------------------------- datetime ArrayTime # 91; # 93 ;, LastTime; void OnTick () {if (NewBar (PERIOD_CURRENT)) {//Dein Code}} bool NewBar (int-Periode) {bool firstRun = false, newBar = false; ArraySetAsSeries (ArrayTime, true); CopyTime (Symbol (), Punkt, 0,2, ArrayTime); if (LetzteZeit == 0) firstRun = true; if (ArrayTime # 91; 0 # 93; gt; LastTime) {if (firstRun == false) newBar = true; LastTime = ArrayTime # 91; 0 # 93 ;; } return newBar; }

  10. #20
    Überprüfen Sie auch diesen Code, der für beliebige Zeitrahmen geeignet ist (ermittelt mit dem ersten Preisangebot): Code #property eingefügt strict void OnStart () {datetime seconds = _Period * 60;/Angabe eines beliebigen Betrags in Sekunden datetime t_last_recorded = 0;/zur Demonion: D while (! IsStopped ()) {RefreshRates (); datetime t = Zeitstrom ();/Zeitpunkt des letzten bekannten Zitats datetime t_normalized = tseconds * seconds; if (t_normalized gt; t_last_recorded) {//neuer Balken printf (neuer Balken!); t_last_recorded = t_normalisiert; } Schlaf (1); }}

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