wemersonrv

MQL4 - Fechamento de Ordem no Examinador de estratégia

Jul 31st, 2015
338
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.21 KB | None | 0 0
  1. int OrdensOB[]; // Armazenar as ordens abertas para conferencia
  2. int MagicNumber = 123456;
  3.  
  4. int OnInit(){
  5.  
  6.     int x;
  7.     EventSetTimer(1); // Timer para conferência das ordens a cada segundo
  8.  
  9.     // Usar Ask/Bid na ordem em OB não importa, e aqui foi só pra demonstrar
  10.     // Abrindo uma ordem para testar
  11.     int ordem = OrderSend(Symbol(), OP_BUY, 1, Ask, 0, 0, 0, "BO exp:60", MagicNumber);
  12.     if(ordem > 0){
  13.         x=ArraySize(OrdensOB);
  14.         ArrayResize(OrdensOB, x + 1 );
  15.         OrdensOB[x] = ordem;
  16.     }
  17.     // ....
  18. }
  19.  
  20. void OnTimer(){
  21.  
  22.     int i, n;
  23.  
  24.     for(i=0; i<ArraySize(OrdensOB[i]); i++){
  25.         for(n=0; n<OrdersHistoryTotal(); n++){
  26.             // Só vai forçar o fechamento da ordem se estiver em modo teste, usando a função
  27.             // IsTesting()
  28.             if( OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && IsTesting() ){
  29.                 Print("Ordem aberta encontrada : ", OrderTicket());
  30.                 if( TimeCurrent() >= OrderOpenTime() + TempoExpiracao ){
  31.                     Print("Ordem chegou ao tempo, hora de forçar fechamento no backtest");
  32.                     if( OrderClose(OrderTicket(), OrderLots(), OrderOpenPrice(), 0) ){
  33.                         Print("Ordem fechada... agora falta removê-la do array");
  34.                     }
  35.                 }else{
  36.                     Print("Ordem ainda não chegou ao tempo");
  37.                 }
  38.             }
  39.         }
  40.     }
  41. }
Advertisement
Add Comment
Please, Sign In to add comment