[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 391

 
Integer:


1. Estás atascado. Una vez más. El sistema no tiene forma de saber si un flujo ha estado inactivo o si ha realizado una acción.

El sistema no necesita saberlo. Es el problema del hilo. Se manejará de cualquier manera. Está garantizado por el sistema. A menos, claro, que lo detengas tú mismo con algún fallo en el código.
 
Zhunko:
El sistema no necesita saberlo. Es un problema de flujo. Se procesará de todos modos. Está garantizado por el sistema. A menos, claro, que lo detengas tú mismo con algún fallo en el código.


Hace tiempo que está claro que no sabes en absoluto de lo que hablas.
 

Junko, por qué tratas de hacer un punto aquí... y ni siquiera sabes de qué estás hablando. Quieres el sistema, no quieres el sistema... Ni siquiera sabes de qué estás hablando. Se trata de resolver el problema que se planteó anteriormente... y ahora vas a empezar a decir que no es necesario... Ya ha dicho que no debería haber tal tarea. Uno da vueltas en su cabeza y no se da cuenta, y se pone en el papel de gurú.

 
Lo importante no es el flujo, sino lo que hace, que no siempre hace. Y tienes que dirigir lo que hace.
 
Integer:
Lo importante no es el hilo sino lo que hace y no lo hace siempre. Y tienes que gestionar lo que hace.

Lo escribíaquí:

Zhunko:

Hay otro caso en el que se necesita una cola. Pero no una cola de ejecución de hilos, sino un orden de procesamiento de los datos recibidos de los hilos (resultados del trabajo de los hilos). Esta es la tarea más frecuente de las colas.

¿Esto?

 
Zhunko:

Escritoaquí:

¿Esto?

Más o menos similar. Pero antes hubo declaraciones tales como que el orden no es importante en absoluto. Y aquí se dijo generalmente cuando no sólo las tareas deben ser realizadas de manera uniforme, sino también en una determinada secuencia (si no realizar, pero para recoger los datos para su posterior procesamiento, o de lo contrario se llega al punto de inexactitud de las declaraciones). Ahora es tu turno de responder - Yo sé que lo hice... entonces, ¿qué ha pasado en las últimas 10 páginas?
 
Por favor, aconséjeme, es normal que cuando se ejecuta 1 vez por año de historia (300-400 operaciones) el probador crea un archivo de registro que pesa hasta un gigabyte... ?
 
lottamer:
Por favor, aconséjeme, es normal que cuando se ejecuta 1 vez por año de historia (300-400 operaciones) el probador crea un archivo de registro que pesa hasta un gigabyte... ?

Básicamente está bien :) Ni tan normal ni tan poco normal, simplemente hace eso, nada más. Mira lo que dice, si los mensajes de error, usted necesita tomar alguna acción con estos errores. Si hay mensajes de información, hay que desactivarlos (si hay un interruptor) o comentar las llamadas a las funciones Print()(), Comment(), Alert().
 
Integer:

Más o menos lo mismo. Sin embargo, antes de eso hubo declaraciones tales como que el orden no es importante en absoluto. Y aquí es más importante, cuando no sólo las tareas deben ser ejecutadas uniformemente, sino también en una cierta secuencia (si no para ejecutar, pero para recoger los datos para su posterior procesamiento, de lo contrario puede confundirse con la inexactitud de las declaraciones). Ahora es tu turno de responder - Yo sé que lo hice... entonces, ¿qué ha pasado en las últimas 10 páginas?

Lo que ocurrió fue por una falta de explicación de su parte. Escribió en la página 381. Si hubieras leído mi respuesta te habrías dado cuenta y habrías dicho.

===================

1. Hay varios hilos independientes.

2. Los resultados se apilan en alguna cola.

3. Esta cola es un recurso compartido.

4. Es necesario sincronizar el acceso de los hilos a la cola de resultados compartida.

¿Verdad?

===================

Así es como debería funcionar correctamente sin eliminar la variable global:

#property show_inputs

extern int Pause = 1000;

int    hwndChart = NULL; // Уникальный идентификатор скрипта.
string sName = "Condition";

void init()
 {
  hwndChart = WindowHandle(Symbol(), 0);
  // Создаём глобальную переменную синхронизации скриптов.
  if (!GlobalVariableCheck(sName)) GlobalVariableSet(sName, 0);
 }
 
void deinit()
 {
  while (!IsStopped())
   {
    if (!GlobalVariableSetOnCondition(sName, hwndChart, 0)) continue;
    if (GlobalVariableSetOnCondition(sName, 0, hwndChart)) return;
   }
 }

void start()
 {
  while (!IsStopped())
   {
    Sleep(200); // Имитация тика.
    // Начало блока синхронизации.
    if (!GlobalVariableSetOnCondition(sName, hwndChart, 0)) continue;
    if (GlobalVariableGet(sName) == hwndChart)
     {
      Print("Start");
      Sleep(Pause); // Имитация работы.
      Print("End");
     }
    GlobalVariableSetOnCondition(sName, 0, hwndChart);
   } // Завершение блока синхронизации.
 }

Chiripaha:

Esto...

Creo que Arles ha descubierto la respuesta a la pregunta, ya que yo todavía no soy capaz de captar la esencia de la solución. Pero eso es porque soy un principiante y necesito más tiempo para aprender primero la teoría y luego intentar la práctica. Pero intentaré dominar el asunto.


Cierto, por pregunta no resuelta me refería exactamente a esta lista de preguntas.

................

====================================

Es decir, en otras palabras. - Si no hay un bloque de solución sugerido por usted en el EA, entonces el uso de muchos de estos EAs puede causar la situación descrita en la pregunta sobre la Gestión de Riesgos?

Déjeme explicarle un poco más. No estoy seguro de que sea demasiado crítico. Por lo tanto, hasta ahora lo he considerado hepotéticamente. Porque la velocidad de resolución de los problemas es alta y probablemente las soluciones en el ordenador "volarán" por el amplio canal de bitrate del ordenador. - Pero tal vez me equivoque, porque según Arles - sólo recibe 2 órdenes por ronda. Así que hay un problema.

Sólo ahora he entendido la pregunta :-))

Si esto sucede, es un problema con el riesgo equivocado. No es necesario sincronizar nada si el riesgo es bajo. +-0,0001% del depósito no es crucial.

 

Zhunko:

Sólo ahora he entendido la pregunta :-))

Si esto ocurre, es un problema con el riesgo equivocado. Con un riesgo bajo no es necesario sincronizar nada. +-0,0001% del depósito no es decisivo.

Sucede que... Cuando una persona está en la solución de algún problema actual (asunto), es difícil cambiar su mente a otras tareas. Y cuando hay muchas tareas es difícil hacer todo... : )) Reglas de gestión del tiempo.

Otra pregunta sobre el multithreading.

El tutorial de Sergei Kovalev describe un método con Squaredness optimizado donde el Asesor Experto trabajará en un bucle. Si consideramos esto y el multihilo, ¿entiendo correctamente que este tipo de comportamiento cíclico del EA no causará desventajas para otros EAs, scripts e indicadores? ¿Y podemos empezar con seguridad el trabajo de la EA en un bucle? ¿O sería mejor no hacerlo? ¿Y cuándo debe evitarse?

Según tengo entendido, este ciclo de trabajo está implementado en el código anterior. Tal vez, por eso lo recordé.

Y por cierto, si ese EA en bucle se ejecuta en tester, ¿cómo de correcto será? ¿O hay que "apagar" el bucle en este caso?