[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 375

 
Chiripaha:

Eu não estou preparado para concordar. - Porque a partir de tal posição, a lógica de manter os EAs funcionando e calcular tanto o dinheiro quanto as posições corretas se perde. - Esta é uma delas. Segundo. - Se minha EA estiver dormindo, por exemplo, por 100 milissegundos, e outra começar a trabalhar ao mesmo tempo, então o que acontecerá, que assim que esses 100 milissegundos passarem, a outra terá que parar seu trabalho... e passá-lo de volta para este no meio e assim por diante indefinidamente. Por outro lado. Tenho visto (não raro) em EAs quando eles enviam para "dormir" por minutos e muitas vezes a cada bloco de execução. - Então, se todas as outras corujas não estão trabalhando durante este tempo, também é de alguma forma errado. - Portanto, a questão é bastante pertinente. Gostaria de entender a lógica de operação neste ponto. Mas ainda não encontrei uma explicação detalhada nos documentos oficiais.

Mas estou pronto para concordar. Originalmente, quando o mql4 apareceu, ninguém jamais pensou em multimoedas, ou em pacotes de corujas em um terminal. Portanto, há uma possibilidade de que isto seja normal.

Chiripaha:

Mas de dois males eu escolheria o último. Nesse caso, eu simplesmente deixaria a coruja da qual tenho certeza. Se você não fizer isso, é tudo igual: ao menos a correção dos recálculos é preservada, embora o trabalho deles seja retardado.

Faz mais sentido usar vários sinais, ou seja, para cada símbolo, um sinal diferente. Em seguida, coletamos tantos sinais quantos precisamos na matriz, e tudo é comercializado por uma EA. Uma vez que a lógica é a mesma, por que precisamos de muitos EAs?

Chiripaha:

O problema não é tão trivial quanto parece. - O fato é que minhas experiências mostraram que quando a caixa "Permitir o comércio de EAs" não é verificada, o trabalho da EA não pára - todos os cálculos são feitos em cada tic-tac. Apenas transações da EA não são enviadas para o servidor. Mas, se estes cálculos forem preenchidos com estes "deslizes" (não muito corretamente), então se houver 5-10 destes EAs, então eles podem especificamente retardar a execução do EA real que está sendo negociado atualmente.

Sim, alguns programadores colocam controle sobre as permissões de comércio e saltar o trabalho de coruja nesta base. Mas isso não é feito com mais freqüência. E se o código estiver fechado, não podemos de forma alguma entender se a operação é de frenagem ou não (e qual coruja exatamente). - Agora vou dar uma olhada neste tópico em busca no fórum. Algo desacelerou.

Aparentemente sim, este botão"Permitir que a EA negocie" só funciona como pretendido se o código EA o previr.
 
Chiripaha:

Eu não estou preparado para concordar. - Porque a partir de tal posição, a lógica de manter os EAs funcionando e calcular tanto o dinheiro quanto as posições corretas se perde. - Esta é uma delas. Segundo. - Se minha EA estiver dormindo, por exemplo, por 100 milissegundos, e outra começar a trabalhar ao mesmo tempo, então o que acontecerá, que assim que esses 100 milissegundos passarem, a outra terá que parar seu trabalho... e passá-lo de volta para este no meio e assim por diante indefinidamente. Por outro lado. Tenho visto (não raro) em EAs quando eles enviam para "dormir" por minutos e muitas vezes a cada bloco de execução. - Então, se todas as outras corujas não estão trabalhando durante este tempo, também é de alguma forma errado. - Portanto, a questão é bastante pertinente. Eu gostaria de entender a lógica de operação neste ponto. Mas ainda não encontrei uma explicação detalhada nos documentos oficiais.

Mas de dois males eu escolheria o último. Neste caso, eu simplesmente deixaria a coruja da qual tenho certeza. Caso contrário, tudo na mesma: pelo menos a correção dos recálculos é preservada, embora seu trabalho seja retardado.

O problema não é tão trivial quanto parece. - A questão é que minhas experiências mostraram que se a caixa "Permitir o comércio de EAs" não for verificada, então o trabalho da EA não pára - todos os cálculos são feitos da mesma maneira em cada tic tac. Apenas transações da EA não são enviadas para o servidor. Mas, se estes cálculos forem preenchidos com estes "deslizes" (não muito corretamente), então, se houver 5-10 EAs, eles podem especificamente retardar a execução da EA real que está sendo negociada atualmente.

Sim, alguns programadores colocam controle sobre as permissões de comércio e saltar o trabalho de coruja nesta base. Mas isso não é feito com mais freqüência. E se o código estiver fechado, não podemos de forma alguma entender se a operação é de frenagem ou não (e qual coruja exatamente). - Agora vou dar uma olhada neste tópico em busca no fórum. Algo desacelerou.

Obrigado a Arles pela pergunta, por me lembrar e me atualizar. Eu não tinha experiência suficiente para entender o que estava escrito sobre o assunto. Vou fazer isso novamente agora.


Sem entrar em detalhes do processamento de códigos do processador, vamos parar na "imagem" comum: durante o Sleep() há uma pausa para o processamento posterior deste mesmo código (todos os códigos restantes são processados em fios paralelos INDEPENDENTES).
 
TarasBY:
Sem entrar em detalhes do processamento do código do processador, vamos parar em uma "imagem" comum: durante o sono() há uma pausa no processamento posterior deste mesmo código (todos os códigos restantes são processados em fios paralelos INDEPENDENTES).

Bem, lá vai você... E isso é uma "emboscada". Se eu entendo o que estou dizendo corretamente. - Deixe-me esclarecer...

Se eu o entendi corretamente, Igor, os Conselheiros Especialistas são processados não sequencialmente (como eu fiz em minhas experiências), mas em paralelo? E, se for assim, acontece que Arles está certa e 2 negócios podem ser abertos em paralelo se cada sinal tiver recebido as condições certas?

É por isso que é importante para mim - isso me ajudará a organizar meu trabalho corretamente. Quando você não entende o que está acontecendo e como, você pode cometer um grande erro.
 

Além disso, num relance, Sleep() não funciona no testador, está até escrito em algum lugar na documentação...

O início da EA é feito na função Start() com a chegada de cada carrapato. Se você tiver uma dúzia de EAs, tente lidar com os erros, eles devem aparecer. Se você fizer muitos pedidos a empresas de corretagem, muito provavelmente haverá um erro como "O fluxo está ocupado".

Em relação à caixa de seleção"Permitir o comércio da EA" . Sim, o Expert Advisor trabalha, mas somente o comércio é proibido, veja o registro, ele dirá tudo.

 

Olá, você pode me dizer qual é este roteiro?

//+------------------------------------------------------------------+
//|                                                        close.mq4 |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"
#property show_confirm

//+------------------------------------------------------------------+
//| script "close first market order if it is first in the list"     |
//+------------------------------------------------------------------+
int start()
  {
   bool   result;
   double price;
   int    cmd,error;
//----
   if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
     {
      cmd=OrderType();
      //---- first order is buy or sell
      if(cmd==OP_BUY || cmd==OP_SELL)
        {
         while(true)
           {
            if(cmd==OP_BUY) price=Bid;
            else            price=Ask;
            result=OrderClose(OrderTicket(),OrderLots(),price,3,CLR_NONE);
            if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }
            else error=0;
            if(error==135) RefreshRates();
            else break;
           }
        }
     }
   else Print( "Error when order select ", GetLastError());
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
alex12:

Olá, você pode me dizer qual é este roteiro?

Diz: "Feche a primeira ordem de mercado se for a primeira da lista".
 
alex12:

Olá, você poderia me dizer que tipo de roteiro é este?


Alex, isto é o que diz aqui:

script "close first market order if it is first in the list"

Um roteiro que fecha a primeira ordem do mercado se for a primeira ordem da lista.

Isto é, como entendo pela lógica do código, é mais provável que a primeira ordem aberta se feche. Se você tiver, por exemplo, 10 pedidos abertos, então o pedido número 1 será fechado. Isto é, aquele que foi aberto primeiro.

 
Chiripaha:

Bem, lá vai você... E isso é uma "emboscada". Se eu entendo o que estou dizendo corretamente. - Deixe-me ver se entendi...

Se eu entendi corretamente, Igor, os Conselheiros Especialistas não são processados sequencialmente (como eu fiz em minhas experiências), mas em paralelo? Se for assim, significa que Arles está certa e dois negócios podem ser abertos em paralelo, se cada sinal tiver recebido as condições certas?

Por que isso é importante para mim - vai ajudar a organizar o trabalho adequadamente. Quando você não entende o que está acontecendo e como, você pode cometer muitos erros.

Sergiy, onde você conseguiu um postulado como "Todos os Conselheiros Especialistas são processados em série pelo terminal"? - Na era da computação paralela. ;)

Não fiz tais experimentos (com a determinação da ordem de processamento dos códigos dos Expert Advisors pelo terminal) - minha resposta está no nível da lógica. Eu simplesmente (sem entrar em detalhes da operação do terminal) arranjo (forçado) o processamento consecutivo de Consultores Especialistas durante as operações comerciais. Mas a resposta mais correta é minha própria experiência. É verdade que não se deve esquecer de considerar corretamente os parâmetros de entrada ao definir a experiência, a fim de processar corretamente os resultados obtidos. :)

P.S. Li em algum lugar (do desenvolvedor), que a construção atual do MT4 pode processar até 8 (se bem me lembro) ordens de negociação em paralelo, embora do "meu ponto de vista" não esteja claro o que é um terminal de usuário - ele é regulado pelo servidor DC ("na outra ponta do fio"). ;)

 
Chiripaha:

...

Ou seja, como eu entendo a lógica do código, é mais provável que a primeira ordem aberta se feche. Se você tiver, por exemplo, 10 pedidos abertos, então o pedido número 1 será fechado. Isto é, aquele que foi aberto primeiro.


Sim. Mas somente se esta primeira ordem for uma ordem de mercado. Se for uma ordem pendente, nada acontecerá.
 
TarasBY:

Sergey, onde você conseguiu um postulado tal que "Todos os EAs são processados pelo terminal sequencialmente"? - Na era da computação paralela. ;)

Eu não fiz tais experiências (com a determinação da ordem de processamento dos códigos dos Expert Advisors pelo terminal) - minha resposta está no nível da lógica. Eu simplesmente (sem entrar em detalhes da operação do terminal) arranjo (forçado) o processamento consecutivo de Consultores Especialistas durante as operações comerciais. Mas a resposta mais correta é minha própria experiência. É verdade que não se deve esquecer de considerar corretamente os parâmetros de entrada ao definir a experiência, a fim de processar corretamente os resultados obtidos. :)

Esse é o ponto (para a correção da encenação dos parâmetros da experiência). É por isso que estou fazendo as perguntas, pois não tenho certeza de minhas próprias habilidades e, portanto, tentando identificar - talvez eu tenha feito algo errado, se estes resultados divergem. Isto é mais ao ponto de testar - em momentos como este, um programa aparentemente bem escrito falha e você percebe que tem que procurar em algum lugar.

Recebi estas "experiências" por acidente. Também escrevi programas para trabalho paralelo - desisti deste método agora porque não aumentava a eficiência (pode ser realizado em outros projetos). O resultado foi tal, que até o primeiro programa não seria processado - nenhum dado seria obtido - o segundo não começaria (ou, mais precisamente, falharia). Esta seqüência dependia da janela que eu colocaria (ou seja, em que ordem) os blocos EA. - Assim, concluímos que a seqüência de janelas é importante, ou seja, os Expert Advisors são processados sequencialmente, não em paralelo. E esta seqüência depende da numeração das janelas na lista do terminal.

Esta é a essência da experiência.

Mas, mais uma vez, talvez esta seja uma interpretação incorreta dos meus resultados. É por isso que estou persistentemente tentando resolver esta questão agora, e não apenas com o "deslize".