Advertisement
wemersonrv

Exemplo de paralização em MQL4 ao atingir ´metas

Nov 14th, 2016
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.39 KB | None | 0 0
  1. #property copyright "Copyright 2016, Wemerson Guimaraes"
  2. #property link      "https://www.mql5.com/pt/signals/author/wemersonrv"
  3. #property version   "1.00"
  4. #property strict
  5.  
  6. extern double LucroDiario=10; // Parar quando lucro diário der 10%
  7. extern double PerdaDiaria=20; // Parar quando prejuízo diário der 20%
  8.  
  9. // *** Variáveis auxiliares ***
  10.  
  11. // SaldoInicial - Armazenará o saldo no início da operação
  12. // A cada mudança de dia, esse saldo será atualizado
  13. // e a checagem será reiniciada
  14. double SaldoInicial;
  15.  
  16. // UltimaVerificacao - Armazenará a data/hora da última verificação
  17. // Essa variável será utilizada para checar quando houver mudança de dia,
  18. // E por consequencia a reinicialização dos dados de saldo armazenados
  19. int UltimaVerificacao;
  20.  
  21. // ParalizadoHoje - Quando um dos limites atingir, essa variável será ativada
  22. // e a cada Tick será verificado se já houve uma paralização....
  23. // Também é reinicializada quando muda o dia..
  24. bool ParalizadoHoje;
  25.  
  26.  
  27. int OnInit()
  28. {
  29.    SaldoInicial=AccountBalance();
  30.    UltimaVerificacao = TimeDayOfWeek(TimeCurrent());
  31.    ParalizadoHoje = false;
  32.  
  33.    return(INIT_SUCCEEDED);
  34.  
  35. }
  36.  
  37. void OnDeinit(const int reason)
  38. {
  39. }
  40.  
  41. void OnTick()
  42. {
  43.    
  44.    double SaldoAtual = AccountBalance();
  45.    int VerificacaoAtual = TimeDayOfWeek(TimeCurrent());
  46.    
  47.    // Reseta a verificação diariamente
  48.    // Começou um novo dia, reinicia o saldo para ser verificado novamente.
  49.    // Reseta também a verificação se já foi paralizado hoje
  50.    if( UltimaVerificacao != VerificacaoAtual ){
  51.       SaldoInicial=SaldoAtual;
  52.       UltimaVerificacao = VerificacaoAtual;
  53.       ParalizadoHoje=false;
  54.    }
  55.    
  56.    // Já houve uma paralização hoje... não continua
  57.    if( ParalizadoHoje==true )
  58.       return ;
  59.    
  60.    // Verifica lucro
  61.    // Se atingiu... paraliza e marca ParalizadoHoje=true para checagem futura
  62.    if( SaldoAtual >= SaldoInicial+SaldoInicial*LucroDiario/100 ){
  63.       Alert("Lucro atingiu/ultrapassou ", LucroDiario, "%");
  64.       ParalizadoHoje=true;
  65.       return ;
  66.    }
  67.    
  68.    // Verifica PERDA
  69.    // Se atingiu... paraliza e marca ParalizadoHoje=true para checagem futura
  70.    if( SaldoAtual <= SaldoInicial-SaldoInicial*PerdaDiaria/100 ){
  71.       Alert("Perda atingiu/ultrapassou ", PerdaDiaria, "%");
  72.       ParalizadoHoje=true;
  73.       return ;
  74.    }
  75.    
  76.    
  77.    // Continue com a lógica do seu ea  
  78.    
  79.    
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement