![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Escrever ao Service Desk com todos os detalhes (anexar um perito se necessário). Será mais rápido.
Pode estar a usar um grande tamanho de variáveis de funções locais, por exemplo, matrizes.
Na construção seguinte, para o terminal de 32 bits, pode controlar o tamanho da pilha com a propriedade de compilação correspondente #propriedade de pilha
Será isto apenas um problema com terminais de 32 bit? Eu tenho x64. Como entendo "...grande tamanho de variáveis de funções locais, por exemplo, matrizes... "Quão grande deve ser para que a pilha acabe por transbordar?
Mas se o programador não especificar manualmente o tamanho da pilha necessária utilizando uma propriedade, o EX5 no terminal funcionará com o tamanho de pilha predefinido ( 256Kb).
Sobre o grande tamanho.
Cada declaração de variável dentro de uma função (excepto para variáveis estáticas) atribui espaço na pilha, e a atribuição de espaço na pilha para variáveis locais ocorre em cada chamada.
Portanto, se uma função tem 64Kb variáveis locais, o espaço da pilha é suficiente para 3 chamadas aninhadas dentro dela, e o transbordo da pilha ocorre a 4 chamadas (como parte da pilha é utilizada para as necessidades internas do terminal). Portanto, se houver necessidade de grandes dados locais, é melhor usar memória dinâmica - quando se entra na função, a memória para necessidades locais é atribuída no sistema (novo, ArrayResize) e quando se sai da função, a memória é apagada (delete, ArrayFree).
Olá!
Não consigo compreender este problema.
filehandle=FileOpen("My\\Symbols.txt",FILE_READ|FILE_TXT|FILE_ANSI);
Funciona bem na depuração, o ficheiro é legível em MT5\MQL5\File
Ao correr no testador, diz "Symbols.txt file could not be opened, error 5004" e Handel -1
Também a coloquei na pasta de ficheiros do agente MT5000MQL5, mas não a volta a ver e mata o ficheiro lá de todo).
Ao mesmo tempo, diz a descrição:
"O ficheiro é aberto na pasta do terminal do cliente na subpasta MQL5\files (ou catalog_agent_testing\MQL5\files em caso de teste)".
"A função procura um ficheiro na pasta local (MQL5\Files ou MQL5\Tester\Files em caso de teste)".
Não tenho a pasta "MQL5Tester\Files" como diz no Help?
O que estou a fazer mal e como posso ultrapassar este problema?
Obrigado pela sua resposta.
Tente usar o #property tester_file:
#property tester_file "My\\Symbols.txt"
Tente usar o #property tester_file:
Ugh-uh-x Parecia ajudar no agente MT5000MQL5 Voltou a colocar o ficheiro, depois funciona com a propriedade.
Obrigado!
Tentei novamente o testador com Handle -1 e erro 5004.
Não sei o que mais poderia ser, obviamente não consegue encontrar o ficheiro, mas consegue ver tudo quando se depura.
Copiar o ficheiro para MQL5\Tester\Files ( criar uma pasta de antemão).
Tentei, criei tais pastas manualmente, coloquei o meu ficheiro (com subpasta, #priva_arquivo do testador de propriedades desactivado), não o encontra de forma alguma no testador.
E se ligar o #property tester_file, ele funciona de forma estranha.
No entanto, de vez em quando, ele trava uma pasta e um ficheiro no ficheiro MT5000MQL5, provavelmente devido ao facto de que se desactivar #property tester_file ele racha tudo lá.
Sim, agora descobri que se eu mudar o código (em qualquer lugar) no arquivo mq5 (do qual txt é chamado), então compilá-lo e ir ao tester, ele racha tudo no arquivo MT5tester000MQL5
É um milagre, mas pelo menos funciona - e isso é bom.
Tentei, criei tais pastas manualmente, coloquei o meu ficheiro (com subpasta, #priva_arquivo do testador de propriedades desactivado), não o encontra de forma alguma no testador.
E se ligar o #property tester_file então, estranhamente, funciona.
No entanto, de vez em quando, ele trava uma pasta e um ficheiro no ficheiro MT5000MQL5, provavelmente devido ao facto de que se desactivar #property tester_file ele racha tudo lá.
Sim, agora descobri que se eu mudar o código (em qualquer lugar) no arquivo mq5 (do qual txt é chamado), então compilá-lo e ir ao tester, ele racha tudo no arquivo MT5tester000MQL5
É um milagre, mas pelo menos funciona, e isso é bom.
Se W7, colocar o ficheiro no directório Documento e Configuração/.../MetaQuotes/Common/Files, ou desactivar o UAC
PS verifica novamente a correcção da ortografia do nome, em que layouts está escrito o nome (melhor certamente copiar), disponibilidade de espaço no fim do nome e assim por diante.
Se W7, colocar o ficheiro em Document and Setting/.../MetaQuotes/Common/Files, ou desactivar o UAC
PS verifica novamente a correcção da ortografia do nome, em que está escrito o nome (é melhor copiar), a disponibilidade de espaço no fim do nome e assim por diante.
Realmente tenho Win7 64bit, mas UAC é zero.
C:Documentos e Definições Todos os Utilizadores Citações de MetaQuotes Arquivos Comuns Coloquei lá a minha pasta e ficheiro, não ajudou, não encontra o ficheiro no testador.
Sim, penso que tudo está correcto com o nome, em #property tester_file nos trabalhos de teste (e nos trabalhos de depuração em qualquer ), mas no testador não há hipótese, excepto como apenas através de #property tester_file.
E com o problema acima mencionado de matar o ficheiro depois de mudar e compilar o mq5 (tenho tal disposição).
Tem uma mentira gritante escrita na sua ajuda:
CLBufferWrite
Escreve uma matriz para o tampão OpenCL.
CLBufferWrite(
intbuffer//handle to OpenCL buffer
const void&data[]// matriz de valores
uintoffset=0// a partir do qual o elemento, por defeito, é do primeiro
tamanho vazio=WHOLE_ARRAY// número de valores, toda a matriz por defeito
);
Parâmetros
......compensar
.....
tamanho
[em] O número de valores a serem escritos. Por defeito, todos os valores da matriz são escritos no buffer do OpenCL.
......Na realidade escreve o número de bytes (!!!), não os valores de todo.
Passei duas noites a depurar o indicador, até o descobrir! E porquê? - Porque acreditei na sua escrita...
FIXE AGORA!!! :))
// Não o descobriu a tempo, porque o padrão ( size=WHOLE_ARRAY) funciona correctamente.