Possibilidade de criar alguma função de postagem de "código mql" neste fórum? - página 3

 

E este post sobre como encontrar/fixar zero devide: https://www.mql5.com/en/forum/general

 

Se o corretor acrescentou mais um dígito?

https://www.mql5.com/en/forum/179191

 

Erro incomum

Olá, pessoal,

Tenho codificado um EA, e me deparei com um erro incomum. Portanto, gostaria de pedir sua ajuda com este erro no MT4, que acredito que alguns de vocês, em toda a sua experiência, talvez já tenham enfrentado o mesmo.

A leitura de toda a EA pode ser impraticável, o código fonte é muito grande.

Após a compilação bem sucedida, no diário MT4 diz o seguinte erro

Hora: 2011.01.28 23:35:36

Mensagem: 2007.07.13 00:00 InterCandles EURUSDFXF,H4: estouro de pilha.

Mesmo elevando o tamanho da pilha para os céus via

#pilha de propriedades tamanho 167692160

que, creio eu, aloca 16MB de memória, o erro perdura.

Alguém enfrentou o mesmo problema de"estouro de pilha" no testador, ou pode indicar se o problema é interno do MT4, ou na EA (possivelmente em array, declarações aninhadas, arquivo ex4 muito grande, etc.)?

Agradeço sua ajuda e sinto muito por tomar seu tempo.

Obrigado.

 

Solução do problema

Bem, antes de alguém responder, eu encontrei a solução.

Antes de usar a função, logo após o testador carregar a EA - que liga a biblioteca anexada -, a mensagem "stack overflow" é mostrada no diário.

Problema encontrado com a função chamada "poder", no arquivo anexado. Minhas conclusões são as seguintes:

1) Certamente não há problema com seu nome; nenhuma colisão da função MQL na tabela de símbolos do EX4. Outras etiquetas foram testadas.

2) Aparentemente não foi atingido nenhum limite de funções. Mais funções foram adicionadas após a remoção da função problemática e o erro não ocorreu. Funciona corretamente apenas com a remoção desta função, não apenas destravando o arquivo EX4 através do compilador MT4.

3) A recursividade é executada através de muitas chamadas e os resultados são deixados na pilha. A pilha cresce linearmente assimetóticamente à medida que o argumento `exponente' cresce exponencialmente. Potencialmente, a pilha pode atingir seu limite e continuar a transbordar. O erro de "estouro de pilha" aparece independentemente da execução desta função.

Portanto, eu induzo o compilador MT4 pode ter um dispositivo detectando [algumas classes de] recorrência que não são permitidas no idioma evitando o possível estouro da pilha durante a execução da EA.

Arquivos anexados: