Pessoal, me da uma força quero excluir apenas a ordem pendente de um unico robo, mas nao to conseguindo me ajudem por favor
Cara não é assim que você conseguirá resolver o seu problema ... usando este código que você mostrou, você irá remover todas as ordens, ( não confunda ordem com posição - mas isto não vem ao caso ), para resolver isto você tem que dizer na ORDEM qual o ROBÔ que criou a ordem, para fazer isto use o campo MAGIC na estrutura MqlTradeRequest, antes de enviar a ordem para o servidor de negociação via OrderSend, de forma que cada ROBO terá um numero magico, único e exclusivo, depois para remover apenas e somente as ordens que este robô postou, bastará você testar o numero mágico, que pode ser capturada facilmente já que ela irá fazer parte da ordem em si, desta forma quando os valores forem iguais, o numero mágico da ordem e o do robô, você deleta a ordem, caso contrário você mantem a ordem no lugar .... mas não é da forma como você esta tentado fazer, desta forma NUNCA irá funcionar .... Procure na documentação ( MqlTradeRequest e OrderSend ) e use o campo MAGIC na estrutura MqlTradeRequest e problema resolvido .. 😁👍
Cara não é assim que você conseguirá resolver o seu problema ... usando este código que você mostrou, você irá remover todas as ordens, ( não confunda ordem com posição - mas isto não vem ao caso ), para resolver isto você tem que dizer na ORDEM qual o ROBÔ que criou a ordem, para fazer isto use o campo MAGIC na estrutura MqlTradeRequest, antes de enviar a ordem para o servidor de negociação via OrderSend, de forma que cada ROBO terá um numero magico, único e exclusivo, depois para remover apenas e somente as ordens que este robô postou, bastará você testar o numero mágico, que pode ser capturada facilmente já que ela irá fazer parte da ordem em si, desta forma quando os valores forem iguais, o numero mágico da ordem e o do robô, você deleta a ordem, caso contrário você mantem a ordem no lugar .... mas não é da forma como você esta tentado fazer, desta forma NUNCA irá funcionar .... Procure na documentação ( MqlTradeRequest e OrderSend ) e use o campo MAGIC na estrutura MqlTradeRequest e problema resolvido .. 😁👍
Daniel,
Antes de mais nada obrigado pela resposta.
O problema é exatamente este, ele esta deletando todas as ordens, gostaria que só deletasse a ordem pendente do respectivo robo.
Não gostaria de usar o Magic Number pq estou usando o mesmo robo no templeate default para varios simbolos, teria outra maneira?
Tem algum exemplo que possa me basear mesmo que seja com magic number?
Daniel,
Antes de mais nada obrigado pela resposta.
O problema é exatamente este, ele esta deletando todas as ordens, gostaria que só deletasse a ordem pendente do respectivo robo.
Não gostaria de usar o Magic Number pq estou usando o mesmo robo no templeate default para varios simbolos, teria outra maneira?
Tem algum exemplo que possa me basear mesmo que seja com magic number?
normalmente a gente separa a ordem da seguinte forma:
- Magic number depois symbol e se quiser buy or sell...como vc não quer utilizar o magic number então é só selecionar todas as ordens que existem naquele simbolo e deletar
ou pega todas daquele symbol e depois separa so as buy e deleta
mas se existem 5 ordens no mesmo symbol e vc quer deletar somente um,então vc vai ter que explicar pra gente pq quer deletar aquela e nao a outra assim vamos conseguir te ajudar melhor
Edu,
Obrigado pela resposta, eu vou usar somente uma ordem para cada symbol, você tem algum exemplo de codigo que possa usar neste caso.
Abraço.
A resposta é mais simples do que parece: Guarde o ticket da ordem em algum lugar e delete só a necessária, pelo ticket, ou faça algo assim (olhe o codigo) o problema é que vai apagar TODAS as ordens pendentes EURUSD
DeleteOrder("EURUSD"); //+------------------------------------------------------------------+ //| Delete limit/stop order | //+------------------------------------------------------------------+ void DeleteOrder(string simbolo) { for(int i=OrdersTotal()-1; i>=0; i--) // returns the number of current orders if(m_order.SelectByIndex(i)) // selects the pending order by index for further access to its properties if(m_order.Symbol()==simbolo) if(!m_trade.OrderDelete(m_order.Ticket())) Print(__FILE__," ",__FUNCTION__,", ERROR: ","CTrade.OrderDelete ",m_order.Ticket()); }
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Pessoal, me da uma força quero excluir apenas a ordem pendente de um unico robo, mas nao to conseguindo me ajudem por favor