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

 

Guten Tag und gute Laune an alle!

Ich frage mich, ob dieser Code

bool IsNewBar()
  {
   static datetime TimeOld;
   datetime TimeNew[1];
   CopyTime(_Symbol,PERIOD_CURRENT,0,1,TimeNew);
   if(TimeNew[0]!=TimeOld)
     {
      TimeOld=TimeNew[0];
      return(true);
     }
   return(false);
  }

funktionieren wird? Ich habe ihn vor langer Zeit auf der MQL5-Website gefunden und weiß nicht mehr, von wem ich ihn kopiert habe.

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin #:

Guten Tag und gute Laune für alle!

Ich frage mich, ob ein Code wie dieser:

wird es funktionieren? Ich fand es auf der MQL5 Website vor langer Zeit und erinnere mich nicht, von wem ich es kopiert.

Mit freundlichen Grüßen, Vladimir.

Übrigens benutze ich auch diesen Code und es funktioniert ganz gut, aber es ist ein bisschen breiter, es kann für jede TF verwendet werden!

bool isNewBar(string INST,int K, ENUM_TIMEFRAMES timeFrame)
  {
//----
   bool res=false;               // Variable für das Analyseergebnis 
   int  i=0;                     // Array Zellennummer old_Times[] 
   datetime new_Time[1];         // Uhrzeit des neuen Taktes

   switch(K)
     {
      case 0:  i= 0; break;
      case 1:  i= 1; break;
      case 2:  i= 2; break;
      case 3:  i= 3; break;
      case 4:  i= 4; break;
      case 5:  i= 5; break;
      case 6: i= 6; break;
      case 7: i= 7; break;
      case 8: i= 8; break;
      case 9: i= 9; break;
      case 10: i=10; break;
      case 11:  i=11; break;
      case 12:  i=12; break;
      case 13:  i=13; break;
     }
   // Kopieren Sie die Zeit des letzten Taktes in die Zelle new_Time[0] 
   int copied=CopyTime(INST,timeFrame,0,1,new_Time);
   
   if(copied>0) // alles ok. daten kopiert
      {
      if(old_Times[i]!=new_Time[0])       // wenn die alte Taktzeit nicht gleich der neuen Taktzeit ist
         {
         if(old_Times[i]!=0) res=true;    // wenn dies nicht der erste Durchlauf ist, dann true = new bar
         old_Times[i]=new_Time[0];        // Merken Sie sich die Uhrzeit der Bar 
         }
      }      
//----
   return(res);
  }
 
switch(K)
     {
      case 0:  i= 0; break;
      case 1:  i= 1; break;
      case 2:  i= 2; break;
      case 3:  i= 3; break;
      case 4:  i= 4; break;
      case 5:  i= 5; break;
      case 6: i= 6; break;
      case 7: i= 7; break;
      case 8: i= 8; break;
      case 9: i= 9; break;
      case 10: i=10; break;
      case 11:  i=11; break;
      case 12:  i=12; break;
      case 13:  i=13; break;
     }

Wow.)

 
Dmitry Fedoseev #:

Wow.)

Wer ist in K? Ich glaube, ich habe mir alles angesehen.

Array-Vergleich

Ich war enttäuscht von der neuen Bar, keine Koinzidenz von Trades, aus irgendeinem mir nicht ersichtlichen Grund gibt es keinen Druck, d.h. keine Auslösung oder Serienlastbar oder einfach nur eine zeitliche Verzögerung, ich habe einen hohen Ping (140), vielleicht ist das der Grund.

Ich habe viele Varianten von newbar ausprobiert, überall war ein Stottern, getestet in 3 Terminals auf einem Computer.

Ich entfernte newbar und alle Terminals handelten auf dem Server 1in1 100% für mehrere Tage.

 
Fast235 #:

Wer ist in K? Ich glaube, ich habe mir alles angesehen.

Array-Vergleich

Ich bin enttäuscht von der neuen Leiste, kein Zufall von Geschäften, aus Gründen, die ich nicht verstehe, gibt es keinen Druck, d.h. keine Auslösung oder Serienlastleiste oder nur eine Zeitverzögerung, ich habe einen hohen Ping (140), vielleicht ist das der Grund.

Zu den K-Parametern.

Denn bei dieser Funktion gibt es keinen zweiten Versuch im Falle eines Fehlers bei einem Auftrag.

 

und der Handel ist nicht in OnTick, sondern durch OnChartEvent(spy), und in der schnellstmöglichen Umsetzung, nur durch id, der Rest sind nicht übertragen

7 Symbole, der Durchgang von einem Symbol auf eine große Anzahl von Bedingungen und zählt, in der amerikanischen Sitzung, 0,5-0,7% ryzen 3700x

versuchte sogar eine neue Bar durch eine neue Bar aus dem Indikator, auch abweichende Angebote, 5 normale und dann in einem, dann in der anderen stottert.

 
Ich habe es ganz verworfen, da der Algorithmus sowieso den letzten Balken betrachtet, und in diesem Fall gibt es sogar einen Vorteil, wenn der Handel abgebrochen wird, wird er nicht innerhalb der Grenzen des Spreads und der "Abweichungs"-Beschränkung stattfinden
 
Mihail Marchukajtes #:

Übrigens ja, ich benutze auch diesen Code und es funktioniert ganz gut, nur ist es ein bisschen breiter, Sie können es für jede TF verwenden!

Danke, Mikhail, ich werde ihn zu meiner Funktionsbibliothek hinzufügen.

Mit freundlichen Grüßen, Vladimir.

 
Armen Shahinyan #:

Ich habe keine einfachere Methode als diese.
Verfolgt die Eröffnungszeit des aktuellen Balkens und vergleicht sie bei jedem Tick.


Entfernen Sie die erste Funktion aus dem Code. Und das Leben wird besser werden.

 

Im Allgemeinen sind 2 Umstände interessant:

1. Jeder wurde aus irgendeinem Grund gebannt.

2. Ein neuer Balken ist zeitlich immer anders als der vorherige. Jederzeit, denn es geht immer von links nach rechts. Nimm eine beliebige Zeit. Wenn er nicht mit dem gleichen vorhergehenden zusammenfällt, dann ist der Balken neu.