Mas não há nada que impeça o trabalho em paralelo por meio de uma área de transferência comum. Basta fazer uma verificação adicional.
Essa foi a primeira coisa que tentei. Passei vários dias depurando o semáforo de arquivo em COMMON, mas não consegui um trabalho estável. Talvez as funções de arquivo embutidas estejam funcionando de forma um pouco diferente do que eu acho que deveriam.
Talvez eu deva tentar arquivos por meio da WinAPI, da memória compartilhada ou até mesmo da API de semáforo (com certeza existe uma, talvez alguém possa me dizer; MutEx veio à minha mente imediatamente, vou pensar sobre isso).
Se quiser analisar minhas funções Lock e Release (elas são curtas), posso publicá-las depois de amanhã. Não?
Edgar Akhmadeev: Essa foi a primeira coisa que tentei. Passei alguns dias depurando o semáforo de arquivo no COMMON, mas não consegui fazê-lo funcionar de forma consistente. Talvez as funções de arquivo embutidas estejam funcionando de forma um pouco diferente do que eu acho que deveriam.
Talvez eu deva tentar os arquivos por meio da WinAPI, da memória compartilhada ou até mesmo da API de semáforo (com certeza existe uma, talvez alguém possa sugeri-la; MutEx me veio à mente imediatamente, vou pensar sobre isso).
Se quiser analisar minhas funções Lock e Release (elas são curtas), posso publicá-las depois de amanhã. Não?
Bem, você fez uma bagunça! Insira uma string-input, na qual você enfia o caminho para o Terminal por meio do buffer. Depois de inserir as configurações, leia-as e verifique se estão corretas. Em particular, por essa string-input. Pressione o botão Start assim que a verificação for concluída com êxito.
Você fez muito sentido! Insira uma string-input, na qual você insere o caminho para o Terminal por meio do buffer. Depois de inserir as configurações, leia-as e verifique se estão corretas. Em particular, por essa string-input. Pressione o botão Start assim que a verificação for concluída com êxito.
Não é que eu esteja sendo esperto, estou apenas sendo muito direto. Multi-acesso significa semáforos.
1. Eu mudaria de GetTickCount() para GetTickCount64() em Sleep2. Caso contrário, o estouro ameaça a lógica não muito correta. E isso acontece com muito menos frequência na variante de 64. Em outros trabalhos, talvez você deva mudar para ela também.
Aproveite o bug do KB: o arquivo zip contém a primeira versão.
Só encontrei um para dezembro de 2019. O MTTester não parece ter excluído funções antigas.
Encontrado apenas para dezembro de 2019. Acho que não excluí funções antigas no MTTester.
Talvez, pelo menos na forma de uma ideia, como definir os parâmetros de otimização do Expert Advisor a partir do código?
Somente essas possibilidades.
Mas nada impede o trabalho em paralelo por meio da área de transferência comum. Basta fazer uma verificação adicional.
Mas não há nada que impeça o trabalho em paralelo por meio de uma área de transferência comum. Basta fazer uma verificação adicional.
Essa foi a primeira coisa que tentei. Passei alguns dias depurando o semáforo de arquivo no COMMON, mas não consegui fazê-lo funcionar de forma consistente. Talvez as funções de arquivo embutidas estejam funcionando de forma um pouco diferente do que eu acho que deveriam.
Bem, você fez uma bagunça! Insira uma string-input, na qual você enfia o caminho para o Terminal por meio do buffer. Depois de inserir as configurações, leia-as e verifique se estão corretas. Em particular, por essa string-input. Pressione o botão Start assim que a verificação for concluída com êxito.
Algo semelhante também é feito.
Você fez muito sentido! Insira uma string-input, na qual você insere o caminho para o Terminal por meio do buffer. Depois de inserir as configurações, leia-as e verifique se estão corretas. Em particular, por essa string-input. Pressione o botão Start assim que a verificação for concluída com êxito.
Acelerando o GA.
O Expert Advisor no modo de quadro recebe o OnTester dos agentes. Se, em 100 a 1000 passagens, nada de bom for encontrado, pressionamos Stop.
A otimização pode ser acelerada em uma ordem de magnitude.Você pode acelerar a otimização em uma ordem de grandeza .
Fiz 470 otimizações (cada uma em um símbolo diferente) em 4,5 horas em ticks reais (um mês).
1. Eu mudaria de GetTickCount() para GetTickCount64() em Sleep2. Caso contrário, o estouro ameaça a lógica não muito correta. E isso acontece com muito menos frequência na variante de 64. Em outros trabalhos, talvez você deva mudar para ela também.
2) O segundo ArrayResize levanta questões aqui
Provavelmente deveria ser
Res = ::ArrayResize(Buffer, Read / sizeof(T));3) E, por fim, alguns tipos diferentes