Se você é trader, sabe que gerenciar suas operações é fundamental para o sucesso. Uma das ferramentas que podem ajudá-lo nesse gerenciamento são os comandos Stop Loss e Take Profit. Vamos entender como eles funcionam no MetaTrader 5.
Quando um trade é fechado por Stop Loss, o volume é duplicado; já se for fechado por Take Profit, o volume mínimo é utilizado. O OnTradeTransaction é o que usamos para determinar se uma operação foi realizada após a ativação do Stop Loss ou Take Profit.
Na versão 1625, foi adicionada uma excelente enumeração chamada ENUM_DEAL_REASON:
| ENUM_DEAL_REASON | Descrição |
|---|---|
| ... | ... |
| DEAL_REASON_SL | A operação foi executada em decorrência da ativação do Stop Loss |
| DEAL_REASON_TP | A operação foi executada em decorrência da ativação do Take Profit |
| ... | ... |
Essas informações podem ser verificadas no OnTradeTransaction.
Em outras palavras, essa é uma maneira simples e confiável de determinar se uma operação resultou de um Take Profit ou Stop Loss.
Atualmente, na versão 1626, esse Expert Advisor só pode ser verificado em um teste ao vivo - seja lançando-o em um gráfico ou em modo de depuração com dados reais (F5 no MetaEditor). Eu utilizei a seguinte manobra para contornar:
No OnTradeTransaction, determinamos se foi o Take Profit ou Stop Loss que acionou:
if(deal_symbol==m_symbol.Name() && deal_magic==m_magic) if(deal_entry==DEAL_ENTRY_OUT) { if(deal_reason==DEAL_REASON_SL) ExtLot*=2.0; else if(deal_reason==DEAL_REASON_TP) ExtLot=m_symbol.LotsMin(); }
Comentário 0