Características da linguagem mql5, subtilezas e técnicas - página 130
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
Obrigado. A utilização da função ArraySwap não me teria ocorrido.
Compreendo que a sua função funcionará tanto ao aumentar como ao diminuir o tamanho, ou seja, como um análogo completo do ArrayResize.
Não será melhor simplesmente chamar a função padrão ArrayResize quando um array é aumentado, em vez de chamar as três funçõesArraySwap,ArrayResize,ArrayCopy?
p.s Testou a sua versão e a minha com duas cópias ao reduzir a matriz MqlTick de 1.000.000 para 500.0000. A sua versão fá-lo em 22 milésimos de segundo. O meu fá-lo em 37-38.Não é melhor simplesmente chamar o ArrayResize padrão quando um array é aumentado do que chamar três funçõesArraySwap,ArrayResize,ArrayCopy
Pensei sobre isso, mas não o fiz, porque na realidade há mais subtilezas. Foi por isso que decidi manter a versão lacónica.
Uma das subtilezas é esta. Se tomar um conjunto de estruturas com construtores/destructores, o ArrayResize chamá-los-á em qualquer direcção numa quantidade igual à diferença de valores.
Mas a aplicação do ArrayCopy está a chamar todos os construtores. A remoção do ArrayTmp é uma chamada a todos os destruidores. Portanto, o ArrayResize2 não é realmente o ArrayResize.
Após a optimização, verá o seguinte
Se desligar o Expert Advisor em modo frame e o executar em modo standard, este mostrará os mesmos dados que obteve durante a optimização.
Esta abordagem permite-lhe voltar muitas vezes aos resultados da Optimização.
SZY Na tabela que se abre no Terminal para o modo frame, não se pode executar nenhuma EA. Por isso, se quiser executá-lo em modo padrão, deve executá-lo num gráfico que não tenha sido aberto para molduras.
fxsaber:
extern теперь является жестко заданным макросом
Assim, nem sempre será possível fazer o código MT5 mq4 funcionar sem alterações.
Não há alterações na documentação. Pode explicar isto com mais detalhe?
Não há qualquer alteração na documentação. Pode explicar isto com mais detalhe?
Um tal código
irá sempre gerar um aviso. Estou a ser um pouco duro em relação ao "impossível". É possível anular, pelo que apenas um aviso será sempre pendurado em tais situações.
Uma das nuances é esta. Se tomar um conjunto de estruturas com construtores/destructores, então o ArrayResize em qualquer direcção chama-os num número igual à diferença de valores.
Mas a aplicação do ArrayCopy está a chamar todos os construtores. A remoção do ArrayTmp é uma chamada a todos os destruidores. Portanto, o ArrayResize2 não é realmente o ArrayResize.
Então seria provavelmente mais correcto chamar-lhe ArrayReallocate, embora eu não veja qualquer sentido em tal recoperação forçada. Travagem desnecessária.
Libertar a memória é a única razão.