![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
Onde cometi um erro. Porque é que tenho uma posição alargada.
Existe um conceito chamado netting. De acordo com a filosofia da NETTING, todas as transacções unidireccionais aumentam a posição, enquanto as transacções multidireccionais fecham, diminuem ou invertem-na.
Se tirarmos uma conclusão da linha, compreendemos que com uma Venda existente uma nova posição de Compra irá fechar ou cortar a posição existente.
PS
A propósito, TP e SL em MT5 são definidos de acordo com a última transacção, pelo que também devem ser monitorizados...
Qual é a forma correcta de eliminar todas as encomendas com um determinado modo?
Tenho duas funções para isto, check_orders checks_orders para encomendas com um determinado modo, e remove_sl elimina as encomendas:
O problema é que no meu diário da EA, recebo linhas como esta:
2011.05.11 21:40:19 Comércios '726238' : não conseguiu cancelar a encomenda #4375237 comprar 0,00 a 0,00000 [Pedido inválido]
Isto é, os pedidos desnecessários são enviados para o servidor comercial com um pedido de eliminação da ordem que já foi solicitada.
Devo consultar a lista de encomendas de cima para baixo, por exemplo
ЗЫ Если вы знаете инструмент то для поиска позиции совсем не нужно перебирать все позиции, достаточно воспользоваться вот этой функцией:
Obrigado. Vou tentar.
A propósito, utilizo um símbolo.
De acordo com a filosofia desta mesma REDE, todas as transacções unidireccionais aumentam a posição e as transacções multidireccionais fecham, diminuem ou invertem.
Exactamente!
Concluímos da linha que entendemos que com uma Venda existente uma nova Compra irá fechar ou aparar uma posição existente.
PS
A propósito, TP e SL em MT5 são definidos de acordo com a última transacção, pelo que também devem ser monitorizados...
Das suas palavras, Sr.Interessante , compreendo que compreendo tudo correctamente.
Estou a utilizar os mesmos lotes. Estou a utilizar as mesmas paragens. Tudo é como deveria ser. Mas algo está errado!
Está bem. Prometeu fazer dois EAs e mostrar a diferença. Eu faço-o. Não quero pôr o melhor lá fora para que todos possam ver.
Então, quem entre os peritos respeitados pode enviar dois EAs para a mesma estratégia em mql4 e em mql5?
Só preciso de descobrir o que estou a fazer mal, é só isso. Bem, estatísticas de preços diferentes não podem alterar os resultados dos testes em 2-3 vezes. Trata-se de programação.
Lizar,Renat,sergeev, HELP me. Posso dar-vos todos os peritos para reverem o código. O Expert Advisor é simples mas eficaz. Ainda posso melhorá-lo, mas simplifiquei-o ao máximo, para tornar a essência do problema mais clara.
Peço também desculpa a todos por ser intemperados nas suas declarações. Estou envergonhada. Mas eu quero MUITO compreender tudo!
Necessidade de percorrer a lista de encomendas de cima para baixo, por exemplo, desta forma:
Não ajuda, aparentemente a encomenda é eliminada com sucesso e depois é enviado outro pedido:
2011.05.12 16:42:57 Comércios '726238' : cancelar encomenda #4388299 comprar paragem 0.02 EURUSD a 1.41700 feito
2011.05.12 16:42:57 Comércios '726238' : cancelar encomenda #4388299 comprar paragem 0.02 EURUSD a 1.41700
2011.05.12 16:42:58 Comércios '726238' : não conseguiu cancelar a encomenda #4388299 comprar 0,00 a 0,00000 [Pedido inválido] - já uma compra enquanto a paragem de compra era
semelhante, mas em mql4:
Bem, veja e compare. Fiz asneira algures... A diferença é substancial.
Não ajuda, aparentemente a encomenda é eliminada com sucesso e depois é enviado outro pedido:
2011.05.12 16:42:57 Comércios '726238' : cancelar encomenda #4388299 comprar paragem 0.02 EURUSD a 1.41700 feito
2011.05.12 16:42:57 Comércios '726238' : cancelar encomenda #4388299 comprar paragem 0.02 EURUSD a 1.41700
2011.05.12 16:42:58 Comércios '726238' : não conseguiu cancelar a encomenda #4388299 comprar 0,00 a 0,00000 [Pedido inválido] - já uma compra enquanto a paragem de compra era
Tenho vergonha de admitir que ainda não dominei a arte da telepatia.
Vou repetir a pergunta:
Como posso eliminar correctamente todas as encomendas com um certo mag?
Tenho duas funções para isto, check_orders verifica as encomendas com um determinado modo e remove_sl remove-as:
O problema é que na revista da EA estas linhas aparecem:
2011.05.11 21:40:19 Comércios '726238' : não conseguiu cancelar a encomenda #4375237 comprar 0,00 a 0,00000 [Pedido inválido]
Isto é, pedidos desnecessários são enviados para o servidor comercial para remover a encomenda que já tinha sido solicitada.
Aconselha-se o seguinte:
É necessário percorrer a lista de encomendas de cima para baixo, por exemplo, desta forma:
Tentei fazer como disse, mas o problema mantém-se - a ordem pendente é apagada primeiro, depois é enviado outro pedido para apagar a mesma ordem. Aqui está um exemplo das linhas de registo:
2011.05.12 16:42:57 Comércios '726238' : cancelar a encomenda #4388299 comprar paragem 0.02 EURUSD a 1.41700 feito - eliminar a encomenda com sucesso
2011.05.12 16:42:57 Comércios '726238' : cancelar encomenda #4388299 comprar paragem 0.02 EURUSD a 1.41700 - Outro pedido está a ser enviado
2011.05.12 16:42:58 Comércios '726238' : não conseguiu cancelar a encomenda #4388299 comprar 0,00 a 0,00000 [Pedido inválido] - foi comprada por alguma razão.
Isto não acontece sempre, mas por vezes, e não afecta o funcionamento do Conselheiro Especialista. Só quero fazer tudo correctamente, não para carregar o servidor comercial com pedidos vazios, e para resolver o problema.
Obrigado pelas vossas respostas e pela vossa disponibilidade para ajudar.