[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 391

 
Integer:


1. Você está preso. Mais uma vez. O sistema não tem como saber se um fluxo foi ocioso ou se executou uma ação.

O sistema não precisa saber disso. É o problema do fio. Será tratado de qualquer maneira. É garantido pelo sistema. A menos, é claro, que você mesmo pare com algum bug no código.
 
Zhunko:
O sistema não precisa saber disso. É um problema de fluxo. Será processado de qualquer forma. É garantido pelo sistema. A menos, é claro, que você mesmo pare com algum bug no código.


Há muito tempo ficou claro que você não sabe nada do que está falando.
 

Junko, por que você está tentando fazer um ponto de vista aqui... e você nem sabe do que está falando. Você quer o sistema, não quer o sistema... Você nem sabe do que está falando. Trata-se de resolver o problema que foi previamente delineado. e agora você vai começar a dizer que não é necessário... Você já disse que não deveria haver tal tarefa. Você dá a volta na cabeça e não se dá conta, e se coloca no papel de um guru.

 
Não é o fluxo que é importante, mas o que ele faz, o que nem sempre faz. E você tem que dirigir o que ele faz.
 
Integer:
Não é o fio que importa, mas o que ele faz e não o faz o tempo todo. E você tem que administrar o que ele faz.

Eu escreviaqui:

Zhunko:

Há outro caso em que é necessária uma fila. Mas não uma fila de execução dos fios, mas uma ordem de processamento dos dados recebidos dos fios (resultados do trabalho dos fios). Esta é a tarefa mais freqüente para as filas de espera.

Isto?

 
Zhunko:

Escritoaqui:

Isto?

Mais ou menos semelhante. Mas antes disso havia declarações tais que a ordem não é nada importante. E aqui foi geralmente declarado quando não só as tarefas devem ser executadas uniformemente, mas também em uma certa seqüência (se não forem executadas, mas para coletar dados para processamento posterior, ou então você chega à imprecisão das declarações). Agora é a sua vez de responder - eu sei que sim... então o que tem acontecido nas últimas 10 páginas?
 
Por favor, informe, é normal quando você executa 1 vez por ano de história (300-400 negócios) o testador cria um arquivo de registro que pesa até um gigabyte... ?
 
lottamer:
Por favor, informe, é normal quando você executa 1 vez por ano de história (300-400 negócios) o testador cria um arquivo de registro que pesa até um gigabyte... ?

Basicamente está tudo bem :) Não tão normal ou não normal, só faz isso, é só isso. Veja o que diz, se mensagens de erro, você precisa tomar alguma medida com estes erros. Se alguma mensagem de informação - você precisa desativá-las (se houver um switch) ou comentar chamadas para funções Imprimir()(), Comentar(), Alertar().
 
Integer:

Mais ou menos o mesmo. No entanto, antes disso, havia declarações tais que a ordem não era nada importante. E aqui é mais importante, quando não apenas as tarefas devem ser executadas uniformemente, mas também em uma certa seqüência (se não para executar, mas para coletar dados para processamento posterior, caso contrário você pode ser confundido com imprecisões de declarações). Agora é a sua vez de responder - eu sei que sim... então o que tem acontecido nas últimas 10 páginas?

O que aconteceu foi devido a uma falta de explicação de sua parte. Voltou a escrever na página 381. Se você tivesse lido minha resposta, você teria notado e dito.

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

1. Há vários fios independentes.

2. Os resultados estão empilhados em alguma fila.

3. esta fila é um recurso compartilhado.

4. Você precisa sincronizar o acesso dos fios à fila de resultados compartilhados.

Certo?

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

É assim que deve funcionar corretamente, sem remover a variável 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:

Isto...

Acho que Arles descobriu a resposta à pergunta, pois ainda não consegui entender imediatamente a essência da solução. Mas isso é porque sou um iniciante e preciso de mais tempo para aprender a teoria primeiro e depois tentar a prática. Mas vou tentar dominar o assunto.


Certo, por pergunta não resolvida eu quis dizer exatamente esta lista de perguntas.

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

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

Ou seja, em outras palavras. - Se não houver nenhum bloco de solução sugerido por você na EA, então o uso de muitos desses EAs pode causar a situação descrita na pergunta sobre Gerenciamento de Riscos?

Deixe-me explicar um pouco mais. Não tenho certeza de que seja muito crítico. Por isso, considerei-o hepotéticamente até agora. Porque a velocidade de resolução de problemas é alta e provavelmente as soluções no computador "voarão através" do canal de bitrate largo do computador. - Mas talvez eu esteja errado sobre isso, porque de acordo com Arles - ele recebe apenas 2 pedidos por rodada. Portanto, há um problema.

Só agora eu entendi a pergunta :-))

Se isto acontecer, é um problema com o risco errado. Não há necessidade de sincronizar nada se o risco for baixo. +-0,0001% do depósito não é crucial.

 

Zhunko:

Só agora entendemos a questão :-))

Se isto acontecer, é um problema com o risco errado. Com baixo risco, não há necessidade de sincronizar nada. +-0,0001% do depósito não é crucial.

Isso acontece... Quando uma pessoa está na solução de algum problema atual (questão), é difícil mudar a mente para outras tarefas. E quando há muitas tarefas é difícil fazer tudo... : )) Regras de gerenciamento de tempo.

Outra questão relativa à multithreading.

O tutorial de Sergei Kovalev descreve um método com Squaredness otimizado onde o Expert Advisor trabalhará em um loop. Se considerarmos isto e a multi-tarefa, entendo corretamente que este tipo de comportamento cíclico da EA não causará desvantagens para outros EAs, roteiros e indicadores? E podemos iniciar com segurança o trabalho da EA em um loop? Ou seria melhor não fazer isso? E quando isso deve ser evitado?

Tanto quanto eu entendo, este ciclo de trabalho está implementado no código acima. Talvez seja por isso que me lembrei disso.

E, a propósito, se tal EA em loop for executada em testador, quão correto ele será? Ou devemos "desligar" o loop neste caso?