Problema com Ordem BUY STOP e SELL STOP no MINI INDICE

 

Fala Pessoal.


Estou com problemas no meu EA para mandar ordens do tipo BUY STOP e SELL STOP, está retornando o código 10022 (INVALID EXPIRATION)

A configuração de expiração delas esta para request.type_time=ORDER_TIME_DAY; Conforme especificação do Ativo (WIN).

Ao enviar ordens do tipo BUY LIMIT e SELL LIMIT não tenho problemas, estão configuradas na mesma forma.

OUTRO DETALHE IMPORTANTE: A função OrderCheck Retorna como válido o resquest mas a função OrderSend retorna o 10022.

Abaixo o código do request.


int VendaStop(ulong slippage, double l,double SL,double TP,double price,ulong magic)

           {

            MqlTradeRequest request;

            MqlTradeResult result;

            MqlTradeCheckResult check;

            ZeroMemory(request);

            ZeroMemory(result);

            ZeroMemory(check); 


            int digit=int(SymbolInfoInteger(_Symbol,SYMBOL_DIGITS));

            double point=SymbolInfoDouble(_Symbol,SYMBOL_POINT);

            double Ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);

            double Bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);

            long ds=SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL);

            double minl=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);

            double po=NormalizePrice(price);

         

            double lot=l;

            lot=NormalizeDouble(lot,2);

            if(lot<minl) lot=minl;         


            request.type   = ORDER_TYPE_SELL_STOP ;

            request.price  = po;

            request.action = TRADE_ACTION_PENDING;

            request.symbol = _Symbol;

            request.volume = lot;

            request.magic=magic;

            request.type_filling=ORDER_FILLING_FOK;

            request.deviation=slippage;

            request.type_time=ORDER_TIME_DAY;


            if(!DailyResultOutOfLimit()){

            if(ActualyOnWorkPeriod())

            {

               if(!OrderCheck(request,check))

                 {

                  Print(__FUNCTION__,"(): Error inputs for trade order");

                  Print(__FUNCTION__,"(): OrderCheck(): ",CodigoErroResultado(check.retcode));

                  return(-1);

                 }

               if(!OrderSend(request,result) || result.retcode!=TRADE_RETCODE_DONE)

                 {

                  Print(__FUNCTION__,"(): Unable to make the transaction");

                  Print(__FUNCTION__,"(): OrderSend(): ",CodigoErroResultado(result.retcode));

                  return(-1);

                 }

               else

               {

                  if(result.retcode!=TRADE_RETCODE_DONE)

                  {

                     Print(__FUNCTION__,"(): Unable to make the transaction");

                     Print(__FUNCTION__,"(): OrderSend(): ",CodigoErroResultado(result.retcode));

                     return (-1);

                  }

                  

               }  

            }

            else

            Print("Venda não enviada por estar fora do horário de tabalho do robo");

            }

            return(0);

           }

Razão: