Olá, Marcel, já vi essa função por aí... 😊 Teste o seguinte: inclua um parâmetro do tipo string e onde é feita a verificação do Magic Number, você substitui...
//+------------------------------------------------------------------+ //| Calcula o lucro / prejuízo do dia atual | //+------------------------------------------------------------------+ double CurrentDayResults(string comment) { // - - - if(StringFind(HistoryDealGetString(ticket, DEAL_COMMENT), comment) >= 0) { // - - - } // - - - return(result); } //+------------------------------------------------------------------+
Agora, como você vai trabalhar com comparação de strings, teste também a questão do desempenho, se vai ficar muito prejudicado...
Olá, Marcel, já vi essa função por aí... 😊 Teste o seguinte: inclua um parâmetro do tipo string e onde é feita a verificação do Magic Number, você substitui...
Agora, como você vai trabalhar com comparação de strings, teste também a questão do desempenho, se vai ficar muito prejudicado...
Você está considerando a questão de letras maiúsculas e minúsculas (case-sensitive)? Dê um Print() em HistoryDealGetString(ticket, DEAL_COMMENT) e na variável comment...
Conferiu o Print()?
Depurando código - Desenvolvimento de programas - Ajuda para o MetaEditor (metatrader5.com)
Depuração dos programas do MQL5 - Artigos MQL5
Como, na MetaTrader 5, desenvolver e depurar rapidamente sua estratégia de negociação - Artigos MQL5
Tem certeza que teve trade no dia? Talvez tu tenha que arrumar a variavel time_start passando o zero no iTime para um valor que pegue mais dias e, com isso, mais operações e tu consiga ver o que quer certinho.
Outro ponto, assumindo que o codigo colado aqui seja diferente do executado. Confere se não teria uma chamada por acidente a HistoryDealSelect que essa função "zera" a lista de trades que a HistorySelect cria.
Conferiu o Print()?
Depurando código - Desenvolvimento de programas - Ajuda para o MetaEditor (metatrader5.com)
Depuração dos programas do MQL5 - Artigos MQL5
Como, na MetaTrader 5, desenvolver e depurar rapidamente sua estratégia de negociação - Artigos MQL5
Sim, ele até printa as strings corretamente, mas na hora de fazer a somatória fica zerado. Vou postar o código novamente conforme testei.
double Results(datetime time_start) { double result = 0.0; ulong ticket; int cnt; string comment = "kamikaze-win"; datetime time_start2 = iTime(_Symbol, PERIOD_MN1, 0); if(HistorySelect(time_start2, TimeCurrent())) { for(cnt = HistoryDealsTotal() - 1; cnt >= 0; cnt--) { ticket = HistoryDealGetTicket(cnt); if(ticket != 0) { if((HistoryDealGetInteger(ticket, DEAL_TYPE) == DEAL_TYPE_BUY || HistoryDealGetInteger(ticket, DEAL_TYPE) == DEAL_TYPE_SELL)) { if(HistoryDealGetString(ticket,DEAL_COMMENT) == comment) { result += HistoryDealGetDouble(ticket, DEAL_PROFIT); } } } else { Print("Error getting deal ticket in history ..."); result = EMPTY_VALUE; break; } } } else { Print("Error getting operations history ..."); result = EMPTY_VALUE; } return(result); }
Tem certeza que teve trade no dia? Talvez tu tenha que arrumar a variavel time_start passando o zero no iTime para um valor que pegue mais dias e, com isso, mais operações e tu consiga ver o que quer certinho.
Outro ponto, assumindo que o codigo colado aqui seja diferente do executado. Confere se não teria uma chamada por acidente a HistoryDealSelect que essa função "zera" a lista de trades que a HistorySelect cria.
a variável time_start que eu estou usando está sendo configurada para mensal já para poder fazer a contabilidade do mês, mas continua zerada.
É verdade, testei aqui e realmente quando o histórico é filtrado pelo comentário informado, o DEAL_PROFIT é sempre zerado... Acho que a solução mais prática (e considero também a mais correta) é utilizar MNs exclusivos para cada estratégia... Antes de abrir posição, define o MN referente àquela estratégia:
//--- Set Magic Number
m_trade.SetExpertMagicNumber(EA_MAGIC1);
a variável time_start que eu estou usando está sendo configurada para mensal já para poder fazer a contabilidade do mês, mas continua zerada.
Da uma olhada nesse artigo abaixo pode lhe ajudar a ver a relação mais correta. O que acontece no fechamento por TP / SL so tem no comentario isso e se for chamado no robo PositionClose não tem comentário tambem.
- www.mql5.com
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Olá pessoal!
Estou utilizando o código abaixo para checar os resultados de meus EA, porém gostaria de saber se é possível filtrar esses resultados através do comentário que é inserido quando cada EA faz operação, pois do modo como está o código mostra o resultado geral da conta e não adiantaria colocar o mesmo código em cada EA separadamente já que todas mostrariam o mesmo resultado. Gostaria que fosse por comentário pois não utilizo magic number.
Desde já agradeço a atenção!