Errores, fallos, preguntas - página 2778

 
Alain Verleyen:

Otro Terminal, pero 20 gráficos (diferentes símbolos), comenzó al mismo tiempo.

He comprobado en el AUDUSD dónde viene el pico:

2020.06.13 09: 16: 35.151 342152 (USDJPY, H1) Cantidad = 240
2020.06.13 09: 16: 35.151 342152 (USDJPY, H1) Min = 38
2020.06.13 09: 16: 35.151 342152 (USDJPY, H1) Max = 2235
2020.06.13 09: 16: 35.151 342152 (USDJPY, H1) Avg = 472
2020.06.13 09: 16: 35.151 342152 (CADCHF, H1) Avg = 240
2020.06.13 09: 16: 35.151 342152 (CADCHF, H1) Min = 48
2020.06.13 09: 16: 35.151 342152 (CADCHF, H1) Max = 2323
2020.06.06.13 09: 16: 35.152 342152 (CADCHF, H1) Cantidad = 606
2020.06.13 09: 16: 35.152 342152 (EURAUD, H1) Cantidad = 240
2020.06.13 09: 16: 35.152 342152 (EURCHF, H1) Cantidad = 240
2020.06.13 09: 16: 35.152 342152 (GBPCHF, H1) Cantidad = 240
2020.06.13 09: 16: 35.152 342152 (EURCHF, H1) Min = 141
2020.06.13 09: 16: 35.152 342152 (EURGBP, H1) Cantidad = 240
2020.06.13 09: 16: 35.152 342152 (CHFJPY, H1) Cantidad = 240
2020.06.13 09: 16: 35.152 342152 (AUDJPY, H1) Cantidad = 240
2020.06.13 09: 16: 35.152 342152 (AUDJPY, H1) Min = 47
2020.06.13 09: 16: 35.152 342152 (EURUSD, H1) Cantidad = 240
2020.06.13 09: 16: 35.152 342152 (EURUSD, H1) Min. = 23
2020.06.13 09: 16: 35.152 342152 (EURUSD, H1) Max = 2368
2020.06.13 09: 16: 35.152 342152 (AUDUSD, H1) Cantidad = 240
2020.06.13 09: 16: 35.152 342152 (EURUSD, H1) Avg = 607
2020.06.13 09: 16: 35.152 342152 (AUDUSD, H1) Min = 74
2020.06.13 09: 16: 35.152 342152 (GBPJPY, H1) Avg = 240
2020.06.13 09: 16: 35.152 342152 (AUDNZD, H1) Avg = 240
2020.06.13 09: 16: 35.152 342152 (USDCHF, H1) Avg = 240
2020.06.06.13 09: 16: 35.152 342152 (AUDNZD, H1) Min = 122
2020.06.13 09: 16: 35.152 342152 (AUDCHF, H1) Cantidad = 240
2020.06.13 09: 16: 35.152 342152 (AUDNZD, H1) Max = 2402
2020.06.13 09: 16: 35.152 342152 (AUDNZD, H1) Avg = 660
2020.06.06.13 09: 16: 35.152 342152 (AUDCHF, H1) Min = 157
2020.06.13 09: 16: 35.152 342152 (AUDCHF, H1) Max = 2354
2020.06.13 09: 16: 35.152 342152 (AUDCHF, H1) Avg = 663
2020.06.13 09: 16: 35.152 342152 (GBPCHF, H1) Min = 32
2020.06.06.13 09: 16: 35.152 342152 (GBPCHF, H1) Max = 2380
2020.06.13 09: 16: 35.152 342152 (GBPCHF, H1) Avg = 616
2020.06.13 09: 16: 35.152 342152 (EURCHF, H1) Max = 2327
2020.06.13 09: 16: 35.152 342152 (EURCHF, H1) Avg = 618
2020.06.13 09: 16: 35.152 342152 (EURGBP, H1) Min = 36
2020.06.13 09: 16: 35.152 342152 (EURGBP, H1) Max = 2233
2020.06.13 09: 16: 35.152 342152 (EURGBP, H1) Avg = 503
2020.06.13 09: 16: 35.152 342152 (CHFJPY, H1) Min = 11
2020.06.13 09: 16: 35.152 342152 (EURGBP, H1)13 09: 16: 35.152 342152 (CHFJPY, H1) Max = 2387
2020.06.13 09: 16: 35.152 342152 (CHFJPY, H1) Avg = 657
2020.06.13 09: 16: 35.152 342152 (AUDJPY, H1) Max = 2292
2020.06.13 09: 16: 35.152 342152 (AUDJPY, H1) Avg = 612
2020.06.13 09: 16: 35.152 342152 (EURNZD, H1) Cantidad = 240
2020.06.13 09: 16: 35.152 342152 (EURNZD, H1) Min = 54
2020.06.13 09: 16: 35.152 342152 (EURNZD, H1) Max = 2361
2020.06.13 09: 16: 35.152 342152 (EURNZD, H1) Avg = 612
2020.06.06.13 09: 16: 35.152 342152 (AUDCAD, H1) Avg = 240
2020.06.13 09: 16: 35.152 342152 (AUDCAD, H1) Min = 121
2020.06.13 09: 16: 35.152 342152 (EURCAD, H1) Avg = 240
2020.06.13 09: 16: 35.152 342152 (AUDCAD, H1) Max = 2328
2020.06.13 09: 16: 35.152 342152 (AUDCAD, H1) Avg = 605
2020.06.13 09: 16: 35.152 342152 (AUDUSD, H1) Max = 2361
2020.06.13 09: 16: 35.152 342152 (AUDUSD, H1) Avg = 611
2020.06.13 09: 16: 35.152 342152 (GBPJPY, H1) Min = 13
2020.06.13 09: 16: 35.152 342152 (GBPJPY, H1) Max = 2411
2020.06.13 09: 16: 35.152 342152 (GBPJPY, H1) Avg = 661
2020.06.13 09: 16: 35.153 342152 (GBPUSD, H1) Avg = 240
2020.06.13 09: 16: 35.13 09: 16: 35.153 342152 (GBPUSD, H1) Min = 113
2020.06.13 09: 16: 35.153 342152 (GBPUSD, H1) Max = 2362
2020.06.13 09: 16: 35.153 342152 (GBPUSD, H1) Avg = 667
2020.06.13 09: 16: 35.153 342152 (USDCAD, H1) Cantidad = 240
2020.06.06.13 09: 16: 35.153 342152 (USDCAD, H1) Min = 151
2020.06.13 09: 16: 35.153 342152 (USDCAD, H1) Max = 2386
2020.06.13 09: 16: 35.153 342152 (EURAUD, H1) Min = 35
2020.06.13 09: 16: 35.153 342152 (USDCAD, H1) Avg = 671
2020.06.13 09: 16: 35.153 342152 (EURAUD, H1) Max = 2233
2020.06.13 09: 16: 35.153 342152 (EURAUD, H1) Avg = 478
2020.06.13 09: 16: 35.153 342152 (EURJPY, H1) Cantidad = 240
2020.06.13 09: 16: 35.153 342152 (EURJPY, H1) Min = 10
2020.06.06.13 09: 16: 35.153 342152 (EURCAD, H1) Min = 123
2020.06.13 09: 16: 35.153 342152 (EURCAD, H1) Max = 2384
2020.06.13 09: 16: 35.153 342152 (EURCAD, H1) Avg = 658
2020.06.13 09: 16: 35.153 342152 (USDCHF, H1) Min = 32
2020.06.06.13 09: 16: 35.153 342152 (USDCHF, H1) Max = 2369
2020.06.13 09: 16: 35.153 342152 (USDCHF, H1) Avg = 614
2020.06.13 09: 16: 35.153 342152 (EURJPY, H1) Max = 2344
2020.06.13 09: 16: 35.153 342152 (EURJPY, H1) Avg = 658

