![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
View-Tools-Experts.
A divisão por zero é um erro crítico. Os programas mql recusam-se categoricamente a fazer isto)
se não o entender, pode fazer algo do género:
Mostrei que a divisão por zero só ocorre num caso particular, este zero não deveria existir, e não existe se se tomar o divisor e o divisível separadamente, isto é o que não é claro,
OK, obrigado por isso, eu próprio analisarei o assunto. Talvez haja alguma verdade na sua resposta, obrigado mais uma vez.
Infelizmente, é preciso tempo para entrar nela. E tempo é dinheiro.
O problema não se resolverá por si só,
Existe algo como ajuda desinteressada, em mql4.com e noutras circunstâncias, por vezes também ajudo se puder. Poderia simplesmente ter ficado calado.
É suposto ser assim?
Uma posição é fechada, e o pedido PositionGetDouble(POSITION_PRICE_OPEN) devolve o valor da posição fechada. Até que uma nova posição seja aberta, o valor da posição antiga (já fechada) não é alterado. É suposto ser assim?
ponto interessante, isto é
para evitar isto, utilizo o seguinte
e será zero, como desejado.
Pedir PosiçõesTotal() = 0. Agora faço uma consulta PositionGetDouble(POSITION_PRICE_OPEN) e obtenho em resposta o preço de abertura de uma posição já fechada. Idealmente, deveria obter zero, uma vez que não há nenhuma posição aberta. Sim, depois de solicitar sobre a existência da posição.
Na minha opinião, tudo está dentro das regras:
A função PositionSelect() copia os dados de posição para o ambiente de software, e chamadas subsequentes para PositionGetDouble(), PositionGetInteger() e PositionGetString() devolvem os dados previamente copiados. Isto significa que a posição em si pode já não existir (ou pode ter mudado em volume, direcção, etc.), mas os dados desta posição ainda podem ser recuperados. A fim de garantir a recepção de novos dados de posição, recomenda-se chamar a função PositionSelect() imediatamente antes de os chamar.
Contudo, não compreendo porque é que os dados da posição devem ser solicitados se a selecção da posição falhar. Mas não importa.
Caros programadores. Não o tome como uma imposição, tenho uma pergunta: o que pensa da possibilidade de cancelar uma ordem pendente se o preço tiver atingido um valor?
Após a actualização para Build 507, estou a ter dois problemas no testador:
1. Durante a optimização ao trocar as tabulações de teste, o terminal ocasionalmente (nem sempre) trava;
2. Se uma enumeração foi seleccionada como parâmetro optimizado, então ao tentar executar um dos resultados da optimização, o Expert Advisor não vê o valor desta enumeração, ou seja, é sempre igual a zero.
Parece ter encontrado um problema com a enumeração durante a optimização e o abandono do terminal. Terá de esperar pela próxima construção.
Óptimo. Não se consegue reproduzir o problema com agentes remotos pendurados?
Já me cansei deles. Raramente se consegue uma optimização sem congelação.
Tenho de desligar os agentes congelados, depois ligá-los e assim sucessivamente até ao próximo congelamento.
E depende tanto de agentes que estão na rede local como de agentes nebulosos (menos frequentemente).
Isso é óptimo. Não se consegue reproduzir o problema com os agentes remotos desligados?
Estou a ficar farto e cansado deles. Raramente se consegue uma optimização sem congelação.
Tenho de desligar os agentes pendurados, depois ligá-los e assim sucessivamente até ao próximo enforcamento.
E depende tanto de agentes que estão na rede local como de agentes nebulosos (menos frequentemente).