Diskussion zum Artikel "Die Ereignisverarbeitungsroutine "Neuer Balken"" - Seite 3

 
laplacianlab:

Guter Artikel, danke für den Austausch! All das war sehr nützlich!

Wie auch immer, ich habe Ihre isNewBar-Funktion genommen und es wirft die folgende Meldung beim Kompilieren:"möglicher Datenverlust aufgrund der Typkonvertierung".

Also habe ich die Var-Typen von datetime auf long geändert:

Jetzt kompiliert sie ohne Probleme und scheint gut zu funktionieren. Ich danke Ihnen!


Es ist wahrscheinlich klarer, es so zu ändern:

   datetime lastbar_time=(datetime)SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);
 

Bei der ersten Möglichkeit, eine neue Spaltenzeile anzufordern, verstehe ich nicht, wie die Anzahl der neuen Spalten direkt der Zahl 1 zugeordnet werden kann;

 //--- Prüfung auf neue Spaltenzeilen.
   if(m_lastbar_time<newbar_time)       
     { 
      m_new_bars=1;               // Anzahl der neuen Spaltenzeilen
      m_lastbar_time=newbar_time; // Erinnern Sie sich an die letzte Taktzeit
      return(true);
     }
   //--- //--- Suche nach neuen Spaltenzeilen.
   if(m_lastbar_time<newbar_time)       
     { 
      m_new_bars=1;               // Anzahl der neuen Spaltenzeilen
      m_lastbar_time=newbar_time; // Erinnern Sie sich an die letzte Taktzeit
      return(true);
     }
   //---
 

Nach den Regeln der Objektmodellierung ist es eine falsche Bezeichnung, es CIsNewBar zu nennen.

Wenn Auto eine Klasse ist, kann ich ein Auto-Objekt erstellen/besitzen. Wenn meine Klasse jedoch "ÉUmCarroNovo" ist, können wir ein "ÉUmCarroNovo" haben oder besitzen.

Der Autor hätte es CNewBarChecker nennen sollen. Jemand könnte einen New Car Checker erfinden und ihn erstellen (unsere Klasse wäre NewCarChecker.

[Gelöscht]  
Sie verwenden keine Zeit, Sie verwenden Balken
 
Es gibt so viele Code-Variationen in dem Artikel, aber am Ende ist es immer noch nicht klar, welche Funktion ist richtiger, auf MT4 zu verwenden, um zumindest ein wenig die Korrespondenz von dem, was der Tester zeichnet mit dem Handel zu erhöhen. Geben Sie mir einen Tipp!
 
Pavel Komarovsky:
Es gibt so viele Code-Variationen in dem Artikel, aber am Ende ist es immer noch nicht klar, welche Funktion ist richtiger, auf MT4 zu verwenden, um zumindest ein wenig die Korrespondenz von dem, was der Tester zeichnet mit dem Handel zu erhöhen. Geben Sie mir einen Tipp!
datetime counted_bar = 0;

int OnInit()
{
   counted_bar = 0; // wenn der letzte Takt beim Neustart analysiert werden soll
   ...

void OnTick()
{
   // Wenn ein neuer Balken vorhanden ist
   if ( iTime( _Symbol, _Period, 0 ) > counted_bar )
   {
      counted_bar = iTime( _Symbol, _Period, 0 );

      // Indikatoren analysieren
      ...
   }
 
Andrey Khatimlianskii:

Andrey, vielen Dank. Sagen Sie mir, warum iTime jetzt verwendet wird. Früher, so erinnere ich mich, basierten die meisten Funktionen und Beispiele auf iBars.

FunktioniertiTime genauer?

 
Pavel Komarovsky:

Andrey, vielen Dank. Sagen Sie mir, warum iTime jetzt verwendet wird. Früher, so erinnere ich mich, basierten die meisten Funktionen und Beispiele auf iBars.

FunktioniertiTime genauer?

Ich habe nie iBars für diesen Zweck verwendet, ich weiß es nicht.
 
Ich frage mich, warum dieses Beispiel die Zeitreihendaten nicht erhalten kann? Copy... immer -1 und Bars() immer 0. D.h. kein Zugriff auf Daten aus der Klasse
 

Dieser Artikel ist so gut, dass er sogar in MQL5-Programmierkursen verwendet wird, einschließlich Kommentaren, Zusammenarbeit und Fehlerbehebungen. Herzlichen Glückwunsch an Sie alle.