Impossibilidade de rodar um BackTest c/ Pending Order() com Mercado Fechado

 

Bom Dia !

Por favor alguém está tendo ou teve problemas para rodar um backtest em modo de visualização com Pending Orders() com o mercado Brasileiro fechado ?

Meu EA funciona normalmente quando o mercado está em funcionamento mas com o mercado fechado, minha Pending Order() me da erro [ORDER] verification error: 4753 retcode: 10022 que tem relação com data de expiração de ordem.

Tentei colocar uma pending order manualmente e o resultado é "Mercado Cerrado" na boleta no MT5.

Isso pra mim é novidade. Se é assim mesmo, como contornar essa situação ? 

Segue código.

Muito Obrigado 

mrequest.action=TRADE_ACTION_PENDING;
mrequest.symbol=_Symbol;
mrequest.volume=glContratos;
mrequest.price=glValorSuporte;
mrequest.sl=glValorSuporte+StopLoss;
mrequest.tp=glValorSuporte-TakeProfit;
mrequest.type=ORDER_TYPE_SELL_STOP;
mrequest.type_filling=ORDER_FILLING_FOK;
mrequest.type_time=ORDER_TIME_GTC;
mrequest.comment="SELL STOP";

 


 
YouTrade:

Bom Dia !

Por favor alguém está tendo ou teve problemas para rodar um backtest em modo de visualização com Pending Orders() com o mercado Brasileiro fechado ?

Olá Coutinho,

Realmente não tem como você enviar uma ordem pra corretora se o mercado está fechado! O servidor da corretora irá rejeitar a ordem enviada, seja ela feita manualmente ou através de um robô, acredito eu, rodando dentro de OnTimer em modo de testes.

Com relação aos backtests, mesmo em modo visual, acredito que não haveria nenhum problema com relação ao envio de ordens... pelo menos pra mim funciona tudo normalmente... 

Abraços,
Malacarne 

 

Olá Marcelo,

Estou com o mesmo problema aqui. Você conseguiu uma solução?

 Um abraço,

 
Constantinvs:

Olá Marcelo,

Estou com o mesmo problema aqui. Você conseguiu uma solução?

 Um abraço,

Olá Constantinvs,

Se o problema é enviar ordens com o mercado fechado, infelizmente isso (ainda) não é possível no MetaTrader.

Abraços,
Malacarne 

 
Constantinvs:

Olá Marcelo,

Estou com o mesmo problema aqui. Você conseguiu uma solução?

 Um abraço,

Eu também tive problemas de lentidão e erros no testador com ordens pendentes.

Então minha lógica só envia a ordem quando "está no preço" e no método que processa a ordem coloquei algo do tipo:

 if ((bool)MQLInfoInteger(MQL_TESTER))

   {
      Action = TRADE_ACTION_DEAL;
      
      if (Type == ORDER_TYPE_BUY_LIMIT)
         Type = ORDER_TYPE_BUY;
      
      if (Type == ORDER_TYPE_SELL_LIMIT)
         Type = ORDER_TYPE_SELL;   
   }

   MqlTradeRequest request = {0};
   MqlTradeResult  result  = {0};

   request.action          = Action; 
   request.magic           = _EA_Magic;
   request.comment         = "Turbo";
   request.symbol          = _Symbol;
   request.volume          = Vol;
   request.price           = NormalizeDouble(Price,_Digits);
   request.sl              = NormalizeDouble(SL,_Digits);
   request.tp              = NormalizeDouble(TP,_Digits);
   request.type            = Type;
   request.type_filling    = ORDER_FILLING_FOK;
   request.type_time       = ORDER_TIME_DAY;

 

 No caso de  ORDER_TYPE_SELL_STOP vai dar mais trabalho para simular o STOP na mão

 
mrtasso:

Eu também tive problemas de lentidão e erros no testador com ordens pendentes.

Então minha lógica só envia a ordem quando "está no preço" e no método que processa a ordem coloquei algo do tipo:

 No caso de  ORDER_TYPE_SELL_STOP vai dar mais trabalho para simular o STOP na mão

Olá mrtasso,

Por favor utilize o botão "SRC" quando for postar partes de código.

Estou alterando seus posts para adequar ao padrão do fórum. 

Abraços,
Malacarne 

Razão: