Ordem não enviada

 

Caros, boa noite.

 

Em determinada parte de um EA coloquei o seguinte código.

 

   MqlTradeRequest mrequest;  // To be used for sending our trade requests

   MqlTradeResult mresult;    // To be used to get our trade results



//ENVIA A ORDEM

         ZeroMemory(mrequest);

         mrequest.action = TRADE_ACTION_PENDING;

         mrequest.price = 60000;

         mrequest.sl = 30000;

         mrequest.tp = 65000;

         mrequest.stoplimit = 0;

         mrequest.symbol = _Symbol;

         mrequest.volume = QTDE_CONTRATOS;

         mrequest.magic = EA_Magic;

         mrequest.type = ORDER_TYPE_BUY_STOP; //TESTAR AQUI ALTERANDO O TIPO DA ORDEM

         mrequest.type_filling = ORDER_FILLING_FOK;

         mrequest.expiration = ORDER_TIME_EXPIRATION;

         mrequest.type_time = ORDER_TIME_DAY;

         mrequest.deviation=100;

         //--- send order

         ZeroMemory(mresult);

         OrderSend(mrequest,mresult);

         // get the result code

         Alert(mresult.retcode);

         Alert(SymbolInfoInteger(_Symbol,SYMBOL_TRADE_MODE)); 

 

 

 Respectivamente os retornos são 10022 e 4.

Estou testando esse EA no WINM15 na conta demo da XP.

 

Se eu retirar o código type_time retorna com erro de invalid expiration nos alertas,

"2015.06.14 23:57:23.298 2015.04.14 09:01:00   failed buy stop 1.00 WINM15 at 60000 sl: 30000 tp: 65000 [Invalid expiration]"


mas com o código type_time setado não aparece nos alertas o evento de envio da ordem, somente os alertas com os códigos de retorno 10022 e 4.

As telas estão no anexo.

Alguém sabe o motivo e como corrigir? 

 

Obrigado 

Arquivos anexados:
 
rflsjppr:

Caros, boa noite.

Alguém sabe o motivo e como corrigir?  

Obrigado 

Olá rflsjppr,

Experimente trocar a data da expiração para

mrequest.expiration = 0;

Além disso, acredito que ao tentar enviar sua ordem a mesma terá outro erro, uma vez que seu stop loss (30000 pontos) estaria certamente fora das bandas de negociação aceitas pela BM&FBovespa.

Abraços,
Malacarne 

 
Olá boa tarde,

Vi no fórum várias dúvidas sobre ordens pendentes tipo buy_stop com mini indice e dolar. Tentei as solucoes apresentadas e não obtive sucesso. Se testo a ordem com ativos da bovespa funciona bem. Mas com os mini  sempre dá erro 10022, mesmo usando o type_time para DAY. Se mudo a ordem pendente para buy_stop_limit funciona sem problemas. Alguma dica a mais que eu possa tentar?

Obrigado.
Razão: