Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 305
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
Boa noite a todos! Decidi colocar um rasto em negócios abertos no testador, tentei passar pela OrderGet....() e percebi que o negócio passou da categoria de encomendas para uma posição aberta, respectivamente passou pela PositionGet....(), mas mais uma vez nada funciona,
A questão é se devo agora usar o HistoryDealGet...() ? Ou não compreendo alguma coisa? Qual o caminho a seguir para modificar o SL no comércio aberto no testador? Obrigado desde já pelos comentários.
Por favor, dirija-me a !!!! como implementar na MQL5 a verificação da presença (ou ausência) de um objecto gráfico, por exemplo, uma linha de tendência ou uma linha vertical?
Idealmente, gostaria de usar uma lógica semelhante a "Se a ordem não existe" ou "Se a ordem existe".
Por favor, dirija-me a !!!! como implementar na MQL5 a verificação da presença (ou ausência) de um objecto gráfico, por exemplo, uma linha de tendência ou uma linha vertical?
Idealmente, gostaria de usar uma lógica semelhante a "Se a ordem não existe" ou "Se a ordem existe".
Pode aconselhar como implementar correctamente o algoritmo de compra?
Neste momento, o Conselheiro Especialista tem de comprar muitas vezes, até receber a informação de que existem posições em aberto, e fica para trás. Como fazer o Consultor Especialista esperar pela resposta da troca após a primeira compra (quando as condições chegarem)
O problema agora é que a variável Bye_opened deve tornar-se verdadeira e isto deve impedir a EA de fazer negócios desnecessários até que as paragens sejam accionadas. Mas mudar a variável Bye_opened leva muito tempo e a EA tem tempo para fazer várias transacções.
O que é que falta no meu código? Por favor, assinale as deficiências.
O problema agora é que a variável Bye_opened deve tornar-se verdadeira e isto deve impedir a EA de fazer negócios desnecessários até que as paragens sejam accionadas. Mas as alterações da variável Bye_opened levam muito tempo e a EA tem tempo para fazer várias transacções.
Só porque uma mudança variável demora muito tempo... como determinou isso? Ok, vamos supor que sim. Então a resposta reside na pergunta. Se precisar de um atraso na abertura de uma posição deve usar Sleep( N ) onde N é calculado experimentalmente.
Variante 2. A resposta, mais uma vez, está na pergunta. Faça Bye_opened global e mude-o imediatamente após a abertura da posição com sucesso, mesmo neste módulo. Reiniciar da mesma forma, ao verificar a existência de posição.
...
Se inserir uma linha
após o comando: OrderSend(), não haverá reabertura de posições.
Talvez seja melhor verificar se a posição abriu primeiro, e depois ...
???
Aparentemente, tem um robô a funcionar em cada carraça. Entre o envio da encomenda para o servidor e a recepção da resposta do servidor, virão mais várias carraças e uma posição extra será aberta em cada carraça. A minha proposta exclui a situação de repetição de aberturas. E é necessário verificar se uma posição foi aberta ou não.
É isso que estou a dizer. Caso contrário, iria literalmente compreender tudo e perder uma verificação importante.
Então, isto é realmente como verificar correctamente? Lamento, mas não consigo acertar.
Aqui está o código (todos localizados no bloco OnTick):
A fim de evitar a abertura de volumes desnecessários:
Infelizmente, esta condição não funciona quando se abre um comércio.