Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1208
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
Não faz qualquer diferença. Tenho uma suspeita de diferença, porque quando estabeleço ordens e posições, atribuí-lhes "comentários" para as minhas próprias posições, para ordens minhas. Como resultado, quando uma ordem passa para uma posição, ela herda o comentário da ordem.
Depois, quando verificámos as posições através de comentários, houve uma confusão... os comentários eram diferentes. Eu corrigi isso.
No seu código, não encontrei nem compreendi de todo como as posições estão fechadas para a condição SELL_LIMIT desencadeou. Equidade.
Parece que verificámos se todas as posições podem ser fechadas, e se a bandeira está colocada para o efeito
mas noCloseAllPositions();
falta qualquer coisa.
Não há verificação para fechar todas as posições para o caso - SELL_LIMIT desencadeou.
Talvez esta mesmam_account.Equity()>= m_account.Balance()+15é implementada de alguma outra forma?
Ou talvez seja porque expliquei incorrectamente o significado da média no meu contexto.
Já mencionei acima - as ordens pendentes não têm nada a ver com isso. Uma ordem pendente não pode ter lucro. A partir da palavra "de todo". Enquanto não deixar isso claro, não pode seguir em frente.
Adicionado: mostrei uma solução de exemplo para dois casos:
Já referi acima - as ordens pendentes não têm nada a ver com isso. Uma ordem pendente não pode ter lucro. A partir da palavra "de todo". Enquanto não deixar isto claro, não poderá avançar mais.
Vladimir. Bem, é claro, uma ordem pendente não pode ter lucro. Naturalmente, estamos a falar do lucro das posições em aberto.
Apenas a diferença está em como estas posições foram abertas. Precisamos de um método de fecho diferente para elas.
Se a segunda posição for aberta a partir de uma ordem de SELL_STOP inteligente, então uma delas deve ser fechada, a que tiver um lucro maior da posição. Isto funcionou para si e funciona.
Se a segunda posição for aberta a partir de uma ordem SELL_LIMIT, então ambos devem ser fechados por Equidade(m_account.Equity()>= m_account.Balance()+15) A menos que o SL de um deles seja accionado primeiro.
Adicionado.
Mostrei um exemplo de solução para dois casos:
Tudo parece estar bem com a segunda condição. Mas por alguma razão tenho a segunda condição abre a segunda posição e fecha-a imediatamente perto de 0 -1,2.
Talvez eu especifique o lucro total num lugar errado?
InpProfitTarget = 15; se aqui, não funciona.
Vladimir. É claro que uma ordem pendente não pode ter lucro. Estamos a falar de lucros, claro, de posições em aberto.
Apenas existe uma diferença na forma como estas posições foram abertas. Precisamos de um método de fecho diferente para elas.
Se a segunda posição for aberta a partir de uma ordem de SELL_STOP inteligente, então uma delas deve ser fechada, a que tiver um lucro maior da posição. Isto funcionou para si e funciona.
Se a segunda posição for aberta a partir de uma ordem SELL_LIMIT, então ambos devem ser fechados por Equidade(m_account.Equity()>= m_account.Balance()+15) A menos que o SL de um deles seja accionado primeiro.
Desculpe:
Mostrei um exemplo de solução para dois casos:
A seguir, por favor, faça você mesmo alguma coisa.
Desculpe:
Mostrei um exemplo de solução para dois casos:
A partir daqui, por favor, faça você mesmo alguma coisa.
Obrigado pela sua ajuda Vladimir, estou a tentar.
2. temos mais de duas posições - se o seu lucro total for superior ao especificado, fechamos todas as posições.
Mas eu não precisava, precisava de duas ou mais posições onde a segunda fosse aberta com o accionamento doSELL_LIMIT.
De qualquer forma, obrigado pela vossa paciência e esforços. É claro que o resolverei à minha maneira, sofrerei e o resolverei))))
Boa noite rapazes, para não multiplicar os fios, eis uma questão - o guião coloca uma ordem de paragem pendente com um take and stop bastante específico, não é executado, e nos comentários é escrito [iliquidez] - como lidar com ele - fazer um loop do guião antes da execução, definir um deslize maior, ou especificar o número de repetições ou o quê ? Ou dê-me uma dica onde escavar.
Deve sempre procurar na documentação
ORDER_TIME_GTC
A ordem permanecerá na fila até ser retirada
Deve sempre procurar na documentação
ORDER_TIME_GTC
A ordem permanecerá na fila até ser retirada
Obrigado, deve ser isso
Boa noite!
Há 1 posição em aberto.
O Expert Advisor fecha uma posição utilizando o método PositionClose();
O resultado é impresso ResultRetcode= 10009. Descrição do código: feito às 0.00
Abaixo do código, há uma verificação se(PositionSelect(_Symbol)), que é bem sucedida.
Isto é, passa algum tempo entre a execução da PositionClose() e o desaparecimento da posição aberta, durante o qual o programa consegue fazer uma saída errada.
Como resolver esta situação correctamente?
Porque é que tenho de reiniciar o terminal sempre depois de um teste para fazer um novo teste?
Apago todos os objectos. Encerro os ficheiros. Aqui está o registo quando eu parar de testar:
Mas não vai começar da próxima vez - tenho de fechar o terminal e abri-lo novamente. Construir 2361.