Errores, fallos, preguntas - página 2750

 
fxsaber:

Lo siento, no lo he formulado bien.

Lo que más me ha confundido ha sido tu énfasis inicial en las cadenas, aunque se trate de la función.

Si la prueba se hubiera hecho con la función caché, habría sido mucho más clara

 
Sergey Dzyublik:

Como posible solución al problema, los desarrolladores sugieren introducir una variable predefinida:

¿Y por qué dos llamadas consecutivas en un intervalo deberían dar el mismo resultado?

void f()
{
   MqlTick tick1, tick2; 
   SymbolInfoTick(Symbol(),tick1); //1
   /*вычисления*/
   SymbolInfoTick(Symbol(),tick2); //2
}
const MqlTick _Tick;
void f()
{
   MqlTick tick1, tick2; 
   tick1 = _Tick; //1
   /*вычисления*/
   tick2 = _Tick; //2
}
 
A100:

¿Y por qué dos llamadas consecutivas en un intervalo deberían dar el mismo resultado?

No deberían. Pero para una prueba sobre un personaje nativo, está bien.
 
A100:

¿Y por qué dos llamadas consecutivas en un intervalo deberían dar el mismo resultado?

Porque sólo estamos hablando de Tester sin usar Sleep- 99% de los EAs.

No puedo decir nada sobre los retrasos arbitrarios de los probadores, ya que nunca he visto que este modo sea útil.

 
fxsaber:

No puedo decir nada sobre los retrasos arbitrarios del probador, ya que nunca he visto que este modo sea útil.

Sólo lo he utilizado para depurar las funciones de trabajo con los pedidos

Es bastante práctico ver cuánto cambiará la pendiente del gráfico del probador, es decir, cuánto se "retrasa" la lógica de trabajo con las órdenes de mercado

 
Sergey Dzyublik:

Un defecto en el depurador ME (build 2370) - después de que se dispara un punto de interrupción, en lugar de continuar la ejecución del código pulsando (F5), el mismopunto de interrupciónse dispara de nuevosin ejecutar ningún código.

Pasos a seguir:
1) Establezca manualmente
el punto de interrupción para ambas líneas " arr.Add()";
2) Inicie la depuración (F5);
3) Utilice PCM para abrir el archivo anidado <Generic\ArrayList.mqh> en una nueva pestaña.
4) Encuentra la línea "if(m_size==ArraySize(m_items))" en la función "bool CArrayList::Add(T item)" y estableceel punto de interrupción manualmente.
5) En la pestaña "
ArrayList.mqh", continúe ejecutando el código (F5).

Esto
activará el mismopunto de interrupción que antes sin ninguna ejecución de código real.

Gracias por el mensaje.

Corregido por

 
fxsaber:

Porque sólo estamos hablando del Probador sin usar el Sueño- 99% de los EAs.

No puedo decir nada sobre los retrasos arbitrarios de los probadores, ya que nunca he visto que este modo sea útil.

Sin cambiar nada fundamentalmente, es más fácil hacer (que de hecho es el caso) esa grabación:

SymbolInfoTick( NULL, tick ); //1

significaría

SymbolInfoTick( Symbol(), tick ); //2

al menos no hay dudas sobre la copia de cadenas

 
A100:

Sin cambiar fundamentalmente nada, es más fácil hacer (que de hecho lo es) que la entrada

significaría

al menos desaparece la cuestión de la copia de líneas

no es lo que pide, necesita el acceso más rápido a la estructura MqlTick en cada tick.

es una especie de paradoja que haya acceso a _Symbol .... pero no tiene acceso a

const MqlTick _Tick; // Текущий _Symbol-тик.

aunque el lenguaje MQL se posiciona como el lenguaje para el desarrollo de estrategias comerciales.... No sé qué tipo de TS hay si no se conocen los precios actuales del tick actual

 
Igor Makanu:

pide algo más al final, necesita el acceso más rápido posible a la estructura MqlTick en cada tick

¿Y qué hay de malo en

SymbolInfoTick( NULL, tick ); //1

¿no es suficiente? ¿Muéstrame dónde está el cuello de botella? Si también es lento, entonces los desarrolladores tienen una manera de inline/optimizar dicha llamada - sin ningún cambio fundamental

 
A100:

Qué es lo que no le gusta

¿no es suficiente? Si también es lento, entonces los desarrolladores tienen una forma de inline/optimizar dicha llamada

sí es lento, al menos en el probador, lo escribo en el probadorhttps://www.mql5.com/ru/forum/1111/page2749#comment_16487642

con un gran número de pases del optimizador hay una ganancia


No sé cómo explicarlo, no sé cómo explicar cosas elementales...

¿cómo se escriben los EA? - Compilas una librería en estilo procedimental u OOP, cada función es totalmente transferible a otro proyecto, y para asegurar esto escribes Bid, Ask everywhere - mi ejemplo. A continuación, se monta una estrategia de negociación a partir de los espacios en blanco. Lo que los desarrolladores ofrecen ahora - escribir SymbolInfoDouble() en todas partes