![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
Hi
Esta abordagem só funciona se o tamanho da posição atual for zero e o novo comércio for executado com sucesso com o tamanho da posição desejada.
Ver código:
Mas e se sua EA estiver girando a posição: de uma posição LONGA para uma posição CURTA ou vice-versa e esta ação for executada em 2 negócios diferentes?
Após a primeira negociação, o booleano "position_opened" é definido como "TRUE" e o EA não pode abrir a negociação 2e porque a condição é verificar"if(conditions_to_open && !position_opened)", então a segunda negociação será bloqueada.
E se o tamanho da posição for aberto apenas parcialmente? Você precisa de uma segunda negociação para obter o tamanho de sua posição no tamanho correto.
No final, para resumir "uma longa história", você sempre precisa da função PositionSelect(Symbol()) para calcular o tamanho da posição CURRENT e foi aqui que todo o problema começou (e este tópico do fórum).
No momento crítico, quando o EA está chamando o PositionSelect(Symbol()), o terminal ainda não atualizou o tamanho da posição CURRENT e o EA está trabalhando com o tamanho de posição errado e envia uma nova ordem dupla para o servidor comercial.
Eu acho que a abordagem de(figuralli) é melhor porque você é forçado a esperar até que o EA tenha atualizado a função PositionSelect(Symbol()) para o tamanho de posição correto.
Hi
Esta abordagem só funciona se o tamanho da posição atual for zero e o novo comércio for executado com sucesso com o tamanho da posição desejada.
Ver código:
Mas e se sua EA estiver girando a posição: de uma posição LONGA para uma posição CURTA ou vice-versa e esta ação for executada em 2 negócios diferentes?
Após a primeira negociação, o booleano "position_opened" é definido como "TRUE" e o EA não pode abrir a negociação 2e porque a condição é verificar"if(conditions_to_open && !position_opened)", então a segunda negociação será bloqueada.
E se o tamanho da posição for aberto apenas parcialmente? Você precisa de uma segunda negociação para obter o tamanho de sua posição no tamanho correto.
No final, para resumir "uma longa história", você sempre precisa da função PositionSelect(Symbol()) para calcular o tamanho da posição CURRENT e foi aqui que todo o problema começou (e este tópico do fórum).
No momento crítico, quando o EA está chamando o PositionSelect(Symbol()), o terminal ainda não atualizou o tamanho da posição CURRENT e o EA está trabalhando com o tamanho de posição errado e envia uma nova ordem dupla para o servidor comercial.
Eu acho que a abordagem de(figurelli) é melhor porque você é forçado a esperar até que o EA tenha atualizado a função PositionSelect(Symbol())
Você está certo, ambas as abordagens têm limitações.
A origem desta questão está agora claramente identificada. Cada um tem que adaptar seu código de acordo com sua estratégia. Não creio que haja um método geral que possa ser aplicado em todos os casos.
Precisamos de uma Biblioteca para o Grande e Poderoso mql5?
Você está certo, ambas as abordagens têm limitações.
A origem desta questão está agora claramente identificada. Cada um tem que adaptar seu código, dependendo de sua estratégia. Não creio que haja um método geral que possa ser aplicado em todos os casos.
Ou temos que esperar por uma "declaração oficial" dos próprios caras das Metaquotes.
Já existe uma resposta da central de serviço?
Se eu concordasse com você, você consideraria isso inútil?
.
Eu apenas ensinei que a solução de Dormir até Terminar o Comércio me lembrava a OrderSendReliable(). Ensinei que estas teriam sido abordadas de forma mais elegante.
Também me lembrava do manuseio dos velhos_documentos... para onde ele vai { e todas as negociações deveriam ser interrompidas }.
De qualquer forma, as desculpas não significavam implicar com o mql5.
Ou temos que esperar por uma "declaração oficial" dos próprios caras das Metaquotes.
Já existe uma resposta da central de serviço?
Não. Eu só estava pensando nisso... Seria provavelmente útil se todas as pessoas envolvidas escrevessem um bilhete para o ServiceDesk sobre este assunto. Entretanto, estou muito cético se a MQ estiver disposta a mudar este projeto. Mas nós podemos tentar.
As pessoas podem escrever para o ServiceDesk e relatar o ticket# aqui. O meu é
Se eu concordasse com você, você consideraria se não fosse útil? .
Acabo de ensinar que a solução de Dormir até Terminar o Comércio me lembrou a OrderSendReliable(). Ensinei que estas teriam sido abordadas de forma mais elegante.
Também me lembrava do manuseio dos velhos_documentos ... para onde vai { e todas as negociações deveriam ser interrompidas }.
De qualquer forma, as desculpas não significavam implicar com o mql5.
Sim, mas é difícil dizer se é por causa de uma má codificação. A dupla troca era um problema mesmo antes do fio comercial múltiplo. A forma como é tradicionalmente manipulada é a forma como o snelle_moda lida com ela.
Sim, mas é difícil dizer se é por causa de uma má codificação. A dupla troca era um problema mesmo antes do fio comercial múltiplo. A forma como é tradicionalmente manipulada é a forma como o snelle_moda lida com ela.