Erro 10022 com ordem pendente WINV16

 

Olá Pessoal.

Estou tentando elaborar um robô para fazer ordens pendentes de compra e venda. Abaixo segue o trecho do código para a compra. O erro que estou recebendo é de problema com a data da expiração. Já li algo parecido aqui no forum e fiz as devidas correções indicadas, mas não tive êxito, o mesmo erro continua.

Estou operando mercado futuro e o erro acontece no backtest com WINV16, WIN$N, WIN$D. 

Agradeço o apoio se possível.

         ZeroMemory(mrequest);
         mrequest.action = TRADE_ACTION_PENDING;                                  
         mrequest.price = NormalizeDouble(p_buy*_Point,_Digits);           
         mrequest.sl = NormalizeDouble(p_stop_buy*_Point,_Digits); 
         mrequest.tp = NormalizeDouble(p_buy + TKP*_Point,_Digits); 
         mrequest.symbol = _Symbol;                                
         if (Sell_opened == false) {
         mrequest.volume = Lot;                       
         }                     
         if (Sell_opened) {
         mrequest.volume = Lot*2;
         }
         
         mrequest.magic = EA_Magic;                                
         mrequest.type = ORDER_TYPE_BUY_STOP;                      
         mrequest.type_filling = ORDER_FILLING_FOK;                
         mrequest.type_time = ORDER_TIME_DAY;
         mrequest.deviation=100;                                   
     
         //--- send order
         OrderSend(mrequest,mresult);
         // get the result code
         if(mresult.retcode==10009 || mresult.retcode==10008) 
           {
            Alert("A Buy order has been successfully placed with Ticket#:",mresult.order,"!!");
           }
         else
           {
            Alert("The Buy order request could not be completed -error:",GetLastError());
            ResetLastError();           
            return;
           }
 
Paulo Fraga:

Olá Pessoal.

Estou tentando elaborar um robô para fazer ordens pendentes de compra e venda. Abaixo segue o trecho do código para a compra. O erro que estou recebendo é de problema com a data da expiração. Já li algo parecido aqui no forum e fiz as devidas correções indicadas, mas não tive êxito, o mesmo erro continua.

Estou operando mercado futuro e o erro acontece no backtest com WINV16, WIN$N, WIN$D. 

Agradeço o apoio se possível.

Olá Paulo Fraga,

Experimente trocar

mrequest.type_filling = ORDER_FILLING_FOK;

por

mrequest.type_filling = ORDER_FILLING_RETURN;

Abraços,
Malacarne 

 
Rodrigo Malacarne:

Olá Paulo Fraga,

Experimente trocar

por

Abraços,
Malacarne 

Olá Malacarne, muito obrigado pela ajuda.

Mudei a ordem para  ORDER_TYPE_BUY_STOP_LIMIT 

Após essa mudança funcionou normalmente, apenas tive que incluir o parâmetro mrequest.stoplimit igual ao price.

Obrigado pelo apoio.