Y aquí es cuando entran las tapas:

2020.06.13 09: 17: 35.151 342152 (USDJPY, H1) Avg = 480
2020.06.13 09: 17: 35.151 342152 (USDJPY, H1) Min = 38
2020.06.13 09: 17: 35.151 342152 (USDJPY, H1) Max = 17421
2020.06.06.13 09: 17: 35.151 342152 (USDJPY, H1) Avg = 533
2020.06.13 09: 17: 35.151 342152 (EURAUD, H1) Cantidad = 480
2020.06.13 09: 17: 35.151 342152 (EURAUD, H1) Min = 35
2020.06.06.13 09: 17: 35.151 342152 (EURAUD, H1) Max = 17406
2020.06.13 09: 17: 35.151 342152 (EURAUD, H1) Avg = 518
2020.06.13 09: 17: 35.151 342152 (EURGBP, H1) Cantidad = 480
2020.06.13 09: 17: 35.151 342152 (EURGBP, H1) Min = 36
2020.06.13 09: 17: 35.151 342152 (EURGBP, H1) Max = 17425
2020.06.13 09: 17: 35.151 342152 (EURGBP, H1) Avg = 515
2020.06.13 09: 17: 35.151 342152 (EURUSD, H1) Cantidad = 480
2020.06.13 09: 17: 35.151 342152 (EURUSD, H1) Min = 18
2020.06.13 09: 17: 35.151 342152 (EURUSD, H1) Max = 17366
2020.06.13 09: 17: 35.151 342152 (EURCHF, H1) Max = 480
2020.06.13 09: 17: 35.151 342152 (EURUSD, H1) Avg = 618
2020.06.13 09: 17: 35.151 342152 (AUDCHF, H1) Max = 480
2020.06.13 09: 17: 35.151 342152 (USDCHF, H1) Cantidad = 480
2020.06.13 09: 17: 35.151 342152 (AUDCHF, H1) Min = 126
2020.06.13 09: 17: 35.151 342152 (CADCHF, H1) Cantidad = 480
2020.06.13 09: 17: 35.151 342152 (AUDCHF, H1) Max = 10477
2020.06.13 09: 17: 35.151 342152 (EURCAD, H1) Cantidad = 480
2020.06.13 09: 17: 35.151 342152 (GBPUSD, H1) Cantidad = 480
2020.06.13 09: 17: 35.152 342152 (EURCAD, H1) Min = 123
2020.06.13 09: 17: 35.152 342152 (GBPUSD, H1) Min = 112
2020.06.13 09: 17: 35.152 342152 (EURCAD, H1) Max = 10485
2020.06.13 09: 17: 35.152 342152 (EURCAD, H1) Avg = 663
2020.06.13 09: 17: 35.152 342152 (GBPUSD, H1) Max = 10435
2020.06.13 09: 17: 35.152 342152 (GBPUSD, H1) Avg = 661
2020.06.13 09: 17: 35.152 342152 (EURCHF, H1) Min = 71
2020.06.06.13 09: 17: 35.152 342152 (EURJPY, H1) Avg = 480
2020.06.13 09: 17: 35.152 342152 (USDCAD, H1) Avg = 480
2020.06.13 09: 17: 35.152 342152 (USDCAD, H1) Min = 54
2020.06.13 09: 17: 35.152 342152 (EURJPY, H1) Min = 10
2020.06.13 09: 17: 35.152 342152 (EURJPY, H1) Max = 10487
2020.06.13 09: 17: 35.152 342152 (EURJPY, H1) Avg = 664
2020.06.13 09: 17: 35.152 342152 (EURJPY, H1) Avg = 664.13 09: 17: 35.152 342152 (EURNZD, H1) Cantidad = 480
2020.06.13 09: 17: 35.152 342152 (EURNZD, H1) Min = 54
2020.06.13 09: 17: 35.152 342152 (EURNZD, H1) Max = 17426
2020.06.06.13 09: 17: 35.152 342152 (EURNZD, H1) Avg = 620
2020.06.13 09: 17: 35.152 342152 (USDCHF, H1) Min = 32
2020.06.13 09: 17: 35.152 342152 (USDCHF, H1) Max = 17427
2020.06.13 09: 17: 35.152 342152 (USDCHF, H1) Avg = 649
2020.06.13 09: 17: 35.152 342152 (GBPCHF, H1) Max = 480
2020.06.13 09: 17: 35.152 342152 (GBPCHF, H1) Min = 32
2020.06.13 09: 17: 35.152 342152 (GBPCHF, H1) Max = 17433
2020.06.13 09: 17: 35.152 342152 (GBPCHF, H1) Avg = 647
2020.06.13 09: 17: 35.152 342152 (AUDJPY, H1) Min = 480
2020.06.13 09: 17: 35.152 342152 (AUDJPY, H1) Min. = 47
2020.06.13 09: 17: 35.152 342152 (AUDJPY, H1) Max = 17415
2020.06.13 09: 17: 35.152 342152 (AUDJPY, H1) Avg = 640
2020.06.13 09: 17: 35.152 342152 (CADCHF, H1) Min = 48
2020.06.13 09: 17: 35.152 342152 (CADCHF, H1) Max = 17435
2020.06.13 09: 17: 35.152 342152 (CADCHF, H1) Avg = 637
2020.06.13 09: 17: 35.152 342152 (AUDCHF, H1) Avg = 662
2020.06.13 09: 17: 35.152 342152 (AUDUSD, H1) Cantidad = 480
2020.06.13 09: 17: 35.152 342152 (AUDUSD, H1) Min = 43
2020.06.13 09: 17: 35.152 342152 (AUDUSD, H1) Max = 17416
2020.06.13 09: 17: 35.152 342152 (AUDUSD, H1) Avg = 620
2020.06.13 09: 17: 35.152 342152 (GBPJPY, H1) Cantidad = 480
2020.06.13 09: 17: 35.13 09: 17: 35.152 342152 (GBPJPY, H1) Min = 13
2020.06.13 09: 17: 35.152 342152 (GBPJPY, H1) Max = 10468
2020.06.13 09: 17: 35.152 342152 (GBPJPY, H1) Avg = 660
2020.06.13 09: 17: 35.152 342152 (CHFJPY, H1) Cantidad = 480
2020.06.06.13 09: 17: 35.152 342152 (CHFJPY, H1) Min = 11
2020.06.13 09: 17: 35.152 342152 (CHFJPY, H1) Max = 10474
2020.06.13 09: 17: 35.152 342152 (AUDNZD, H1) Cantidad = 480
2020.06.13 09: 17: 35.152 342152 (AUDNZD, H1) Min = 61
2020.06.13 09: 17: 35.152 342152 (AUDNZD, H1) Max = 10491
2020.06.13 09: 17: 35.152 342152 (AUDNZD, H1) Avg = 663
2020.06.13 09: 17: 35.152 342152 (EURCHF, H1) Max = 17414
2020.06.13 09: 17: 35.152 342152 (EURCHF, H1) Avg = 646
2020.06.13 09: 17: 35.152 342152 (AUDCAD, H1) Max = 480
2020.06.13 09: 17: 35.152 342152 (AUDCAD, H1) Min = 100
2020.06.13 09: 17: 35.152 342152 (AUDCAD, H1) Max = 17421
2020.06.06.13 09: 17: 35.152 342152 (AUDCAD, H1) Avg = 638
2020.06.13 09: 17: 35.152 342152 (USDCAD, H1) Max = 10488
2020.06.13 09: 17: 35.152 342152 (USDCAD, H1) Avg = 666
2020.06.13 09: 17: 35.152 342152 (CHFJPY, H1) Avg = 656

Así que todo ocurrió al mismo tiempo. Pero esto podría ser un problema de MT5. Lo comprobaré con otros terminales simultáneos.

A juzgar por los registros, la desaceleración de uno no coincidió con la del otro, es decir, no fue simultánea. Así que el problema está en el propio terminal.

 

Los programas MQL5 trabajan (métodos Get/Set) con un gráfico a través de una cola de transacciones.

Esto permite liberar la GUI y el propio terminal de los inevitables bloqueos que serían un problema para los programas MQL5.

La asincronía transaccional permite escribir o leer rápidamente en modos separados y habilita el modo de sincronización inmediatamente al mezclar los métodos Set y Get.

Es decir, es mejor hacer asíncrono Set 1000 veces y luego Get 1000 veces en lugar de hacer alternativamente Get & Set, convirtiendo la cola en un proceso síncrono. Porque tienes que asegurarte de que el conjunto asíncrono anterior estaba exactamente superpuesto y ahora puedes leerlo.


Hay que utilizar las funciones del sistema con cuidado y guardarlas en caché siempre que sea posible.

 
Renat Fatkhullin:

Hay que utilizar las funciones del sistema con cuidado y almacenarlas en caché siempre que sea posible.

Por la tarde, el problema es un poco diferente - las funciones ChartGetInteger y similares son MUY lentas de ejecutar.
Al cambiar de la build 2009 a la build 2485, el tiempo de ejecución de ChartGetInteger aumentó de 5ms a 200-250ms de pico, especialmente se convierte en un problema cuando hay más de 50 gráficos abiertos.
Sistema: Terminal Windows 10 build 18363, Intel Core i7-7700HQ @ 2.80GHz, 19 / 31 GB de memoria, 262 / 640 GB de disco, monitor 4K, NVidia 1050Ti
Se utilizó elcódigo de la descripción del problema:https://www.mql5.com/en/forum/342152

Posibles causas del problema:

Bichos, errores, problemas

Sergey Dzyublik, 2020.06.13 19:20

He comparado la implementación de la función ChartGetInteger para dos versiones de MT5 2009 y MT5 2485, quizás el problema sea el siguiente:
1. En 2485 para leer los campos "atómicos" de un objeto gráfico utilizamos operaciones bastante lentas:
mfence; lock mov eax,[rax+2C];
Mientras que en la compilación 2009 esto se hace utilizando: lock xadd [rcx+2C],eax

2. También parece que la lógica y el posible tiempo de permanencia en ntdll_RtlEnterCriticalSection han cambiado significativamente.
Anteriormente, en 2009, una sección crítica sólo comprobaba un par de valores recibidos, sin ninguna operación atómica.
Y en el 2485, los objetos de la lista vinculada del gráfico podrían ser enumerados adicionalmente.


Es de suponer que el problema pudo ocurrir cuando se solucionó el fallo al trabajar con funciones de gráfico como parte de la migración al nuevo compilador (hace unos 2-3 meses).
Se adjunta el código del ensamblador para la llamada a ChartGetInteger en MT5 (build 2485).



 
Vamos a comprobarlo.
 
Renat Fatkhullin:
Compruébalo.

Pasos para la reproducción:

long chart_id;

int OnInit(){
   for(int i = 0; i < 95; ++i){
      ChartOpen(_Symbol, _Period);
   }

   chart_id = ChartID();
   EventSetMillisecondTimer(250);
   return(INIT_SUCCEEDED);
}

void OnTimer(){
  ulong t=GetMicrosecondCount();
  long autoscroll = ChartGetInteger(chart_id, CHART_AUTOSCROLL);
  ulong delay =(GetMicrosecondCount()-t)/1000;
  if (delay>0){
    Print("Execution delay: ",delay, " ms");
  }
}


1. Tome un terminal MT limpio, abra un gráfico en él, ejecute el EA compilado arriba en ese gráfico.
2. Después de abrir los 95 nuevos gráficos, expanda la ventana del gráfico a todo el ancho del espacio del gráfico en MT, si no lo ha hecho antes.
3. Para pasar de una pestaña de gráfico a otra y registrar desde el registro los valores de ejecución de ChartGetInteger.
Para cerrar todos los gráficos abiertos, puedes mantener pulsado CTRL+W


Resultado de MT5 (build 2009):

2020.06.14 15:33:43.173 Test123456 (EURUSD,H1)  Execution delay: 2 ms
2020.06.14 15:33:43.674 Test123456 (EURUSD,H1)  Execution delay: 3 ms
2020.06.14 15:33:44.177 Test123456 (EURUSD,H1)  Execution delay: 5 ms
2020.06.14 15:33:44.422 Test123456 (EURUSD,H1)  Execution delay: 4 ms
2020.06.14 15:33:44.673 Test123456 (EURUSD,H1)  Execution delay: 2 ms
2020.06.14 15:33:44.923 Test123456 (EURUSD,H1)  Execution delay: 3 ms
2020.06.14 15:33:45.173 Test123456 (EURUSD,H1)  Execution delay: 2 ms
2020.06.14 15:33:45.423 Test123456 (EURUSD,H1)  Execution delay: 2 ms
2020.06.14 15:33:45.672 Test123456 (EURUSD,H1)  Execution delay: 2 ms


Resultado de MT5 (buidl 2485):

2020.06.14 15:33:12.947 Test123456 (EURUSD,H1)  Execution delay: 163 ms
2020.06.14 15:33:13.198 Test123456 (EURUSD,H1)  Execution delay: 1 ms
2020.06.14 15:33:13.293 Test123456 (EURUSD,H1)  Execution delay: 1 ms
2020.06.14 15:33:13.831 Test123456 (EURUSD,H1)  Execution delay: 287 ms
2020.06.14 15:33:14.702 Test123456 (EURUSD,H1)  Execution delay: 136 ms
2020.06.14 15:33:15.316 Test123456 (EURUSD,H1)  Execution delay: 3 ms
2020.06.14 15:33:15.677 Test123456 (EURUSD,H1)  Execution delay: 110 ms
2020.06.14 15:33:17.041 Test123456 (EURUSD,H1)  Execution delay: 221 ms


Comparación de resultados y conclusiones:
1. El número de registros que aparecen en la versión 2009 es mucho mayor que el de la versión 2485.
La función ChartGetInteger en "condiciones normales" se hizo más rápida después de cambiar a la build 2485.

2. El tiempo de ejecución máximo para la build 2009 - 15 ms, y para la build 2485 - 310 ms.
La función ChartGetInteger en "condiciones desfavorables" se vuelve hasta 20 veces más lenta después de cambiar a la compilación 2485.

3. del mismo modo que se puede estimar la velocidad de apertura de 95 cartas a ojo.
En ambas construcciones, se nota la complejidad "exponencial" del número de gráficos abiertos antes, así como una ejecución significativamente más rápida en la construcción de 2009.

 
Stanislav Korotky :

A juzgar por los registros, la desaceleración de uno no coincidió con la del otro, es decir, no fue simultánea. Así que el problema está en el propio terminal.

El registro sólo se imprime cada minuto (¡la traducción estropeó la marca de tiempo!), podría comprobarlo con más precisión, pero no merece la pena.

Lo he probado en varios terminales y se ve claramente que los picos NO son simultáneos. Esto es claramente una cosa de MT5.

 
Renat Fatkhullin :

Los programas MQL5 trabajan (métodos Get/Set) con un gráfico a través de una cola de transacciones.

Esto permite liberar la GUI y el propio terminal de los inevitables bloqueos que serían un problema para los programas MQL5.

La asincronía transaccional permite escribir o leer rápidamente en modos separados y habilita el modo de sincronización inmediatamente al mezclar los métodos Set y Get.

Es decir, es mejor hacer asíncrono Set 1000 veces y luego Get 1000 veces en lugar de hacer alternativamente Get & Set, convirtiendo la cola en un proceso síncrono. Porque tienes que asegurarte de que el conjunto asíncrono anterior estaba exactamente superpuesto y ahora puedes leerlo.


Hay que utilizar las funciones del sistema con cuidado y guardarlas en caché siempre que sea posible.

Es un sistema comprensible y bueno. Pero creo que hay un fallo en alguna parte, como también ha demostrado @Sergey Dzyubli.
Sergey Dzyublik
Sergey Dzyublik
  • www.mql5.com
Добавил тему Вход через MQL5.community (OAuth) В настройках профиля появилась новая вкладка Приложения (https://www.mql5.com/ru/users/USER_NAME/apps): Эта функция позволяет людям авторизоваться на вашем сайте или в приложении, используя аккаунт MQL5.community. Технология проста и безопасна. Она Добавил...
 
Alexey Navoykov:
Por lo que sé, la llamada a ChartRedraw no provoca el redibujado inmediato del gráfico, sino que el redibujado sólo se produce cuando se llama a algún método Get.
Y ChartRedraw es esencialmente el mismo método asíncrono. Así que tu medida de BuildChart no es fiable.

intente intercambiar estas dos líneas

entonces no habrá nada asíncrono en la medición y ver qué pasa. Será aún más rápido.

 
fxsaber:
Llevo mucho tiempo sin entender qué es lo que no le gusta al compilador de esta línea.

Olvidé escribir si. Pensé que sería una buena idea para masticar el mensaje para estos tontos.

Me pidió que hiciera una descripción y un ejemplo para todos los errores y advertencias del compilador hace unos 5 años, quizás más.

Tal vez puedas hacerlo mejor.

 
Renat Fatkhullin:

Los programas MQL5 trabajan (métodos Get/Set) con un gráfico a través de una cola de transacciones.

Esto permite liberar la interfaz gráfica de usuario y el propio terminal de los inevitables bloqueos que serían un problema para los programas MQL5.

La asincronía transaccional permite escribir o leer rápidamente en modos separados y habilita el modo de sincronización inmediatamente al mezclar los métodos Set y Get.

Es decir, es mejor hacer asíncrono Set 1000 veces y luego Get 1000 veces en lugar de hacer alternativamente Get & Set, convirtiendo la cola en un proceso síncrono. Porque tienes que asegurarte de que el conjunto asíncrono anterior estaba exactamente superpuesto y ahora puedes leerlo.


Hay que utilizar las funciones del sistema con cuidado y guardarlas en caché siempre que sea posible.

Entiendo correctamente que no sólo los métodos Set son asíncronos sino también los Get?
Ilyas se equivocó aquí , ¿no?
¿Y Slava tenía razón cuando dijo que el método ChartXYToTimePrice es asíncrono? Después de todo, el método ChartXYToTimePrice probablemente se refiere a los métodos Get.

La documentación sólo habla de la asincronía de los métodos Set.

Razón de la queja: