Características da linguagem mql5, subtilezas e técnicas - página 201
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
Para tais casos, aqui estão algumas macros auxiliares.
1. por vezes pretende determinar dentro da sua macro se um parâmetro foi ou não definido. IS_PARAMETER_SET(p) define uma expressão, que retorna verdadeiro se p for definido (mesmo que a variável string ===NULL).
Atenção: a expressão é avaliada após o pré-processamento em tempo de compilação!!!, ou seja, não pode ser usada para implementar algo como #ifdef IS_PARAMETER_SET(p) #else (isto também se aplica a outras macros abaixo)
2. Se precisar de converter explicitamente um valor de parâmetro para uma string, para evitar um erro de tempo de compilação com um parâmetro não especificado, pode usar __EVAL_STR(p). Se p não for especificado ou definido explicitamente com NULL literal, retorna "". Não aplicável a arrays, estruturas e classes.
A conversão explícita de um parâmetro para um número é __EVAL_NON_STR(p). Se p não estiver definido, devolve 0. Não funciona quando p é uma corda!
Código e exemplos de utilização:
O seguinte código na conta de demonstração doRannForex-Server pode reproduzir imediatamente esta situação executando este conselheiro.
Resultado.
A propósito, o guião mostra (nem sempre da primeira vez) um erro na execução síncrona da OrderSend.
Após a OrderSend ser executada durante alguns dez/centenas de milissegundos, o preço da encomenda é o preço antigo, não o que foi colocado com sucesso pela OrderSend.
Voltando ao tema de bilhetes idênticos, podemos tirar algumas conclusões.
Se alguém o conseguiu reproduzir noutro servidor comercial, por favor partilhe o nome.
Cadeia de pesquisa: Oshibka 010.
De volta à questão da execução parcial.
1. Esclareça no ponto 3: "Pode encerrar a posição que formou sem retirar a Execução Parcial. Mas se depois disso a ordem for accionada, uma troca será aberta com um bilhete igual ao bilhete da posição que fechou antes. Ou seja, pode haver uma situação em que se fecha uma posição com um determinado bilhete. E depois aparece novamente uma posição com o mesmo bilhete"
Neste caso, o POSITION_IDENTIFIER foi igual ou não ao POSITION_TICKET?
2. Anteriormente no fio "POSITION_TICKET != POSITION_IDENTIFIER" demonstrou uma lógica MT5 diferente.
Conclusões
Se assumirmos que este é um comportamento normal do MT5, e não uma peculiaridade do hack do corretor, então
Na sua experiência, existe algum padrão geral em que casos/modos de trabalho que o MT5 utiliza?
3. Em última análise, alguma vez houve situações reais onde "POSITION_TICKET != POSITION_IDENTIFIER" ?
Ao chamar uma macro, é possível omitir um parâmetro (deixá-lo de fora), e por vezes pretende-se permitir especificamente que uma macro trabalhe com um parâmetro não especificado.
Então, acontece que um parâmetro não especificado em qualquer macro é tratado pelo compilador como uma cadeia vazia?
De certa forma, sim, embora talvez "como um espaço vazio" seja uma palavra melhor. Difícil de articular claramente :-(.
Mas #p definitivamente transforma-se em cordel ==""".
De certa forma, sim, embora talvez "como um espaço vazio" seja uma palavra melhor. Difícil de articular claramente :-(.
Mas #p definitivamente transforma-se em cordel ==""".
Obrigado, nuance interessante.
@fxsaber
Consulte esta edição, por favor: https://www.mql5.com/ru/forum/170952/page201#comment_21964923
Voltando novamente à questão do desempenho parcial.
1. Por favor esclarecer no ponto 3: "É possível fechar uma posição formada sem remover a Opção de Venda Parcial. Mas se depois disso a ordem for accionada, uma troca será aberta com um bilhete igual ao bilhete da posição que fechou antes. Ou seja, pode haver uma situação em que se fecha uma posição com um determinado bilhete. E depois aparece novamente uma posição com o mesmo bilhete"
Neste caso, o POSITION_IDENTIFIER foi igual ou não ao POSITION_TICKET?
2. Anteriormente, no ramo "POSITION_TICKET != POSITION_IDENTIFIER", demonstrou uma lógica diferente do MT5.
Na sua experiência, mostrou algum padrão geral em que casos/modos de funcionamento se aplica o esquema MT5?
3. Em última análise, alguma vez houve situações reais onde "POSITION_TICKET != POSITION_IDENTIFIER" ?
Ambos os links falam de diferentes implementações de execução parcial. Isto é determinado pelo software do corretor, não pelo MT5.
Nunca foi encontrado qualquer desfasamento entre bilhete e identificação.
Fórum sobre comércio, sistemas de comércio automatizados e testes estratégicos
Bibliotecas: Utilização
fxsaber, 2021.05.01 14:17
GetMicrosecondCount pode produzir um valor inferior ao da chamada anterior (sem ULONG overflow). Exemplos de tais situações.Cada linha é obtida por diferentes EAs em três terminais MT4.
E no MT5 este tipo de coisas acontece, mas muito menos frequentemente no MT4.
Tenham cuidado.