Problema com o Stop da OrderSend

 

Pessoal

 Estou passando por um problema na hora de enviar as Ordens, eu abro uma posição e no proximo candle enviou outra ordem e essa segunda ordem altera o o sl e o tp da anterior e ela fecha a posição das duas juntos.

 No caso abaixo, as duas ordens são enviadas para serem compradas a um determinado valor, as duas possuem stop e quando são executadas as compras, o stop que enviei por último é o stop que finaliza a operação. Isto é, cada ordem é tem volume de 5000 e cada uma com o seu stop diferente, mas a operação termina com a venda de 10.000 com o stop da segunda ordem enviada.

Já tentei de tudo, alguém pode me dar uma ajuda.

Segue o código abaixo 

MqlTradeRequest request;      
         MqlTradeResult result;      
         ZeroMemory(request);      
         ZeroMemory(result);      
         request.symbol       = Symbol();     
         request.volume       = 5000;    
         request.stoplimit    = 0;      
         request.sl           = NormalizeDouble(rompMax-0.30,_Digits);
         request.tp           = NormalizeDouble(rompMax+0.15,_Digits);      
         request.magic = 1 ;      
         request.type_filling = ORDER_FILLING_RETURN;  
         request.action=TRADE_ACTION_PENDING; 
         request.type=ORDER_TYPE_BUY_STOP;
         request.price= NormalizeDouble(rompMax+0.01,_Digits);        
         request.type_time=ORDER_TIME_DAY;
         MqlTradeRequest request2;     
         MqlTradeResult result2;     
         ZeroMemory(request2);     
         ZeroMemory(result2);     
         request2.symbol       = Symbol();
         request2.volume       = 5000;
         request2.stoplimit    = 0;
         request2.sl           = NormalizeDouble(rompMax-0.15,_Digits); ;
         request2.tp           = 0;
         request2.magic = 2 ;
         request2.type_filling = ORDER_FILLING_RETURN;                 
         request2.action=TRADE_ACTION_PENDING; 
         request2.type=ORDER_TYPE_BUY_STOP;      
         request2.price=NormalizeDouble(rompMax+0.01,_Digits);       
         request2.type_time=ORDER_TIME_DAY;
      if( OrderSend(request,result) && OrderSend(request2,result2))
      {
         ordemCompra=true;
      } 
 
frbaratieri:

Pessoal

 Estou passando por um problema na hora de enviar as Ordens, eu abro uma posição e no proximo candle enviou outra ordem e essa segunda ordem altera o o sl e o tp da anterior e ela fecha a posição das duas juntos.

 No caso abaixo, as duas ordens são enviadas para serem compradas a um determinado valor, as duas possuem stop e quando são executadas as compras, o stop que enviei por último é o stop que finaliza a operação. Isto é, cada ordem é tem volume de 5000 e cada uma com o seu stop diferente, mas a operação termina com a venda de 10.000 com o stop da segunda ordem enviada.

Já tentei de tudo, alguém pode me dar uma ajuda.

Segue o código abaixo 

Olá frbaratieri,

Pelo menos para mim, não está muito claro o que você precisa. Se você está tendo algum problema, qual seria? Está recebendo algum código de retorno específico após enviar as ordens?

Por favor explique um pouco melhor o problema para que possamos tentar ajudá-lo de alguma forma.

Abraços,
Malacarne 

 

 Oi,

Eu pesquisei e verifiquei que não é possível termos duas ordens pendentes abertas com stop no MQL5, isso é, teria que usar algo do tipo OV(Ordem Virtual). 

Eu envio duas ordens ao mesmo tempo e as duas são envidas, cada uma com um stop diferente. Quando elas são executadas eu deveria abrir uma posição de 10.000 e 5.000 serem stopados 15 centavos abaixo e outros 5.000 a 30 centavos abaixo. Só que ele encerra a posição toda nos 15 centavos abaixo. Ele não diferencia o stop das duas ordens.

Fui mias claro agora? 

 
frbaratieri:

 Oi,

Eu pesquisei e verifiquei que não é possível termos duas ordens pendentes abertas com stop no MQL5, isso é, teria que usar algo do tipo OV(Ordem Virtual). 

Eu envio duas ordens ao mesmo tempo e as duas são envidas, cada uma com um stop diferente. Quando elas são executadas eu deveria abrir uma posição de 10.000 e 5.000 serem stopados 15 centavos abaixo e outros 5.000 a 30 centavos abaixo. Só que ele encerra a posição toda nos 15 centavos abaixo. Ele não diferencia o stop das duas ordens.

Fui mias claro agora? 

Olá frbaratieri,

Acredito que você está fazendo uma série de confusões sobre a arquitetura do MetaTrader 5.

No MT5 não é possível abrir duas POSIÇÕES no mesmo ativo, uma vez que duas ORDENS diferentes, quando executadas no mesmo ativo, irão acaber tendo seu preço médio automaticamente calculado e atualizado pela ferramenta.

Sugiro você dar uma lida no artigo 211 para esclarecer melhor como funciona a arquitetura do MT5.

Abraços,
Malacarne

Razão: