Discusión sobre el artículo "Gestor de evento "Nueva barra"" - página 6

 

¡Buenos días y buen humor a todos!

Me pregunto si este código

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);
  }

¿funcionará? Lo encontré en el sitio web MQL5 hace mucho tiempo y no recuerdo de quién lo copié.

Saludos, Vladimir.

 
MrBrooklin #:

¡Buenos días y ánimo a todos!

Me pregunto si un código como este:

¿funcionará? Lo encontré en la web de MQL5 hace tiempo y no recuerdo de quien lo copié.

Saludos, Vladimir.

¡Por cierto, yo también uso este código y funciona bastante bien, pero es un poco más amplio, se puede utilizar para cualquier TF!

bool isNewBar(string INST,int K, ENUM_TIMEFRAMES timeFrame)
  {
//----
   bool res=false;               // variable de resultado del análisis 
   int  i=0;                     // matriz número de celda old_Times[] 
   datetime new_Time[1];         // hora de la nueva barra

   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;
     }
   // copia la hora de la última barra en la celda nueva_Hora[0] 
   int copied=CopyTime(INST,timeFrame,0,1,new_Time);
   
   if(copied>0) // todo ok. datos copiados
      {
      if(old_Times[i]!=new_Time[0])       // si la hora de la barra antigua no es igual a la hora de la barra nueva
         {
         if(old_Times[i]!=0) res=true;    // si no es la primera ejecución, entonces true = nueva barra
         old_Times[i]=new_Time[0];        // recuerda la hora del 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;
     }

Vaya.)

 
Dmitry Fedoseev #:

Vaya.)

¿Quién está en K? Creo que lo he mirado todo.

comparación de la matriz

Me decepcionó la nueva barra, no hay coincidencia de oficios, por alguna razón que no entiendo, no hay impresión, es decir, no hay disparo o serieslastbar o simplemente un retraso en el tiempo, tengo un alto ping (140), tal vez esa es la razón.

He probado muchas variantes de newbar, en todas partes era un tartamudeo, probado en 3 terminales en un ordenador.

He quitado newbar y todos los terminales negociados en el servidor 1en1 100% durante varios días.

 
Fast235 #:

¿Quién está en K? Creo que lo he mirado todo.

comparación de la matriz

Estoy decepcionado con la nueva barra, no hay coincidencia de ofertas, por razones que no entiendo, no hay impresión, es decir, no hay disparo o serieslastbar o simplemente un retraso en el tiempo, tengo un alto ping (140), tal vez esa es la razón.

En los parámetros K.

Porque con esta función no hay un segundo intento en caso de error con una orden.

 

y el comercio no está en OnTick, pero por OnChartEvent(spy), y en la implementación más rápida posible, sólo a través de id, el resto no se transfieren

7 símbolos, el paso de un símbolo en un gran número de condiciones y cuenta, en la sesión americana, 0,5-0,7% ryzen 3700x

intentó incluso una nueva barra a través de una nueva barra del indicador, también divergen ofertas, 5 normal y luego en uno, luego en el otro tartamudea.

 
Lo he desechado por completo, de todas formas el algoritmo mira la última barra, y en este caso incluso hay una ventaja, si la operación se cancela, no irá a ninguna parte dentro de los límites de spread y limitación de "desviación".
 
Mihail Marchukajtes #:

Por cierto sí yo también uso este código y funciona bastante bien, sólo que es un poco más ancho, ¡puedes usarlo para cualquier TF!

Gracias, Mikhail, lo añadiré a mi biblioteca de funciones.

Saludos, Vladimir.

 
Armen Shahinyan #:

No tengo un método más sencillo que éste.
Rastrea la hora de apertura de la barra actual y las compara en cada tick.


Quita la primera función del código. Y la vida mejorará.

 

En general, se dan 2 circunstancias interesantes:

1. Todos fueron baneados por alguna razón.

2. Una nueva barra es siempre diferente en el tiempo de la anterior. Cualquier tiempo, porque siempre va de izquierda a derecha. Toma cualquier tiempo. Si no coincide con la misma anterior, entonces la barra es nueva.