wemersonrv

Limitar numero de ordens por ativo no MQL4

Feb 26th, 2016
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.29 KB | None | 0 0
  1. // Parâmetro  para quantidade de ordens abertas por mar
  2. // extern ou input têm a mesma função... qualquer um dos 2 será aceito
  3. // input int MaxOrders = 1;
  4. // extern int MaxOrders = 1;
  5.  
  6. input int MaxOrders = 1;    // Maximo de ordens abertas por par
  7. input int MagicNumber = 111111; // Magic Number, filtro para ordem única por janela/ativo
  8.  
  9. void OnTick(){
  10.  
  11.     // Seu código blahblahblah
  12.     // Deu sinal pra dar entrada, mas não vem ao caso pois vai depender da sua estratégia
  13.     // Vai abrir uma nova ordem apenas se tiver menos ordens do que o máximo permitido.
  14.     if( CountOrders() < MaxOrders ){
  15.  
  16.         if( SEU_SINAL_PARA_COMPRA ){
  17.             // Código para compra
  18.         }
  19.  
  20.         if( SEU_SINAL_PARA_VENDA ){
  21.             // Código para venda
  22.         }
  23.  
  24.     }
  25. }
  26.  
  27. bool CountOrders(){
  28.  
  29.     // Contador de ordens abertas
  30.     // Serão contabilizadas apenas ordens do par que o EA está adicionado descartando as demais
  31.     int c = 0;
  32.  
  33.     // Percorre o Histórico de ordens abertas
  34.     for( int i=OrdersTotal()-1; i>=0; i--){
  35.         // Seleciona ordem por ordem do Histórico
  36.         if( OrderSelect(i, SELECT_BY_POS ) ){
  37.             // Verifica se a ordem é do par e com mesmo magic number
  38.             // E incrementa o contador se for o caso
  39.             if( OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber ) {
  40.                 c++;
  41.             }
  42.         }
  43.     }
  44.  
  45.     return c;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment