MT5 y la velocidad en acción - página 21

 
fxsaber:

Sólo dejó la variante 0-INT_MAX en los robots de combate. Dejó de notar los frenos.

¿Qué se hace entonces con esta historia?

Por supuesto que puedo cambiar la subcuenta cada mes para limitar el historial de pedidos a unos cien mil, pero esa no es la solución :)

 
Dmi3:

¿Qué se hace entonces con esta historia?

Por supuesto, podría cambiar la subcuenta cada mes para limitar el historial de pedidos a cien mil, pero esa no es la solución :)

  static ulong IsHistoryDeals( const long TimeMsc )
  {    
    ulong Res = 0;
/*    
    if (_B(::HistorySelect(TimeMsc / 1000, INT_MAX), 5))
    {
      const int Total = _B(::HistoryDealsTotal(), 1);
      
      if (Total > 100)
        ::Alert("::HistoryDealsTotal() = " + (string)Total + ", TimeMsc = " + NEWTICKS::TimeToString(TimeMsc));
                
      for (int i = Total - 1; !Res && (i >= 0); i--)
      {
        const ulong Ticket = _B(::HistoryDealGetTicket(i), 1);
        
        if ((_B(::HistoryDealGetInteger(Ticket, DEAL_TIME_MSC), 1) >= TimeMsc) &&
            (_B(::HistoryDealGetString(Ticket, DEAL_SYMBOL), 1) == _Symbol))        
          Res = Ticket;
      }
    }    
*/    
    if (_B(::HistorySelect(0, INT_MAX), 1)) // 
    {
      const int Total = _B(::HistoryDealsTotal(), 1);
      
      for (int i = Total - 1; !Res && (i >= NEWTICKS::PrevTotal); i--)
      {
        const ulong Ticket = _B(::HistoryDealGetTicket(i), 1);
        
        if (_B(::HistoryDealGetInteger(Ticket, DEAL_TIME_MSC), 1) < TimeMsc)
          break;
        else if (_B(::HistoryDealGetString(Ticket, DEAL_SYMBOL), 1) == _Symbol) 
          Res = Ticket;
      }
      
      NEWTICKS::PrevTotal = Total;
    }    
    
    return(Res);
  }
 
fxsaber:
De momento veo que en el 99% de los casos sólo hay que utilizar HistorySelect(0, INT_MAX). Intenta no utilizar las otras opciones.

Probablemente sea suficiente con no mover el inicio de la caché, es decir, consultar siempre desde la misma fecha (y que sea 0 es irrelevante).

Tenemos que comprobarlo.

 
Andrey Khatimlianskii:

Probablemente sea suficiente con no mover el inicio de la caché, es decir, consultar siempre desde la misma fecha (y que sea 0 es irrelevante).

Hay que comprobarlo.

Posiblemente. Es difícil ser probador durante mucho tiempo.

 
fxsaber:


Resultado.


En cada garrapata hay un problema.


SZY instaló Win10, LatencyMon muestra que todo está bien.

¿Por qué te haces el ingenuo?

Intentas demostrar que no está bien matar a cache en primer lugar, es tu culpa. Es su propia culpa que esté matando el caché de una gran historia. Y es sólo su problema para ajustar su posición a propósito. Puedes encontrar muchas oportunidades para matar/borrar un montón de cachés en el entorno MQL5.

No te vamos a ayudar - en cualquier lenguaje de programación hay un gran número de opciones para dispararse en el pie y la cabeza.

Se le trataría con normalidad si señalara explícitamente "mire, este soy yo envenenando el alijo a propósito y disparándome".
 
Andrey Khatimlianskii:

Probablemente sea suficiente con no mover el inicio de la caché, es decir, consultar siempre desde la misma fecha (y que sea 0 es irrelevante).

Hay que comprobarlo.

Esto es exactamente lo que he descrito explícitamente.

Si el muestreo se realiza por fecha, no intente hacer una muestra diferente en cada solicitud. Y con hasta la fecha tratar de ponerlo adelante.

Controlamos específicamente a la posición y la reducimos automáticamente a INT_MAX si excede o es igual a la fecha actual.

 
Renat Fatkhullin:

Se trata de demostrar que matar el caché no es la norma, ni antes ni ahora. La culpa es tuya por matar el caché de una gran historia. Y es sólo su problema para ajustar específicamente de una posición. Puedes encontrar muchas oportunidades para matar/borrar un montón de cachés en el entorno de MQL5.

Una biblioteca utiliza HistorySelect de TimeCurrent. La otra es de cero. ¿Por qué cojones tengo que meterme en las tripas de las bibliotecas para descubrir que no son compatibles entre sí por su rendimiento?

Un ejemplo sucinto es averiguar por qué bibliotecas inofensivas pueden interferir entre sí. Por último, dedíquese al pensamiento crítico.

 
fxsaber:

Una biblioteca utiliza HistorySelect de TimeCurrent. La otra es de cero. ¿Por qué cojones hay que meterse en las tripas de las bibliotecas para descubrir que no son compatibles entre sí por su rendimiento?

Un ejemplo sucinto es averiguar por qué bibliotecas inofensivas pueden interferir entre sí. Encienda por fin su pensamiento crítico.

Es tan jodido que es tu problema personal que uses las bibliotecas y apagues la cabeza.

 
Renat Fatkhullin:

Es tu maldito problema usar las bibliotecas y apagar la cabeza.

¿Por qué no vas y escribes todo desde cero en Asm tú mismo? Resulta que está bien cuando cada una de las bibliotecas vuela por separado. Pero en cuanto empiezas a usar los dos a la vez, empiezas a tener lentitud.

 

Hemos reportado exitosamente errores a Microsoft, pero nunca hemos escrito o acusado que hay cerca de N millones de oportunidades para matarnos en su API.

Sobre todo, utilizando las bibliotecas de otras personas en el proceso.

Razón de la queja: