Konstantin Karpov: Como determinar em tempo de compilação que modo de bits é o terminal? O identificador TERMINAL_X64 não se ajusta, uma vez que se destina a funções. Muito provavelmente, existem macros que não são mencionadas na ajuda, mas ocasionalmente aparecem de uma forma ou de outra :)
Infelizmente, não o fazem. Há uma variável _IsX64 mas funciona em tempo de execução.
Como posso deixar de usar dois dlls, um para terminais de 32 bit e outro para terminais de 64 bit? Não é kasher guardar duas cópias do programa...
A propósito, quem tem experiência, se compilar código em ME x64, ele funcionará em terminais de 32 bits sem erros ou haverá algumas características ocultas de execução de código?
Como determinar em tempo de compilação que modo de bits é o terminal? O identificador TERMINAL_X64 não se ajusta, uma vez que se destina a funções. Muito provavelmente, existem macros que não são mencionadas na ajuda, mas ocasionalmente aparecem de uma forma ou de outra :)
Como posso deixar de usar dois dlls, um para terminais de 32 bit e outro para terminais de 64 bit? Não é kasher guardar duas cópias do programa...
A propósito, quem tem experiência, se compilar código em ME x64, ele funcionará em terminais de 32 bits sem erros ou haverá algumas características ocultas de execução de código?
Por exemplo, existe a função funcTest(...) na biblioteca para terminais de 32-bit library_x86.dll e para terminais de 64-bit library_x64.dll.
Se a importação for visível em todo o ficheiro, é correcto escrever uma tal construção:
ou será que este truque não funcionará?Ou este truque não vai funcionar?
Tanto quanto sei, não. Pode importar ambas as dlls e chamar as funções de uma ou de outra, dependendo da taxa de bits do terminal.
Em geral, a divisão em duas versões por bit rate não é uma opção tão ilusória.
Tomo um indicador (qualquer um dos conjuntos padrão), chamo-o no Expert Advisor:
Depois de executar a EA com visualização no testador - tudo funciona, o indicador é desenhado.
Agora mudo uma linha no indicador
ExtMomBuffer[i]=close[i]*100/close[i-InpMomPeriod];a esta linha:
ExtMomBuffer[i]=100;E agora o indicador não desenha absolutamente nada - mesmo uma escala vertical não está marcada.
Onde está o erro? MetaTrader 4 construir 765.
OK, vamos chamar-lhe comportamento não convencional :)
Muito obrigado, mas tenho mais uma pergunta. Sim, funcionou desta forma:
ExtMomBuffer[i]=i%2;E foi assim que deixou de funcionar novamente:
Tinha-o a funcionar nas versões antigas de MT, o que há de errado com as novas versões?
Assim, na segunda versão há um valor.
Na verdade, posso estar enganado.
Bem, pode fazê-lo assim, ainda não funciona:
ExtMomBuffer[0]=cnt++;O cerne do problema é que tentar escrever para a barra 0 do indicador em cada passo da EA - não faz nada.
Penso ter encontrado onde escavar. Alterado
a verdade e algo começa a aparecer. Vou-me embebedar.