Errores, fallos, preguntas - página 2279

 
Vladislav Andruschenko:

estaba a punto de responder, pero TÚ has respondido a tu propia pregunta.

Gracias por la confirmación)

 

Buenas tardes,

¿Podría hacer que estas llamadas a funciones funcionen en la prueba de estrategia, por favor? Gracias.

bool scaleFix=false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   ChartSetInteger(ChartID(),CHART_SCALEFIX,true);
   scaleFix=ChartGetInteger(ChartID(),CHART_SCALEFIX);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//---
   if(rates_total!=prev_calculated)  
     {
      double max=iHigh(_Symbol,_Period,iHighest(_Symbol,_Period,MODE_HIGH,Period)); 
      double min=iLow (_Symbol,_Period, iLowest(_Symbol,_Period,MODE_LOW, Period));
      if(scaleFix && ChartSetDouble(ChartID(),CHART_FIXED_MAX,max))
         printf("Chart fixed max is %f, should be %f",ChartGetDouble(ChartID(),CHART_FIXED_MAX),max); 
      if(scaleFix && ChartSetDouble(ChartID(),CHART_FIXED_MIN,min))
         printf("Chart fixed min is %f, should be %f",ChartGetDouble(ChartID(),CHART_FIXED_MIN),min); 
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
2018.09.06 12:54:55.757 2018.09.04 12:00:00   Chart fixed max is 1.171770, should be 1.162740
2018.09.06 12:54:55.758 2018.09.04 12:00:00   Chart fixed min is 1.158410, should be 1.155760
2018.09.06 12:54:55.765 2018.09.04 13:00:00   Chart fixed max is 1.171770, should be 1.162670
2018.09.06 12:54:55.765 2018.09.04 13:00:00   Chart fixed min is 1.158410, should be 1.155590
2018.09.06 12:54:55.772 2018.09.04 14:00:00   Chart fixed max is 1.171770, should be 1.162280
2018.09.06 12:54:55.772 2018.09.04 14:00:00   Chart fixed min is 1.158410, should be 1.154940
2018.09.06 12:54:55.781 2018.09.04 15:00:00   Chart fixed max is 1.171770, should be 1.162070
2018.09.06 12:54:55.781 2018.09.04 15:00:00   Chart fixed min is 1.158410, should be 1.154940
2018.09.06 12:54:55.789 2018.09.04 16:00:00   Chart fixed max is 1.171770, should be 1.162020
2018.09.06 12:54:55.789 2018.09.04 16:00:00   Chart fixed min is 1.158410, should be 1.154940
2018.09.06 12:54:55.799 2018.09.04 17:00:00   Chart fixed max is 1.171770, should be 1.161980
2018.09.06 12:54:55.800 2018.09.04 17:00:00   Chart fixed min is 1.158410, should be 1.153890

 
Por alguna razón todas las órdenes de mercado en InstaForex-Server se ejecutan más de un segundo
2018.09.06 14:08:22.754 Trades  '9424479': instant buy 0.01 CADCHF at 0.7360 (deviation: 1000)
2018.09.06 14:08:22.936 Trades  '9424479': accepted instant buy 0.01 CADCHF at 0.7360 (deviation: 1000)
2018.09.06 14:08:23.944 Trades  '9424479': deal #9539619 buy 0.01 CADCHF at 0.7360 done (based on order #10514041)
2018.09.06 14:08:23.944 Trades  '9424479': order #10514041 buy 0.01 / 0.01 CADCHF at 0.7360 done in 1195.200 ms
2018.09.06 14:08:23.944 Trades  '9424479': modify #10514041 buy 0.01 CADCHF sl: 0.0000, tp: 0.0000 -> sl: 0.0000, tp: 0.8350
2018.09.06 14:08:24.134 Trades  '9424479': accepted modify #10514041 buy 0.01 CADCHF sl: 0.0000, tp: 0.0000 -> sl: 0.0000, tp: 0.8350
2018.09.06 14:08:24.134 Trades  '9424479': modify #10514041 buy 0.01 CADCHF -> sl: 0.0000, tp: 0.8350 done in 184.895 ms
2018.09.06 14:08:24.134 Trades  '9424479': instant sell 0.01 CADCHF at 0.7350, close #10514041 buy 0.01 CADCHF 0.7360 (deviation: 1000)
2018.09.06 14:08:24.314 Trades  '9424479': accepted instant sell 0.01 CADCHF at 0.7350, close #10514041 buy 0.01 CADCHF 0.7360 (deviation: 1000)
2018.09.06 14:08:25.323 Trades  '9424479': deal #9539620 sell 0.01 CADCHF at 0.7350 done (based on order #10514042)
2018.09.06 14:08:25.323 Trades  '9424479': order #10514042 sell 0.01 / 0.01 CADCHF at 0.7350 done in 1193.896 ms
2018.09.06 14:08:25.323 Trades  '9424479': buy limit 0.01 CADCHF at 0.6360
2018.09.06 14:08:25.509 Trades  '9424479': accepted buy limit 0.01 CADCHF at 0.6360
2018.09.06 14:08:25.510 Trades  '9424479': order #10514043 buy limit 0.01 / 0.01 CADCHF at market done in 181.861 ms
2018.09.06 14:08:25.510 Trades  '9424479': cancel order #10514043 buy limit 0.01 CADCHF at 0.6360
2018.09.06 14:08:25.691 Trades  '9424479': accepted cancel order #10514043 buy 0.00  at market
2018.09.06 14:08:25.691 Trades  '9424479': cancel #10514043 buy limit 0.01 CADCHF at market done in 181.474 ms
2018.09.06 14:08:25.692 Trades  '9424479': buy stop 0.01 CADCHF at 0.8360
2018.09.06 14:08:25.878 Trades  '9424479': accepted buy stop 0.01 CADCHF at 0.8360
2018.09.06 14:08:25.882 Trades  '9424479': order #10514044 buy stop 0.01 / 0.01 CADCHF at market done in 190.823 ms
2018.09.06 14:08:25.883 Trades  '9424479': cancel order #10514044 buy stop 0.01 CADCHF at 0.8360
2018.09.06 14:08:26.062 Trades  '9424479': accepted cancel order #10514044 buy stop 0.01 CADCHF at 0.8360
2018.09.06 14:08:26.062 Trades  '9424479': cancel #10514044 buy stop 0.01 CADCHF at market done in 183.056 ms

Al mismo tiempo, los pendientes están cerca del ping. ¿Cuál puede ser la razón de tal desviación en la demostración?

 

Cuando actualicé el producto en el marketplace rellené las páginas en inglés y ruso con una descripción de lo que ha cambiado y publiqué la nueva versión, pero nada de mi descripción ha aparecido en la sección "what's new" de mi producto.

Ni siquiera puedo editar esta descripción, ya que no hay ningún documento sobre la última versión.

¿dónde está la descripción de los cambios?

 
Tetyana Shcherba:

Cuando actualicé el producto en el marketplace rellené las páginas en inglés y ruso con una descripción de lo que ha cambiado y publiqué la nueva versión, pero nada de mi descripción ha aparecido en la sección "what's new" de mi producto.

Incluso no hay posibilidad de editar esta descripción ya que no hay ningún documento contra la última versión.


Lo mismo. Pensé que era un fallo.

 

Después de seleccionar la opción de menú "Ejecutar una sola prueba"

no hay nada que indique que se está realizando una prueba única adecuada y que se ha ejecutado. Es conveniente pasar a la pestaña "Gráfico" si la ejecución única tiene éxito, o a la pestaña "Registro" si falla.


Puede parecer un problema cosmético menor.

 
Nikolai Semko:

Cuando necesito rellenar parte de una gran matriz con un único valor Z, utilizo una construcción:


Mucha gente dirá que por qué es tan complicado, que puede ser más sencillo:

Pero por alguna razón desconocida, la primera variante que utiliza una matriz intermedia funciona mucho más rápido que la segunda

Ya escribí sobre esta cuestión a SD hace un par de años. Recibí una respuesta diciendo que había encontrado y solucionado el problema y que estaría bien en la siguiente compilación.

Pero el problema persiste.

Tengo la misma prueba en MT4:

Usted ha encontrado una peculiaridad de la operación de memoria en Windows

Justo después de ArrayResize añadir

ArrayFill(arr,0,size,0);
Esto inicia la asignación real de la memoria física para que esto no ocurra durante la prueba.


Aquí están los resultados de mi ordenador

2018.09.06 16:25:44.238 TestArrayFill (EURUSD,H1)       Время заполнения через ArrayFill = 94
2018.09.06 16:25:44.238 TestArrayFill (EURUSD,H1)       Время заполнения через ArrayInitialize + ArrayCopy = 147
 
Ilyas:

Se ha encontrado con una peculiaridad de memoria en Windows

Inmediatamente después de ArrayResize añadir

Esto inicia la asignación real de la memoria física para que esto no ocurra durante la prueba.

¿Qué mide entonces el perfilador integrado de ME en ArrayResize?

 
fxsaber:

¿Qué mide entonces el perfilador integrado de ME en ArrayResize?

Mide el tiempo de ejecución de la función ArrayResize.

El código de prueba de TestArrayFill está construido de tal manera que se asigna memoria "fría" para el array, sin posibilidad de obtener memoria "caliente".


Para ser claros, ArrayResize asigna memoria virtual (o memoria de proceso), pero no hay garantía de que la memoria virtual obtenga inmediatamente (o ya tenga) páginas físicas.

Windows, asignará la memoria física según sea necesario, la primera vez que se acceda a la página de memoria virtual.
La página tiene un tamaño de 4KB, es decir, para "calentar", no se pueden poner a cero todos los elementos a través de ArrayFill (como escribí) sino sólo cada 4096 / sizeof(array element type) empezando por cero.


Dado que la puesta a cero de las variables está garantizada en MQL4, ArrayResize en MT4 recorre el array poniéndolo a cero, por lo que no hay ningún efecto de memoria "fría" allí.

 
Ilyas:

Sin embargo, la sutileza. Gracias. Probablemente, la Documentación debería haber recibido hace tiempo un spoiler de "Sutileza".