Erros, bugs, perguntas - página 2021
![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
Tocar o insecto
O resultado é o seguinte
Reiniciar.
Isto é,SYMBOL_TRADE_TICK_VALUE retorna zeros na primeira corrida se Sleep() não for utilizado;
HI Sobre o tema do símbolo invisível em Market Watch. Se tentar abrir o gráfico USDJPY (prima Enter e introduza "USDJPY") antes do início do guião, este não funcionará. Se, depois de executar o guião, funcionar. O Market Watch não mudou, no entanto.
Tocar o insecto
O resultado é o seguinte
Reiniciar.
Isto é,SYMBOL_TRADE_TICK_VALUE retorna zeros na primeira corrida se Sleep() não for utilizado;
HI Sobre o tema do símbolo invisível em Market Watch. Se tentar abrir o gráfico USDJPY (prima Enter e introduza "USDJPY") antes do início do guião, este não funcionará. Se, depois de executar o guião, funcionar. Embora a Market Watch não tenha mudado.
Acrescentar este laço ao início do guião
E ver quantos símbolos são impressos.
Na primeira chamada, o acesso ao AUDJPY apenas acrescenta AUDUSD e USDJPY à visão geral do mercado e apenas na segunda chamada através destes pares obtém o símbolo de propriedade. É isto que está a causar o problema com a OrderCalcMargin no meu caso.
Tem sido escrito sobre muitas vezes. Não o corrigem por qualquer razão.
Olá a todos!
Ajuda para um principiante, por favor.
A função de encontrar o preço máximo é executada. Como é possível calcular e voltar ao código o NÚMERO BAR com um determinado preço máximo?
Acrescentar um laço como este ao início do guião
E ver quantos caracteres são impressos.
Na primeira chamada, o acesso ao AUDJPY apenas acrescenta AUDUSD e USDJPY à visão geral do mercado e apenas na segunda chamada através destes pares obtém o símbolo de propriedade. É isto que está a causar o problema com a OrderCalcMargin no meu caso.
Acho que se vai descobrir como fazer isso.
Recebi a resposta do Service Desk. Vai resolvê-lo.
Obrigado.
Em relação ao bug "à volta" da OrderCalcMargin() fez um pedido ao SR
É difícil ter a certeza quando existe umacontradição directa na ajuda MQL4/5:
...Lembre-se que os parâmetros são passados para trás na função, ou seja, o último parâmetro é calculado e passado primeiro, depois o penúltimo, e assim por diante. O parâmetro que vem primeiro após o parêntese de abertura é calculado e passado por sua vez.
.. .Note-se quea ordem das expressões x1,..., xn é garantida.
Qual é a contradição? Está ao contrário e é tudo. Não há declaração em contrário.
- Estas duas recomendações encontram-se em secções separadas da ajuda.
Quando se lê em
"Chamar uma função com argumentos x1, x2,..., xn"
aordem das expressões x1,....,xn é garantida, em que ordem está a pensar?
Sobre a encomenda x1,...,xn ou sobre a encomenda xn,....,x1 ?
- Estas duas recomendações encontram-se em secções separadas da ajuda.
Quando se lê em
"Chamar uma função com argumentos x1, x2,..., xn"
aordem das expressões x1,....,xn é garantida, em que ordem está a pensar?
A encomenda x1,...,xn ou a encomenda xn,....,x1 ?
Sim, tem razão, é confuso.
No entanto, penso que é má prática estabelecer a lógica do próprio algoritmo numa determinada ordenação de argumentos em qualquer caso. Ainda mais quando estes cálculos da direita para a esquerda confundem a compreensão do código. É por isso que se o quiser aplicar, deve fazê-lo apenas em alguns lugares não críticos como a impressão.
A ordem de cálculo das expressões em Print() é da direita para a esquerda. Tipo de... Adeus... Também foi verificado de antemão :)
Referência MQL5\Fases dalinguagem Operaçõese expressões Outras operações
Função chamada com argumentos x1, x2,..., xn
Note-se que a ordem das expressões x1,..., xn é garantida.
Demonstra mais uma vez a utilidade da palavra-chave C++ em linha (houve aqui uma opinião de que é supostamente obsoleta).
Entre outras coisas, inline significa de facto que o programador se recusa a utilizar a ordem de cálculo dos parâmetros da função e se o compilador decidir fazer uma função inline, o compilador pode utilizar a ordem de cálculo em linha como mais eficiente (a ordem inversa de cálculo é obviamente eficiente apenas para funções chamaveis).
Ao mesmo tempo, se o compilador decidir incorporar uma função não em linha, deve usar a ordem inversa (geral) de avaliação, mesmo que isso leve a uma perda de eficiência (porque o programador assumiu esta ordem sem ter declarado a função em linha)
inline também seria apropriado em MQL, onde a ordem de computação não pode ser controlada explicitamente