Características del lenguaje mql5, sutilezas y técnicas - página 39

 
Vasiliy Sokolov:
No se mencionó la sustitución del reparto por completo.
Sí, han cortado las posibilidades.
 
Vasiliy Sokolov:

El reparto arbitrario a través de la escritura/lectura binaria... Se apagan las luces. No hace falta leer más...

¿Tiene alguna sugerencia mejor?
 
Vasiliy Sokolov:

p.d. He mirado su código:

El reparto arbitrario a través de la escritura/lectura binaria... Se apagan las luces. No sigas leyendo...

Hay un casting arbitrario a través de la unión - cualquier estructura simple sin constructores personalizados y operadores de copia. Para todos los artículos de este recurso, esta fundición funcionará.

template <typename T>
class CASTING
{
public:
  template <typename T1>
  static const T Casting( const T1 &Value )
  {
    union CAST
    {
      T1 Value1;
      const T Value2;

      CAST( const T1 &Value)
      {
        this.Value1 = Value; // кастомный оператор может все испортить
      }
    };

    const CAST Union(Value);

    return(Union.Value2);
  }
};

#define _C(A, B) CASTING<A>::Casting(B)

void OnStart()
{
  MqlTick Tick = {0};
  
  Tick = _C(MqlTick, Tick); // Tick = (MqlTick)Tick;
}

Pero si quieres cubrir el 100% del reparto - a través de archivos. Hay una opción.

 
Combinador:
¿Tienes una sugerencia mejor?
Evidentemente, no utilices constructores personalizados en estructuras y operadores de asignación. Escribe un código sencillo.
 
Vasiliy Sokolov:
Evidentemente, no utilices constructores personalizados en estructuras y operadores de asignación. Escribe un código sencillo.
Entonces no debes usar campos const de estructuras.
 

Es una prueba popular

if (ArrayResize(Array, NewSize) == NewSize)
// ....

no es en absoluto lo mismo que

if (ArrayResize(Array, NewSize) == ArraySize(Array))
// ....
 

En realidad, ArrayResize() devuelve

Valor de retorno

Si tiene éxito, la función devuelve el número de todos los elementos contenidos en la matriz después de redimensionar; en caso contrario, devuelve -1 y la matriz no se redimensiona.


 
Roffild:

En realidad, ArrayResize() devuelve

El comportamiento se cambió hace un año. Aclarado en la Ayuda esta semana.
 
CopyTicks asíncrono sólo en indicadores

Ahora sólo tenemos una petición de indicadores y falla con los datos que tenemos. Y la paginación funciona por sí misma.

Los expertos y los guiones tienen un enfoque ligeramente diferente. Allí se hacen varios intentos para esperar los datos necesarios. Mientras llegan los datos, se hacen intentos. En cuanto hay problemas con la conexión, la abandonamos inmediatamente

 

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Inscripción para el Campeonato MetaQuotes-Demo de mayo

Vladimir Karputov, 2017.05.05 11:54

Añadido. Sí, necesito recorrer toda la base de señales en el terminal:

SignalBaseTotal

Devuelve la cantidad total de señales disponibles en el terminal


Por cierto, recomiendo antes de esta ejecución (especialmente cuando se cambia desde otro servidor o justo después del inicio) hacer clic al menos una vez en la pestaña "Señales" del terminal - esto debería activar la paginación de la base de datos real.