Características da linguagem mql5, subtilezas e técnicas - página 222
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Isto não é nada de novo, é a forma como sempre funcionou desde o nascimento.
Apenas se os dados forem maiores do que __atómicos__ deve ser embalado/protegido com secções críticas (ou mutex para terminal std::thread)
Bem, eu não conhecia este comportamento, e esperava um processo separado aquando da importação.
Pensei que os apontadores DLL globais seriam novos, em cada programa MT5 carregado.
Com o que tive de suar para compreender a lógica, perguntando-me porque é que o erro vai aparecer na memória.
Mas quando descobri a razão pelo método de tentativa (impressão), então todo o plano arquitectónico de trabalhar com DLL será construído de forma diferente.
Meu, tens razão sobre os mutexes, não pensei nisso. Obrigado pela dica.
Sim. Embora se o método não tiver parâmetros, pode fazê-lo:
Aplicação:
Com a execução parcial das ordens o campoORDER_TIME_SETUP_MSC muda.
Como conseqüência, o DEAL_TIME_MSC pode ser inferior ao ORDER_TIME_SETUP_MSC de seu pedido.
Que tal usar uma função de comparação personalizada?
Você está certo, obrigado! Eu exagerei em um ponto plano. Vou deixar sua variante para a triagem.
Aplicação.
ZZY É uma pena, por subcampo ou método, não funciona.
Aqui está o QuickSort otimizado de minha biblioteca, ligeiramente adaptado às suas exigências.
Ele pode classificar matrizes enormes sem transbordamento de pilha (devido à recursividade descontrolada).
Olá e obrigado por compartilhar!
Isto seria perfeito se funcionasse. Entretanto, quando colado em um script .mq5 e executado infelizmente seu código lança o(s) seguinte(s) erro(s):
Você poderia, por favor, consertar isso? Para você provavelmente é fácil, enquanto eu não saberia por onde começar :-)
Ao usar ArrayInsert, você pode economizar memória quando Array_Destination[] for menor do que Array_Source[] a partir do qual os elementos são adicionados.
Para fazer isso, você deve aplicar o ArraySwap duas vezes: antes e depois do ArrayInsert.
Por exemplo, isso é relevante ao trabalhar com grandes arquivos MqlTick, etc.
Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação
Peculiaridades da linguagem mql5, sutilezas e técnicas de trabalho
fxsaber, 2022.02.20 15:00
Você está certo, obrigado! Eu tenho overmudryl em um lugar reto. Deixarei sua variante para classificação.
Aplicativo.
Houve um erro no método Partition. Versão corrigida.
Houve um erro no método Partition. Versão corrigida.
Para um caso especial em que um campo numérico é usado para classificação (a situação mais comum), escrevi uma variante que é várias ordens de magnitude mais rápida do que a anterior. Mas ela consome o dobro de memória. Ela é relevante para matrizes grandes.
Aplicativo (com medição do tempo de execução).
Resultado.